簡體   English   中英

從一個頁面借用JavaScript代碼以注入另一個頁面

[英]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是必需的。

  1. 登錄到作業部分。

  2. 右鍵單擊灰色問題邊框左側的空白。

  3. 應該選擇一個問題div,例如<div id="question3" class="waQBox container"> 如果不是,請在Firebug的HTML標簽中選擇最接近的一個。

  4. 按下Edit按鈕。

  5. 將所有代碼復制並粘貼到具有搜索功能的任何文本編輯器中。

  6. 搜索“將Submit New Answers To ”。

  7. 找到的行應包含以下文本: return submit_this('{BIG HONKING STRING}',true
    復制BIG HONKING STRING的值,您稍后將需要它。

  8. 搜索UserPass= ='之間復制值。

  9. 回到螢火蟲; 滾動到編輯框的底部; 並粘貼在下面的代碼中,位於倒數第三個</div>上方。

  10. 在新粘貼的塊中,將struct輸入的值替換為步驟7中的BIG HONKING STRING。

  11. 在新粘貼的塊中,將UserPass輸入的值替換為步驟8中的字符串。

  12. 按“ Edit按鈕(編輯完成)。

  13. 現在,在頁面上,按下新的“ Show Answer按鈕。

  14. 怎么了? 網站的響應方式決定了是否可以使用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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM