中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

python爬蟲Mitmproxy的安裝使用方法

發布時間:2021-09-01 21:06:32 來源:億速云 閱讀:324 作者:chen 欄目:開發技術

這篇文章主要介紹“python爬蟲Mitmproxy的安裝使用方法”,在日常操作中,相信很多人在python爬蟲Mitmproxy的安裝使用方法問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”python爬蟲Mitmproxy的安裝使用方法”的疑惑有所幫助!接下來,請跟著小編一起來學習吧!

目錄
  • 一、簡介和安裝

    • 1.1、概念和作用

      • 概念

      • 作用

    • 1.2、安裝

      • 1.3、工具介紹

      • 二、設置代理

        • 2.1、PC端設置代理

          • 2.2、PC端安裝證書

            • 2.3、移動端設置代理

            • 三、 mitmdump

              • 3.1、插件使用

                • 3.2、常用事件

                  • 3.2.1、request事件

                  • 3.2.2、response事件

                • 3.3、下載圖片

                一、簡介和安裝

                1.1、概念和作用

                概念

                Mitmproxy是一個免費的開源交互式的HTTPS代理。MITM即中間人攻擊(Man-in-the-Middle Attack)。

                作用

                代理的作用,轉發請求,保障服務端與客戶端的通信

                查看,記錄,修改數據,引發服務端或客戶端的特定行為

                python爬蟲Mitmproxy的安裝使用方法

                補充:Mitmproxy與Fiddler、Charles異同
                相同點: a、都是用來捕獲 HTTP,HTTPS 請求的(其他協議比如 TCP,UDP,IP,ICMP 等就用Wireshark)
                ???? b、抓包、斷點調試、請求替換、構造請求、模擬弱網等

                不同點:a、Fiddler只能運行在Windows系統;Mitmproxy、Charles是跨平臺的,可運行在Windows、Mac或Linux系統等。
                ????b、Fiddler、Mitmproxy開源免費、Charles是收費的(可破解)。
                ????c、Mitmproxy支持命令行交互模式、GUI界面,Fiddler、Charles僅支持GUI界面
                (Fiddler底部有個命令行工具叫做 QuickExec)

                1.2、安裝

                pip  install  mitmproxy

                pip install -i https://pypi.douban.com/simple  mitmproxy

                如果直接安裝的速度太慢了,可以在命令行中添加國內的鏡像源加快速度,就是第二條命令。注意:python 版本不低于3.6

                檢查是否安裝成功:命令行中輸入命令查看mitmdump --version

                python爬蟲Mitmproxy的安裝使用方法

                安裝成功后在Python安裝路徑Script路徑下可以找到 mitmdump.exemitmproxy.exemitmweb.exe 這三個可執行文件。

                python爬蟲Mitmproxy的安裝使用方法

                1.3、工具介紹

                mitmproxy:命令行界面,允許交互式檢查和修改http數據流,不支持windows

                python爬蟲Mitmproxy的安裝使用方法

                mitmweb: Web界面,用戶可以實時看到發生的請求,過濾請求,查看請求數據

                python爬蟲Mitmproxy的安裝使用方法

                mitmdump: 一個命令行工具,沒有界面,不能交互,但是可以通過啟動參數并結合自定義腳本進行定制化功能的實現,是我們運行的環境

                python爬蟲Mitmproxy的安裝使用方法

                這三個命令功能一致,且都可以加載自定義腳本,唯一的區別是交互界面的不同;

                mitmproxy,mitmweb主要用來做調試,部署項目時使用mitmdump。

                二、設置代理

                2.1、PC端設置代理

                開啟代理時需要把其他的代理都關掉

                python爬蟲Mitmproxy的安裝使用方法

                開啟代理

                注:這時我們剛開啟代理,還未安裝證書,如果訪問其他網址會出現報錯,如下圖所示:

                python爬蟲Mitmproxy的安裝使用方法

                2.2、PC端安裝證書

                在代理狀態下,訪問http://mitm.it/,PC端與移動端操作相同。

                (注意:設置完成后,瀏覽器打開網頁發現都是未連接網絡,需要先啟動mitmweb.exe或者mitmdump.exe程序才能打開鏈接)

                python爬蟲Mitmproxy的安裝使用方法

                根據自己的系統環境下載對應的證書安裝

                后面點擊下載的證書按步驟導入就可以了

                2.3、移動端設置代理

                以夜神模擬器為例(注意保證手機和電腦在同局域網下)

                python爬蟲Mitmproxy的安裝使用方法

                設置完代理,打開瀏覽器訪問http://mitm.it/

                python爬蟲Mitmproxy的安裝使用方法

                下載安裝證書

                三、 mitmdump

                官方文檔:https://docs.mitmproxy.org/stable/addons-overview/

                3.1、插件使用

                • 插件的本質就是一個腳本文件,在Python中就是一個類的實例對象。

                • 此處插件是Counter實例對象,request方法是一個事件

                • 對于request事件,它的參數是一個mitmproxy.http.HTTPFlow的對象。

                如:(官方文檔例子)

                """
                Basic skeleton of a mitmproxy addon.
                Run as follows: mitmproxy -s anatomy.py
                """
                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()
                ]

                上面是一個簡單的插件,用于跟蹤我們已經看到的流(或更具體的HTTP請求)數量。每次看到新的流量時,它都會使用mitmproxy的內部日志記錄機制來宣布其提示。可以在交互式工具的事件日志中或mitmdump的控制臺中找到輸出。

                可以使用mitmdump -s ./anatomy.py運行插件(anatomy.py是創建的文件名)。


                3.2、常用事件

                def request(self, flow: mitmproxy.http.HTTPFlow):
                 """
                 The full HTTP request has been read.
                 """
                def response(self, flow: mitmproxy.http.HTTPFlow):
                 """
                 The full HTTP response has been read.
                 """
                3.2.1、request事件

                (注意:記得在代理狀態下執行,命令:mitmdump -s ./xxx.py

                from mitmproxy import http
                def request(flow:http.HTTPFlow):  #注意函數名request不能寫錯
                    #獲取請求頭信息
                    print('請求頭',flow.request.headers)
                    #完整請求地址
                    print('請求url',flow.request.url)
                    #域名
                    print('域名',flow.request.host)
                    #請求路徑  url除域名之外的內容
                    print('請求路徑',flow.request.path)
                    #返回MultiDictView類型的數據,URL的鍵值參數
                    print('url的鍵值參數',flow.request.query)
                    #請求方法
                    print('請求方法',flow.request.method)
                    #請求類型
                    print('請求類型',flow.request.scheme)
                    #獲取請求內容
                    '''
                    print('請求內容',flow.request.get_text)
                    print('請求內容類型',type(flow.request.get_text))
                    print('請求內容bytes',flow.request.raw_content)
                    print('請求內容bytes',flow.request.get_content)
                    '''
                    if 'https://www.baidu.com' in flow.request.url:
                        #取得請求參數wd的值
                        print(flow.request.query.get('wd'))
                        #取得所有請求參數
                        print(list(flow.request.query.keys()))
                        #修改請求參數
                        flow.request.query.set_all('wd',['python'])
                        #打印修改過后的參數
                        print(flow.request.query.get('wd'))
                3.2.2、response事件

                (注意:記得在代理狀態下執行,命令:mitmdump -s ./xxx.py

                from mitmproxy import http
                def response(flow:http.HTTPFlow):  #注意函數名response不能寫錯
                    #狀態碼
                    print('狀態碼',flow.response.status_code)
                    #返回內容,已解碼
                    print('返回內容',flow.response.text)
                    #返回內容, bytes類型
                    print('返回內容bytes類型',flow.response.content)
                    #取得響應的文本
                    print('應的文本',flow.response.get_text)
                    #修改響應 的文本
                    flow.response.set_text('你的響應內容被修改了!')

                3.3、下載圖片

                (注意:記得在代理狀態下執行,命令:mitmdump -q -s ./xxx.py 加-q會使打印更清晰可觀)

                import os
                index = 0
                def response(flow):
                    global index
                    print('===========下載==============')
                    print(flow.request.url)
                    if flow.request.url[-3:] == 'jpg':
                        dir = 'images'
                        if not os.path.exists(dir):
                            os.mkdir(dir)
                        filename = dir+'/'+str(index)+'.jpg'
                        with open(filename,'wb') as f:
                            f.write(flow.response.get_content())
                            index+=1

                到此,關于“python爬蟲Mitmproxy的安裝使用方法”的學習就結束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學習,快去試試吧!若想繼續學習更多相關知識,請繼續關注億速云網站,小編會繼續努力為大家帶來更多實用的文章!

                向AI問一下細節

                免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

                AI

                南开区| 桐柏县| 泰顺县| 都江堰市| 林芝县| 增城市| 天津市| 泸西县| 曲沃县| 灵川县| 东辽县| 东兴市| 蛟河市| 常山县| 合水县| 林西县| 新蔡县| 宣恩县| 临湘市| 廉江市| 郯城县| 怀集县| 临澧县| 吴江市| 绥中县| 抚远县| 武乡县| 肃南| 开鲁县| 前郭尔| 泾源县| 安多县| 白玉县| 鄂伦春自治旗| 东至县| 榆林市| 庆云县| 乐都县| 新泰市| 东乡族自治县| 嘉祥县|