Python爬蟲入門教程 48-100 使用mitmdump抓取手機惠農APP-手機APP爬蟲部分


1. 爬取前的分析

mitmdump是mitmproxy的命令行接口,比Fiddler、Charles等工具方便的地方是它可以對接Python腳本。
有了它我們可以不用手動截獲和分析HTTP請求和響應,只需寫好請求和響應的處理邏輯即可。
它還可以實現數據的解析、存儲等工作,這些過程都可以通過Python實現。

1.1 啟動mitmdump 保存到文件

使用命令

mitmdump -w crawl.txt  

其中 crawl.txt 可以為任意文件名,就可以保存相應的結果了

1.2 調用腳本文件

mitmdump -s script.py

script.py 文件中編寫如下代碼

# 修改UA
def request(flow):
    flow.request.headers['User-Agent'] = 'MitmProxy'
    print(flow.request.headers)

在夜神模擬器中打開http://httpbin.org/get
出現如下內容
python爬蟲入門教程
出現上述內容比較你已經可以對網頁request進行修改了,下面打開手機惠農APP,看一下如何去捕獲相應的請求

2. 捕獲手機惠農APP請求

這個地方千萬不要單獨依賴mitmdump,要不你會直接卡死的,你可以采用mitmweb,打開APP之后,等待一會,點擊一個菜單進入。比如點擊下面的供應大廳。
python爬蟲入門教程
之后在mitmweb中捕獲到列表頁的數據連接,保存地址 https://truffle.cnhnb.com/banana/supply/query/list 方便進行后續的操作。
python爬蟲入門教程

3. 完善script腳本

腳本主要有兩部分構成,數據獲取與數據存儲,數據獲取要注意,當訪問的url匹配到剛才的地址的時候,就表示可以進行處理了

from mitmproxy import ctx
import json
import pymongo
# def request(flow):
#     #flow.request.headers['User-Agent'] = 'MitmProxy'
#     print(flow.request.headers)

def response(flow):
    start_url = "https://truffle.cnhnb.com/banana/supply/query/list"
    response = flow.response
    info = ctx.log.info
    if flow.request.url.startswith(start_url):
        text = response.text
        
        data = json.loads(text)
        save(data)

def save(data):
    DATABASE_IP = '127.0.0.1'
    DATABASE_PORT = 27017
    DATABASE_NAME = 'sun'
    client = pymongo.MongoClient(DATABASE_IP, DATABASE_PORT)
    db = client.sun
    db.authenticate("dba", "dba")
    collection = db.huinong  # 准備插入數據
    print(data["data"]["datas"])
    collection.insert_many(data["data"]["datas"])

實現的效果

注意,現在還沒有設置手機自動操作,所以操作是我手動滑動的。左側數據已經成功的捕獲到了。在這里插入圖片描述
python爬蟲入門教程

4. 入庫效果

數據存儲到mongodb中,在處理就比較簡單了
python爬蟲入門教程

5. 其他說明

mitmdump提供了專門的日志輸出功能,可以設定不同級別以不同顏色輸出結果。
ctx模塊有log功能,調用不同的輸出方法就可以輸出不同顏色的結果,以方便我們做調試。

ctx.log.warn(str(flow.request.query))
ctx.log.error(str(flow.request.headers))

更多的腳本例子,可以去參考。

https://github.com/mitmproxy/mitmproxy/tree/master/examples/simple

后續,我們將嘗試將剛才的手動滑動修改成自動操作......

![python爬蟲入門教程](https://img-blog.csdnimg.cn/20190123152321413.jpg?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2hpaGVsbA==,size_16,color_FFFFFF,t_70#pic_center =200x)


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM