2016-09-06 57 views
2

Firefox做了得到請求到服務器。它得到了HTML頁面作爲迴應。 此HTML響應頁面中有一部分需要修改。 有的jQuery代碼在HTML部分:自動修改服務器響應

<Head> 
    .. 
     <script type="text/javascript"> 

      jQuery(document).ready(function(){ 
       init(var1, var2, var3, var4); 
       }); 

     </script> 

    .. 
    </Head> 

目標是:

  1. 攔截原始響應。
  2. 找到這個javascript部分在的迴應
  3. 編輯變量1和3保留,因爲它們是變量2和4
  4. 發送響應Firefox

1點我做提琴手是通過代理服務器設置連接到火狐。目前我不知道該怎麼辦分2,3和4自動。 我最近纔開始使用Fiddler,文檔中沒有示例說明如何操作。

是否有更簡單的方法發送/修改基於服務器的請求請求/響應/響應的Windows自動使用其他程序?

謝謝你的幫助!

回答

2

您可以重寫與提琴手CustomRules腳本動態服務器響應:

  • 打開FiddlerScript標籤:Fiddler window with FiddlerScript tab
  • (或者打開%userprofile%\Documents\Fiddler2\Scripts\CustomRules.js文件編輯器,找到static function OnBeforeResponse(oSession: Session) {。)
  • 修改它的身體 - 簡單的字符串到字符串替換:

    if (oSession.oResponse.headers.ExistsAndContains("Content-Type","text/html")){ 
        oSession.utilDecodeResponse(); 
        oSession.utilReplaceInResponse('find','replace'); 
        oSession.utilReplaceInResponse('something','anything'); 
    } 
    
  • 或者正則表達式:

    if (oSession.oResponse.headers.ExistsAndContains("Content-Type", "html")){ 
        oSession.utilDecodeResponse(); 
        var oBody = System.Text.Encoding.UTF8.GetString(oSession.responseBodyBytes); 
        var oRegEx = /([a-z]+) and ([a-z]+)/gi; 
        oBody = oBody.replace(oRegEx, "$2 swapped $1"); 
        oSession.utilSetResponseBody(oBody); 
    } 
    

(這會認爲不會的情況下工作時的反應並不UTF- 8.)

腳本文件是「活的」:在Fiddler運行時保存在腳本中的任何更改是傳播(它會在文件更改時播放聲音,或者當您在Fiddler窗口中使用相應的提示來分解某些內容時播放不同的聲音)。

文檔:http://docs.telerik.com/fiddler/KnowledgeBase/FiddlerScript/ModifyRequestOrResponse

順便說一句死簡單傳入文件替換,你可以使用自動回覆: Fiddler AutoResponder example


披露:我不知道很多關於這一點,正好與小提琴手搞亂今天,我剛纔自己嘗試了這些東西。我想可能會有更強大的方法,甚至可能更智能的代理與合併的HTML解析器或這樣更適合您的問題;啞字符串替換不能與真正的HTML解析器等競爭,但這是我知道的第一個也是唯一的解決方案。

+0

謝謝@myf我已經使用了「修改它的正文」版本。我還發現有一個html敏捷包可以解析可以在fiddler中使用的html,但是我沒有嘗試過使用它,這有點棘手。我認爲更好的方法是在javascript文件中使用jquery ajax處理,因爲它可以將響應分成可用作請求輸入的變量。 – Samuel

+0

我認爲智能代理將使用神經網絡或其他一些自學習技術。如果它能在馬里奧遊戲和其他遊戲中獲勝,爲什麼開發者不會將這些東西包含在他們的程序中?這將大大簡化用戶的重複性任務。 – Samuel

+0

這個答案很棒,拯救了我的一天!順便說一句,要獲得「FiddlerScript」選項卡,您必須首先安裝http://www.telerik.com/fiddler/add-ons上的_Syntax-Highlighting Add-Ons_ –