1. 程式人生 > 實用技巧 >PYTHON爬蟲實戰_垃圾佬閒魚爬蟲轉轉爬蟲資料整合自用二手急速響應撿垃圾平臺_3(附原始碼持續更新)

PYTHON爬蟲實戰_垃圾佬閒魚爬蟲轉轉爬蟲資料整合自用二手急速響應撿垃圾平臺_3(附原始碼持續更新)

說明

文章首發於HURUWO的部落格小站,本平臺做同步備份釋出。
如有瀏覽或訪問異常圖片載入失敗或者相關疑問可前往原部落格下評論瀏覽。
原文連結 PYTHON爬蟲實戰_垃圾佬閒魚爬蟲轉轉爬蟲資料整合自用二手急速響應撿垃圾平臺_3(附原始碼持續更新)直接點選即可前往訪問。

整個系列文章連結

PYTHON爬蟲實戰:垃圾佬閒魚爬蟲、轉轉爬蟲資料整合自用二手急速響應撿垃圾平臺(附原始碼持續更新)-1

PYTHON爬蟲實戰:垃圾佬閒魚爬蟲、轉轉爬蟲資料整合自用二手急速響應撿垃圾平臺(附原始碼持續更新)-2

PYTHON爬蟲實戰:垃圾佬閒魚爬蟲、轉轉爬蟲資料整合自用二手急速響應撿垃圾平臺(附原始碼持續更新)-3

前言

本章內容

本章講解關於fidder資料包轉發的問題,也就是攔截了資料之後如何將想要的資料推到指定的資料庫做處理。

FidderScript的說明和使用

FidderScript是什麼

FidderScript是Fidder針對資料包的請求 回覆 修改的指令碼語言。通過使用FidderScript編寫指令碼插入可以完成自動化的 請求修改 轉發 回覆 修改操作。可以說功能非常強大,喜歡資料採集的人必學。

FidderScript的語法

官方文件: http://fiddler2.com/r/?fiddlerscriptcookbook

其實不用去看官方文件 左邊的classview 已經包含了所有的api文件 看看就行

下面說幾個常用的類方法:

1.Session 所有請求資訊/回覆資訊的儲存處 包括request response都可以做修改。比較核心的一個類方法物件。

2.HTTPRequestHeadersHTTPResponseHeaders headers 的對映類 在Session 提取出來可以做修改變化。

3.關於Fidder 軟體本身的一些FidderApplication類方法 比如修改UI的 按鈕等 ,甚至可以定製化出來一個自動化工具。這個就不細說了,看看就知道了。

個人感覺這個語言非常類似於java,有物件有類。學習起來並不要多少成本。但是他的功能確實非常強大。

FidderScript一個簡單的例子

體驗一下一個指令碼的完整開發過程。

進入指令碼編輯器

兩種辦法:

方法1.

點選進入FidderScript

展開類圖:點選ClassView

如果做了修改點選:Save Script 儲存指令碼

應用指令碼

方法2.

Click Rules > Customize Rules

Rules....Enter FiddlerScript code inside the appropriate function.

Save the file.

推薦第二種方式進入指令碼編輯器

修改一下request url

跳轉到指定的程式碼 塊和方法體 點選goto 下拉框裡選擇點選

進入OnBeforeRequest


        static function OnBeforeRequest(oSession: Session) {
        
       
       ......
       ......
       ......
    }

所有的 request資訊包含在oSession裡面

比如我們做一個 知乎轉到百度的重定向

if(oSession.fullUrl.Equals("https://www.zhihu.com/"))
{                     
oSession.fullUrl = "https://www.baidu.com/";  
}

儲存執行一下:

神奇的從知乎跳轉到了百度了

整個過程非常輕鬆。

FidderScript 轉存閒魚資料

資料轉存的資料儲存問題

1.存在本地還是存在雲端

2.是否需要搭建一個後端系統處理資料

3.資料如何顯示到頁面

解決方案

存在雲端本地都行,但是搭建一個後臺系統非常有必要。

提供一個數據提交的介面做資料提供和資料處理的分離方案。

顯示和處理在後臺系統(web系統裡即可) 處理出來的資料。關於後臺系統的搭建後面的文章會介紹,這裡假設已經搭建成功。

後臺資料接收系統

資料提交介面假設為: http://127.0.0.1:8000/xianyu/
資料提交方式為 POST 資料直接提交原始資料即可,儘量把邏輯處理放在後臺

先開啟服務:

編寫轉發指令碼

因為閒魚的測試機子不在身邊 暫時先用轉發抖音的資料為例子

開啟抖音 抓取一下櫥窗的商品列表連結

https://api5-normal-c-lf.amemv.com/aweme/v1/promotion/user/promotion/list/?user_id=54512396382&sec_user_id=MS4wLjABAAAAa54-WneSWxYZ24J_00iS-9SwMQkrM3fOYK_sXDYG-lg&cursor=0&count=20&column_id=0&goods_type=0&shop_version=1&storage_type=0&manifest_version_code=110601&_rticket=1611199065509&app_type=normal&iid=17186708527928&channel=meizu&device_type=M1852&language=zh&cpu_support64=true&host_abi=armeabi-v7a&uuid=86908603665928&resolution=1080*2124&openudid=9c8e3e9910b351a8&update_version_code=11609900&cdid=a5182ee3-c5b7-44b9-830f-71ca10dd4b60&os_api=27&mac_address=D8%3A6C%3A02%3AC9%3AB5%3A58&dpi=480&ac=wifi&device_id=70532699303&mcc_mnc=46001&os_version=8.1.0&version_code=110600&app_name=aweme&version_name=11.6.0&device_brand=Meizu&ssmix=a&device_platform=android&aid=1128&ts=1611199065

指令碼轉發資料包 核心程式碼:

static function OnBeforeResponse(oSession: Session) {
        if (m_Hide304s && oSession.responseCode == 304) {
            oSession["ui-hide"] = "true";
        }
        
        
        if (oSession.fullUrl.Contains("/promotion/user/promotion/list/"))
        {
            oSession.utilDecodeResponse();//消除儲存的請求可能存在亂碼的情況
            
            
            
            //把內容通過ajax http傳送其它地方
            var _xhr = new ActiveXObject('Microsoft.XMLHTTP');
            var url = 'http://127.0.0.1:8000/xianyu';
            
            
            //傳送的資料引數
            var param = oSession.GetResponseBodyAsString()
            
           
          
            //不需要返回值所以寫啦個空回撥
            _xhr.onreadystatechange = function() {}
            _xhr.open('POST', url, true);
            _xhr.setRequestHeader("Content-Type", "application/json");
            _xhr.setRequestHeader("X-Requested-With", "XMLHttpRequest");
            _xhr.send(param);
            
            
          
        }
        
    }

測試資料接收

點選手機 開啟櫥窗

api伺服器成功獲得資料

總結

最後說明一下

autoResponder僅僅只是替換返回包功能 沒有修改和儲存資料包的功能,以開始我跑偏了。

FidderScript則是一個強大的工具 只有掌握了FidderScript 才能算是真正的掌握了整個Fidder這個軟體。

參考文章 資料說明


Fiddler4.6.20 使用script儲存請求或響應資料到本地或post到其它地方儲存

本專案原始碼已經上傳:https://github.com/HuRuWo/PickUpTrash