1. 程式人生 > >利用Fiddler2的Custom Rules自動抓取App的TOKEN並記錄到文件

利用Fiddler2的Custom Rules自動抓取App的TOKEN並記錄到文件

測試結果 style key ref 啟動 nbsp 分享圖片 modify clip

本文原創作者:鯤之鵬(http://www.site-digger.com)

本文原始鏈接:http://www.site-digger.com/html/articles/20170810/137.html




背景:某App的token有時效性,大概生命周期只有一小時。因此爬蟲中不能使用一個固定的token去抓數據,必須要定時獲取新的token值。但token的產生過程復雜難以直接實現。

鯤之鵬的技術人員經過研究,最後采用了“曲線救國”的方法,通過程序模擬操作App(啟動),定時產生新的token,然後利用Fiddler2捕獲這個token並記錄到指定文件中(爬蟲定時讀取這個文件獲取新的token)。

用Fiddler2捕獲App的數據包這個方法在我們之前的文章裏已經多次提到,如果你還不熟悉,可以看看這裏

http://www.site-digger.com/html/articles/20170116/134.html。今天我們重點講的是如何讓Fiddler2自動將捕獲到的特定參數記錄到指定文件中去。

這要歸功於Fiddler2的Custom Rules功能,我們可以在Custom Rules中添加腳本(JavaScript)來實現自定義的功能。官網示例文檔:http://docs.telerik.com/fiddler/KnowledgeBase/FiddlerScript/ModifyRequestOrResponse

具體操作步驟如下:

第一步:啟動Fiddler ScriptEditor。"菜單欄Rules -> Customize Rules...."如下圖所示:

技術分享圖片

技術分享圖片

第二步:找到OnBeforeRequest()方法,插入如下代碼:

view plaincopy to clipboardprint?

  1. // 首先判斷請求域名是否是自己感興趣的,以及URL中是否含有自己感興趣的特征字符串。如果是,則將該請求的URL和QueryString記錄到日誌文件 "c:/fiddler-token.log"中。

  2. if (oSession.HostnameIs("某域名") && oSession.uriContains("特征字符串")){

  3. var filename = "c:/fiddler-token.log"

    ;

  4. var curDate = new Date();

  5. var logContent = "[" + curDate.toLocaleString() + "] " + oSession.PathAndQuery + "\r\n";

  6. var sw : System.IO.StreamWriter;

  7. if (System.IO.File.Exists(filename)){

  8. sw = System.IO.File.AppendText(filename);

  9. sw.Write(logContent);

  10. }

  11. else{

  12. sw = System.IO.File.CreateText(filename);

  13. sw.Write(logContent);

  14. }

  15. sw.Close();

  16. sw.Dispose();

  17. }

第三步:保存腳本並測試(保存後立即生效,無需重啟Fiddler)。測試結果如下圖所示。

技術分享圖片
說明:該文章為鯤之鵬(http://www.site-digger.com)原創文章 ,您除了可以發表評論外,還可以轉載到別的網站,但是請保留源地址,謝謝!!(尊重他人勞動,我們共同努力)


利用Fiddler2的Custom Rules自動抓取App的TOKEN並記錄到文件