【月更16篇】mitmproxy與安卓模擬器搭配,助力Python爬蟲工程師,然后就可以爬CSDN粉絲數(shù)據(jù)了

      網(wǎng)友投稿 1657 2025-04-01

      本篇博客為大家介紹 mitmproxy,該工具與 Charles 和 Fiddler 實(shí)現(xiàn)的功能類似,都可以輔助我們分析接口。


      mitmproxy 工具安裝

      mitmproxy 是一個(gè)免費(fèi)且開源的交互式 HTTPS 代理,在爬蟲領(lǐng)域一般將其用作手機(jī)模擬器,無(wú)頭瀏覽器,可以用它作為代理去攔截爬蟲獲取到的數(shù)據(jù)。

      mitmproxy 可以與 fiddler 工具一樣,安裝一個(gè)客戶端進(jìn)行操作,地址如下:

      官網(wǎng)地址:https://mitmproxy.org/

      6.0版本-:https://mitmproxy.org/downloads/#6.0.2/

      需要特殊的手段進(jìn)行訪問(wèn),國(guó)內(nèi)已經(jīng)將其地址屏蔽。

      下載的最新 Windows Installer 版本即可(由于我電腦使用的是 Windows7 操作系統(tǒng),顧下載 6.0 版本),其文檔說(shuō)明也非常清楚:https://docs.mitmproxy.org/stable/

      安裝完畢,會(huì)自動(dòng)運(yùn)行控制臺(tái),啟動(dòng) mitmproxy ui 。

      通過(guò)瀏覽器訪問(wèn)上述地址,得到如下界面。

      如果出現(xiàn)如下異常 缺少 api-ms-win-core-path-l1-1-0.dll ,打開下述鏈接下載 dll 組件即可。

      https://download.csdn.net/download/hihell/38146147

      接下來(lái)設(shè)置一下瀏覽器代理,是數(shù)據(jù)通過(guò)監(jiān)聽端口,按照如下步驟操作即可。

      除此之外,為了捕獲 HTTPS 協(xié)議的請(qǐng)求,還需要安裝證書,在瀏覽器打開 http://mitm.it/ 下載 Windows 證書即可,下圖就是抓取成功時(shí)候的樣子。

      證書也可以在目錄 C:\Users\Administrator\.mitmproxy 查找,Windows 下選擇 mitmproxy-ca-cert.p12。

      關(guān)閉瀏覽器和控制臺(tái)之后,再次啟動(dòng)只需要在控制臺(tái)輸入 mitmweb 即可實(shí)現(xiàn),還有一種啟動(dòng)方式,使用 mitmdump ,實(shí)現(xiàn)效果如下所示,該形式與 mitmweb 的差異是展示載體不一致,即一個(gè)是在網(wǎng)頁(yè)端,一個(gè)是在控制臺(tái)。

      mitmproxy 配合安卓模擬器

      有了前文的鋪墊,在加上以前對(duì) fiddler 和 Charles 的學(xué)習(xí),mitmproxy 和模擬器連接操作就非常容易了。

      配置模擬器的 Wlan 代理,指向電腦 IP,同時(shí)端口為 8080。

      將證書 mitmproxy-ca-cert.cer 或者 mitmproxy-ca-cert.pem 拖拽到模擬器中,然后安裝證書(如無(wú)法雙擊安裝,通過(guò)【設(shè)置】->【安全】安裝即可),完成以上操作之后,只需要通過(guò)模擬器訪問(wèn)百度,查看是否捕捉到數(shù)據(jù)請(qǐng)求即可。

      僅使用如上功能是遠(yuǎn)遠(yuǎn)不夠的,我們看中的是 mitmproxy 可以實(shí)現(xiàn)腳本二次開發(fā),所以下面在 python 環(huán)境中安裝 mitmproxy 庫(kù),實(shí)現(xiàn)其擴(kuò)展功能。

      在 python 環(huán)境下配置 mitmproxy

      使用 pip install mitmproxy 即可實(shí)現(xiàn)該庫(kù)的安裝,mitmproxy 要求 python 最低版本是 python3.8,所以安裝前需要確定你的 Python 版本是否滿足要求(實(shí)測(cè) Python3.7 也安裝成功了)。

      安裝過(guò)程中,發(fā)現(xiàn) pyperclip 無(wú)法安裝成功,解決辦法是下載其 tar.gz 文件,解壓之后,使用 python setup.py install 進(jìn)行本地安裝。

      mitmproxy 包含的模塊比較多,其中任意模塊失敗,都無(wú)法安裝成功。

      Successfully installed Brotli-1.0.9 Jinja2-2.11.3 MarkupSafe-2.0.1 Werkzeug-1.0.1 asgiref-3.3.4 certifi-2021.10.8 cffi-1.15.0 click-7.1.2 0 hpack-4.0.0 hyperframe-6.0.1 itsdangerous-1.1.0 ldap3-2.8.1 mitmproxy-5.3.0 msgpack-1.0.2 passlib-1.7.4 protobuf-3.13.0 publicsuffix2-2 2.21 pydivert-2.1.0 pyparsing-2.4.7 ruamel.yaml-0.16.13 ruamel.yaml.clib-0.2.6 six-1.16.0 sortedcontainers-2.2.2 tornado-6.1 typing-exten

      mitmproxy 官方提供了非常多參考案例

      例子查看網(wǎng)址:https://docs.mitmproxy.org/stable/addons-examples/

      你學(xué)習(xí)的第一個(gè)案例,就是修改 requests 請(qǐng)求,創(chuàng)建一個(gè)名稱為 script.py 的文件,編寫如下代碼:

      import mitmproxy.http def request(flow: mitmproxy.http.HTTPFlow): flow.request.headers['User-Agent'] = 'MitmProxy' print(flow.request.headers)

      在控制臺(tái)使用 mitmdump -s script.py 啟動(dòng)文件,并開啟瀏覽器代理,訪問(wèn) http://httpbin.org/get,此時(shí)就會(huì)發(fā)現(xiàn)用戶代理已經(jīng)被我們成功修改。

      還可以將多個(gè)方法合并在一個(gè)類中,然后再通過(guò) addons 變量進(jìn)行綁定,例如官方提供的案例。

      from mitmproxy import ctx class Counter: def __init__(self): self.num = 0 def request(self, flow): self.num = self.num + 1 ctx.log.info("We've seen %d flows" % self.num) addons = [ Counter() ]

      在命令行重啟 mitmproxy,刷新瀏覽器獲取如下內(nèi)容。

      這里還需要了解的就是為了實(shí)現(xiàn) mitmproxy 與 python 之間的交互,有一些固定名稱的函數(shù)需要記憶一下。

      def http_connect(self, flow: mitmproxy.http.HTTPFlow):與服務(wù)器建立連接;

      def requestheaders(self, flow: mitmproxy.http.HTTPFlow):客戶端的 HTTP 請(qǐng)求的頭部被成功讀取,請(qǐng)求 body 沒有讀取;

      def request(self, flow: mitmproxy.http.HTTPFlow):客戶端的 HTTP 請(qǐng)求被成功完整讀取;

      def responseheaders(self, flow: mitmproxy.http.HTTPFlow):服務(wù)器返回的響應(yīng)頭被讀取,響應(yīng) body 還沒有返回;

      def response(self, flow: mitmproxy.http.HTTPFlow):響應(yīng)完整返回;

      【月更16篇】mitmproxy與安卓模擬器搭配,助力Python爬蟲工程師,然后就可以爬CSDN粉絲數(shù)據(jù)了

      def error(self, flow: mitmproxy.http.HTTPFlow):異常狀態(tài)。

      這里對(duì)具體細(xì)節(jié)的 API 不做過(guò)多的說(shuō)明,都可以從手冊(cè)查閱出來(lái),官方手冊(cè):https://docs.mitmproxy.org/stable/api/events.html

      案例時(shí)間

      本次實(shí)現(xiàn)的爬蟲案例是,訪問(wèn) CSDN 任意博主的粉絲列表,在控制臺(tái)打印出粉絲數(shù)據(jù)(隱私問(wèn)題,沒有存儲(chǔ))。

      那官方博客測(cè)試,發(fā)現(xiàn)接口如下:

      https://blog.csdn.net/community/home-api/v1/get-fans-list?page=4&size=20&noMore=false&blogUsername=blogdevteam

      請(qǐng)求方式為 get ,請(qǐng)求地址為 https://blog.csdn.net/community/home-api/v1/get-fans-list,修改 script.py 文件代碼如下:

      from mitmproxy import ctx import json def response(flow): start_url = "https://blog.csdn.net/community/home-api/v1/get-fans-list" response = flow.response if flow.request.url.startswith(start_url): text = response.text data = json.loads(text) print(data)

      或者使用如下代碼,也可以實(shí)現(xiàn)相同的效果。

      import json class GetFans(object): def response(self, flow): start_url = "https://blog.csdn.net/community/home-api/v1/get-fans-list" response = flow.response if flow.request.url.startswith(start_url): text = response.text data = json.loads(text) print(data) addons = [ GetFans() ]

      這時(shí)候,如果我們能實(shí)現(xiàn)自動(dòng)化下拉頁(yè)面,是不是就能實(shí)現(xiàn)一個(gè)自動(dòng)化的爬蟲了呢???

      訂閱時(shí)間

      今天是持續(xù)寫作的第

      267

      / 365 天。

      可以

      關(guān)注

      我,

      我、

      評(píng)論

      我、

      我啦。

      HTTP https Python

      版權(quán)聲明:本文內(nèi)容由網(wǎng)絡(luò)用戶投稿,版權(quán)歸原作者所有,本站不擁有其著作權(quán),亦不承擔(dān)相應(yīng)法律責(zé)任。如果您發(fā)現(xiàn)本站中有涉嫌抄襲或描述失實(shí)的內(nèi)容,請(qǐng)聯(lián)系我們jiasou666@gmail.com 處理,核實(shí)后本網(wǎng)站將在24小時(shí)內(nèi)刪除侵權(quán)內(nèi)容。

      版權(quán)聲明:本文內(nèi)容由網(wǎng)絡(luò)用戶投稿,版權(quán)歸原作者所有,本站不擁有其著作權(quán),亦不承擔(dān)相應(yīng)法律責(zé)任。如果您發(fā)現(xiàn)本站中有涉嫌抄襲或描述失實(shí)的內(nèi)容,請(qǐng)聯(lián)系我們jiasou666@gmail.com 處理,核實(shí)后本網(wǎng)站將在24小時(shí)內(nèi)刪除侵權(quán)內(nèi)容。

      上一篇:怎樣實(shí)現(xiàn)word2007表格數(shù)據(jù)求和(word2016表格數(shù)據(jù)求和)
      下一篇:云享專家姚冬:9種DevOps團(tuán)隊(duì)結(jié)構(gòu)適用類型與7種反型
      相關(guān)文章
      久久夜色精品国产噜噜噜亚洲AV| 国产亚洲精品美女久久久| 亚洲av无码乱码国产精品| 亚洲а∨天堂久久精品| 亚洲av无码成人精品区一本二本| 亚洲xxxx视频| 亚洲国产区男人本色在线观看| 精品日韩99亚洲的在线发布| 91亚洲国产成人久久精品网址| 亚洲另类精品xxxx人妖| 亚洲制服在线观看| 亚洲一区二区三区免费观看| 国产人成亚洲第一网站在线播放| 性xxxx黑人与亚洲| 亚洲一卡一卡二新区无人区| 亚洲精品成a人在线观看☆| 亚洲av永久无码精品网址| 国产亚洲日韩在线a不卡| 久99精品视频在线观看婷亚洲片国产一区一级在线 | 亚洲AV区无码字幕中文色| 水蜜桃亚洲一二三四在线| 亚洲va在线va天堂va不卡下载| 亚洲成人动漫在线| 久久精品a亚洲国产v高清不卡 | 亚洲自偷自偷精品| 亚洲精品中文字幕乱码影院| 亚洲一级视频在线观看| 亚洲中文字幕一区精品自拍| 亚洲日韩国产欧美一区二区三区 | 色婷婷亚洲一区二区三区| 亚洲国产精品成人久久蜜臀| 亚洲精品无码你懂的网站| 亚洲欧洲国产精品香蕉网| 亚洲AV无码不卡在线播放| 亚洲视频在线免费播放| 亚洲人成在久久综合网站| 亚洲欧好州第一的日产suv| 国产成人亚洲毛片| 亚洲自偷自偷偷色无码中文| 亚洲成色999久久网站| 亚洲妓女综合网99|