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

資訊專欄INFORMATION COLUMN

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

ddongjian0000 / 2966人閱讀

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

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

mitmproxy 工具安裝

mitmproxy 是一個免費且開源的交互式 HTTPS 代理,在爬蟲領域一般將其用作手機模擬器,無頭瀏覽器,可以用它作為代理去攔截爬蟲獲取到的數據。

mitmproxy 可以與 fiddler 工具一樣,安裝一個客戶端進行操作,地址如下:

官網地址:https://mitmproxy.org/
6.0版本下載地址:https://mitmproxy.org/downloads/#6.0.2/

需要特殊的手段進行訪問,國內已經將其地址屏蔽。

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

安裝完畢,會自動運行控制臺,啟動 mitmproxy ui

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

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

接下來設置一下瀏覽器代理,是數據通過監聽端口,按照如下步驟操作即可。


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

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


關閉瀏覽器和控制臺之后,再次啟動只需要在控制臺輸入 mitmweb 即可實現,還有一種啟動方式,使用 mitmdump ,實現效果如下所示,該形式與 mitmweb 的差異是展示載體不一致,即一個是在網頁端,一個是在控制臺。

mitmproxy 配合安卓模擬器

有了前文的鋪墊,在加上以前對 fiddlerCharles 的學習,mitmproxy 和模擬器連接操作就非常容易了。

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

僅使用如上功能是遠遠不夠的,我們看中的是 mitmproxy 可以實現腳本二次開發,所以下面在 python 環境中安裝 mitmproxy 庫,實現其擴展功能。

在 python 環境下配置 mitmproxy

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

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

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 官方提供了非常多參考案例

例子查看網址:https://docs.mitmproxy.org/stable/addons-examples/

你學習的第一個案例,就是修改 requests 請求,創建一個名稱為 script.py 的文件,編寫如下代碼:

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

在控制臺使用 mitmdump -s script.py 啟動文件,并開啟瀏覽器代理,訪問 http://httpbin.org/get,此時就會發現用戶代理已經被我們成功修改。

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

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,刷新瀏覽器獲取如下內容。

這里還需要了解的就是為了實現 mitmproxypython 之間的交互,有一些固定名稱的函數需要記憶一下。

  • def http_connect(self, flow: mitmproxy.http.HTTPFlow):與服務器建立連接;
  • def requestheaders(self, flow: mitmproxy.http.HTTPFlow):客戶端的 HTTP 請求的頭部被成功讀取,請求 body 沒有讀取;
  • def request(self, flow: mitmproxy.http.HTTPFlow):客戶端的 HTTP 請求被成功完整讀取;
  • def responseheaders(self, flow: mitmproxy.http.HTTPFlow):服務器返回的響應頭被讀取,響應 body 還沒有返回;
  • def response(self, flow: mitmproxy.http.HTTPFlow):響應完整返回;
  • def error(self, flow: mitmproxy.http.HTTPFlow):異常狀態。

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

案例時間

本次實現的爬蟲案例是,訪問 CSDN 任意博主的粉絲列表,在控制臺打印出粉絲數據(隱私問題,沒有存儲)。

那官方博客測試,發現接口如下:

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

請求方式為 get ,請求地址為 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)

或者使用如下代碼,也可以實現相同的效果。

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()]

這時候,如果我們能實現自動化下拉頁面,是不是就能實現一個自動化的爬蟲了呢???

訂閱時間

今天是持續寫作的第 267 / 365 天。
可以關注我,點贊我、評論我、收藏我啦。

更多精彩


???掃碼加入【78技術人】~ Python 事業部???,源碼也在這

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/125083.html

相關文章

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

    摘要:時間永遠都過得那么快,一晃從年注冊,到現在已經過去了年那些被我藏在收藏夾吃灰的文章,已經太多了,是時候把他們整理一下了。那是因為收藏夾太亂,橡皮擦給設置私密了,不收拾不好看呀。 ...

    Harriet666 評論0 收藏0
  • Python3網絡實戰---9、APP取相關庫的安裝:Appium的安裝

    摘要:支持全平臺的安裝,我們直接從的里面安裝即可,鏈接為。平臺可以下載安裝包如,平臺可以下載安裝包如,平臺可以選擇下載源碼,但是更推薦用下文的安裝方式。上一篇文章網絡爬蟲實戰爬取相關庫的安裝的安裝下一篇文章網絡爬蟲實戰爬蟲框架的安裝 上一篇文章:Python3網絡爬蟲實戰---8、APP爬取相關庫的安裝:MitmProxy的安裝下一篇文章:Python3網絡爬蟲實戰---10、爬蟲框架的安裝...

    caige 評論0 收藏0
  • 抓包軟件 Fiddler 解一下?

    摘要:還有一個大坑,就是如果你的機子是安卓而是系統其他系統沒測試過的話,安裝了證書也是沒用的,在進行抓包的時候還是會提示證書有問題。 學會如何抓包,是爬蟲的必備技能,甚至可以說,不會抓包就等同于不會爬蟲。 那我們怎樣抓包呢?如果直接抓取瀏覽器上的內容,可以直接使用開發者工具進行抓包,但有個局限,只能抓瀏覽器的,功能也沒有多少。還可以使用別的工具,比如 mitmproxy、charles,當然...

    Lyux 評論0 收藏0

發表評論

0條評論

最新活動
閱讀需要支付1元查看
<