[英]Borrowing javascript code from one page to inject in another
好吧,讓我先說一點我沒有編程經驗,因此,如果我的解釋掩蓋了一些嚴重的無知,我深表歉意。 我一直想學習一些技巧,但我永遠找不到任何教程。
這是交易:
有一個網站可為您提供各種科學問題並為輸入評分。 對於每個問題,都有一個名為“其他實踐版本”的按鈕,該按鈕會產生一個彈出框,其中包含新的類似版本的問題。 這個新版本還具有一個名為“顯示答案”的按鈕,該按鈕顯然顯示了解決方案。
我使用FireBug查找“顯示答案”按鈕的代碼:
<input type="submit" onclick="key('0','1')" style="border: 1px solid rgb(51, 102, 153); margin-left: 1%;" value="Show Answer" name="Key">
我查看了FireBug的“ DOM”標簽,以查看關鍵功能的內部代碼:
function key(pos, showAnsFlag) {
setYpos();
if (showAnsFlag == 1) {
document.forms[0].showAnswer.value = 1;
document.forms[0].hideAnswer.value = 0;
} else {
document.forms[0].hideAnswer.value = 1;
document.forms[0].showAnswer.value = 0;
}
document.forms[0].pos.value = "";
document.forms[0].keypos.value = pos;
document.forms[0].randpos.value = "";
document.forms[0].solpos.value = "";
document.forms[0].subaction.value = "key";
}
單擊“顯示解決方案”后,我還查看了Firebug的“網絡”選項卡以發現POST參數:
Key Show Answer
RC_821796_0_0_821813 mc //[These are the names of the problems]
RC_821796_0_0_821813 1
RC_821796_0_1_821813 mc
RC_821796_0_1_821813 0
UserPass //[ERASED, because I'm not sure if it can be used maliciously]
feedback0 rmh
hideAnswer 0
hideSolution
keypos 0
pos
randpos
showAnswer 1
showSolution
solpos
struct CuDMAcAACEAuEuEaANErASAJANBPBjDABkCiAaAxAEEfAjCgAvAjDjDQCTDTCbBjAUBtDXDXBqEXAFAjEPAVEMESvVBVzUCcEwALAMCSBQDewWDTAPBUEBCeArESCmDWAfErAXETBFEoBDCEDxBODlCbAeEnCNEKDmDgBHAJESEKATDmAoEFAdCUALCiCLBXCcDFATAcDRDoCwERuUBTDKEkBKESCXATAbDRAwBYEFAeDREWDBCdCeElBJCPCSDtAeABBxDwDDByEPAwEVAtAoDADWCkCCBBAwDNCyEECEAlCeACDCAPCmAsDM
subaction key
ypos 196
好的,當我“練習另一個版本”時,頁面上的全部內容。 我的想法是,當我在常規頁面上而不是“ Show Another Version”頁面上時,我想調用“ key”函數(或至少一個功能完全相同的函數)。 問題是,當我檢查普通頁面的DOM時,它甚至沒有可訪問的鍵功能。
有什么方法可以在頁面中注入JavaScript來強制調用key函數嗎? 最理想的情況是,有一個書簽書簽循環遍歷所有問題,調用鍵函數並顯示答案。
由於我缺乏知識,所以我不知道該怎么做。 我嘗試了類似這樣的簡單操作(在地址欄中)
javascript:document.forms[0].showAnswer.value = 1;
而且我知道它做了些什么,因為當我打字時
javascript:alert(document.forms[0].showAnswer.value);
它提示“ 1”,但是我不確定它到底在做什么,或者我還必須做什么。
編輯
讓我嘗試澄清一下-我不擁有該網站,因此我正在嘗試做一些客戶端JavaScript工作來操縱該網站以完成我想要的操作(請注意,我什至不確定這是否可行)。
在該站點的一部分上,在名為“ practice.tpl”的頁面中,它允許我按下一個名為“顯示答案”的按鈕(該按鈕調用上述鍵功能並顯示解決方案)。
但是,在另一頁上,按鈕和功能不存在。 所以我想知道我是否可以借用練習.tpl頁面中的關鍵功能,然后將其插入另一個頁面。
編輯2
這是兩個頁面的源代碼:
主頁(我要在其中插入代碼的頁面) http://pastebin.com/r7KVMU1N
“其他問題”頁面(關鍵功能所在的頁面) http://pastebin.com/D8Nc6fbk
經過進一步檢查,這可能是不可能的,鍵值似乎已鎖定到網站到處傳遞的那些struct
參數中。
不過,您可以嘗試此可行性測試。 Firefox和Firebug是必需的。
登錄到作業部分。
右鍵單擊灰色問題邊框左側的空白。
應該選擇一個問題div,例如<div id="question3" class="waQBox container">
。 如果不是,請在Firebug的HTML標簽中選擇最接近的一個。
按下Edit
按鈕。
將所有代碼復制並粘貼到具有搜索功能的任何文本編輯器中。
搜索“將Submit New Answers To
”。
找到的行應包含以下文本: return submit_this('{BIG HONKING STRING}',true
。
復制BIG HONKING STRING的值,您稍后將需要它。
搜索UserPass=
。 在=
和'
之間復制值。
回到螢火蟲; 滾動到編輯框的底部; 並粘貼在下面的代碼中,位於倒數第三個</div>
上方。
在新粘貼的塊中,將struct
輸入的值替換為步驟7中的BIG HONKING STRING。
在新粘貼的塊中,將UserPass
輸入的值替換為步驟8中的字符串。
按“ Edit
按鈕(編輯完成)。
現在,在頁面上,按下新的“ Show Answer
按鈕。
怎么了? 網站的響應方式決定了是否可以使用GM腳本。
。
<form enctype="x-www-form-urlencoded" action="/v4cgi/student/practice.tpl" name="practice" id="practice" method="post">
<!-- ***** Javascript REQUIRED to copy current UserPass value.
-->
<input type="hidden" value="ceeb69f9b47e5660110d5ab7e27ba168" id="UserPass" name="UserPass">
<input id="struct" name="struct" type="hidden" value="AYCJDoEaCWEbEVErBsBKAbBeDJEEDUBYDEDcDrEhCCBXAkEgBoExDGCDCxBODKBAAWAhAtDIAgCOAQAHACClAnCiCHCMBbEECLBICgBVALCHEhzUCxAxCrzZBPEHEiBSASDfCRCKCFBxDKCCBKCNvVCWBSBbAIAlDVCnBEEkAkBlBuCAEKCLDMDpAHBqCsCcEdAlBiDfCjErAUBTDmEoDqAcEVCfAyBPEJAeABBSEoEpDdEEwWDjCiCNAaESABCdEkDABKDoEuCvAOCRCLCFDfDeClBmAdAuAhELDeEoEnCNBoCOBgAFBfAr">
<input type="hidden" value="key" id="subaction" name="subaction">
<input type="hidden" value="" id="pos" name="pos">
<input type="hidden" value="0" id="keypos" name="keypos">
<input type="hidden" value="" id="randpos" name="randpos">
<input type="hidden" value="" id="solpos" name="solpos">
<!-- ***** Javascript desired. "7" to window.pageYOffset
-->
<input type="hidden" value="7" id="ypos" name="ypos">
<input type="hidden" value="1" id="showAnswer" name="showAnswer">
<input type="hidden" value="0" id="hideAnswer" name="hideAnswer">
<input type="hidden" value="" id="showSolution" name="showSolution">
<input type="hidden" value="" id="hideSolution" name="hideSolution">
<input type="hidden" value="r" id="feedback0" name="feedback0">
<!-- ***** If this value is required, then the whole process may be very difficult.
But it's probably not.
-->
<input type="text" id="RN_821703_0_0_821745" name="RN_821703_0_0_821745" value="">
<input type="submit" value="Show Answer" name="Key">
</form>
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.