国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

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

ddongjian0000 / 2991人閱讀

摘要:配合安卓模擬器有了前文的鋪墊,在加上以前對(duì)和的學(xué)習(xí),和模擬器連接操作就非常容易了。配置模擬器的代理,指向電腦,同時(shí)端口為。

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

mitmproxy 工具安裝

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

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

官網(wǎng)地址:https://mitmproxy.org/
6.0版本下載地址:https://mitmproxy.org/downloads/#6.0.2/

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

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

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

通過瀏覽器訪問上述地址,得到如下界面。

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

接下來設(shè)置一下瀏覽器代理,是數(shù)據(jù)通過監(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)頁端,一個(gè)是在控制臺(tái)。

mitmproxy 配合安卓模擬器

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

配置模擬器的 Wlan 代理,指向電腦 IP,同時(shí)端口為 8080。
將證書 mitmproxy-ca-cert.cer 或者 mitmproxy-ca-cert.pem 拖拽到模擬器中,然后安裝證書(如無法雙擊安裝,通過【設(shè)置】->【安全】安裝即可),完成以上操作之后,只需要通過模擬器訪問百度,查看是否捕捉到數(shù)據(jù)請(qǐng)求即可。

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

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

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

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

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

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.20 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-22.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.httpdef request(flow: mitmproxy.http.HTTPFlow):    flow.request.headers["User-Agent"] = "MitmProxy"    print(flow.request.headers)

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

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

from mitmproxy import ctxclass 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) mitmproxypython 之間的交互,有一些固定名稱的函數(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)完整返回;
  • def error(self, flow: mitmproxy.http.HTTPFlow):異常狀態(tài)。

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

案例時(shí)間

本次實(shí)現(xiàn)的爬蟲案例是,訪問 CSDN 任意博主的粉絲列表,在控制臺(tái)打印出粉絲數(shù)據(jù)(隱私問題,沒有存儲(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 ctximport jsondef 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 jsonclass 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)化下拉頁面,是不是就能實(shí)現(xiàn)一個(gè)自動(dòng)化的爬蟲了呢???

訂閱時(shí)間

今天是持續(xù)寫作的第 267 / 365 天。
可以關(guān)注我,點(diǎn)贊我、評(píng)論我、收藏我啦。

更多精彩


???掃碼加入【78技術(shù)人】~ Python 事業(yè)部???,源碼也在這

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://m.specialneedsforspecialkids.com/yun/125083.html

相關(guān)文章

  • 首次公開,整理12年積累的博客收藏夾,零距離展示《收藏夾吃灰》系列博客

    摘要:時(shí)間永遠(yuǎn)都過得那么快,一晃從年注冊(cè),到現(xiàn)在已經(jīng)過去了年那些被我藏在收藏夾吃灰的文章,已經(jīng)太多了,是時(shí)候把他們整理一下了。那是因?yàn)槭詹貖A太亂,橡皮擦給設(shè)置私密了,不收拾不好看呀。 ...

    Harriet666 評(píng)論0 收藏0
  • Python3網(wǎng)絡(luò)實(shí)戰(zhàn)---9、APP取相關(guān)庫的安裝:Appium的安裝

    摘要:支持全平臺(tái)的安裝,我們直接從的里面安裝即可,鏈接為。平臺(tái)可以下載安裝包如,平臺(tái)可以下載安裝包如,平臺(tái)可以選擇下載源碼,但是更推薦用下文的安裝方式。上一篇文章網(wǎng)絡(luò)爬蟲實(shí)戰(zhàn)爬取相關(guān)庫的安裝的安裝下一篇文章網(wǎng)絡(luò)爬蟲實(shí)戰(zhàn)爬蟲框架的安裝 上一篇文章:Python3網(wǎng)絡(luò)爬蟲實(shí)戰(zhàn)---8、APP爬取相關(guān)庫的安裝:MitmProxy的安裝下一篇文章:Python3網(wǎng)絡(luò)爬蟲實(shí)戰(zhàn)---10、爬蟲框架的安裝...

    caige 評(píng)論0 收藏0
  • 抓包軟件 Fiddler 解一下?

    摘要:還有一個(gè)大坑,就是如果你的機(jī)子是安卓而是系統(tǒng)其他系統(tǒng)沒測(cè)試過的話,安裝了證書也是沒用的,在進(jìn)行抓包的時(shí)候還是會(huì)提示證書有問題。 學(xué)會(huì)如何抓包,是爬蟲的必備技能,甚至可以說,不會(huì)抓包就等同于不會(huì)爬蟲。 那我們?cè)鯓幼グ兀咳绻苯幼トg覽器上的內(nèi)容,可以直接使用開發(fā)者工具進(jìn)行抓包,但有個(gè)局限,只能抓瀏覽器的,功能也沒有多少。還可以使用別的工具,比如 mitmproxy、charles,當(dāng)然...

    Lyux 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<