一、Fiddler介紹1.Fiddler簡介 Fiddler是一個http協(xié)議調(diào)試代理工具,它能夠記錄并檢查所有你的電腦和互聯(lián)網(wǎng)之間的http通訊,設(shè)置斷點,查看所有的“進出”Fiddler的數(shù)據(jù)(指cookie,html,js,css等文件)。Fiddler 要比其他的網(wǎng)絡(luò)調(diào)試器要更加簡單,因為它不僅僅暴露http通訊還提供了一個用戶友好的格式。 通俗來講,F(xiàn)iddler 的工作原理相當(dāng)于一個代理,配置好以后,我們從手機 App 發(fā)送的請求會由 Fiddler 發(fā)送出去,服務(wù)器返回的信息也會由 Fiddler 中轉(zhuǎn)一次。所以通過 Fiddler 我們就可以看到 App 發(fā)給服務(wù)器的請求以及服務(wù)器的響應(yīng)了。 2.FiddlerPC端配置 我們安裝好 Fiddler 后,首先在菜單 Tool>Options>Https 下面的這兩個地方選上。 然后在 Connections 標(biāo)簽頁下面勾選上 Allow remote computers to connect,允許 Fiddler 接受其他設(shè)備的請求。 同時要記住這里的端口號,默認是 8888,到時候需要在手機端填。配置完畢,保存后,一定關(guān)掉 Fiddler 重新打開。 3.Fiddler手機端配置 首先按win R鍵輸入cmd打開,輸入命令ipconfig查看IP地址: 打開手機無線連接,選擇要連接的熱點。長按選擇修改網(wǎng)絡(luò),在代理中填上我們電腦的 IP 地址和 Fiddler 代理的端口。如下圖所示: 保存后,在手機默認瀏覽器(即手機自帶瀏覽器)中打開上文查詢到的ip地址http://192.168.0.106:8888(視自身情況而定)。 之后點擊上述藍色鏈接并安裝到手機就可以進一步的使用電腦代理監(jiān)控了。 二、今日頭條app抓包實戰(zhàn)1.源代碼獲取 首先我們在上述配置環(huán)境下打開手機今日頭條app,并搜索“疫情”: 之后可在Fildder中觀察到彈出諸多條目,通過查看和經(jīng)驗篩選發(fā)現(xiàn)帶有search的url即為我們所求,雙擊這條URL,可以進一步獲取到requests url和client(即我們的客戶端請求頭) 略微梳理一下就可以得到當(dāng)前請求的代碼: import requestsimport timefrom bs4 import BeautifulSoupimport pandas as pdimport jsonimport randomfrom requests.packages.urllib3.exceptions import InsecureRequestWarning
requests.packages.urllib3.disable_warnings(InsecureRequestWarning)
head = {'Accept': '*/*','Accept-Encoding': 'gzip,deflate','Accept-Language': 'zh-CN,en-US;q=0.8','User-Agent': 'Mozilla/5.0 (Linux; Android 7.0; HUAWEI CAZ-AL10 Build/HUAWEICAZ-AL10; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/56.0.2924.87 Mobile Safari/537.36 JsSdk/2 NewsArticle/7.0.1 NetType/wifi','X-Requested-With': 'com.ss.android.article.news'}
url = 'https://is-lq./search/?keyword=...'req = requests.get(url=url, headers=head,verify=False).json() 2.json提取 接下來我們的任務(wù)就在于分析響應(yīng)的json文件,通過req.keys()命令獲取鍵信息,注意查找,發(fā)現(xiàn)在key為scripts的value中包含文章的所有信息,而值為Javascript代碼字符串,因此通過Beautiful庫進行解析:
3.信息存儲 在相關(guān)文章信息提取完之后即可選擇信息存儲方式,我們通常采用json、csv、xlsx等格式進行存儲: def write2excel(result):
json_result = json.dumps(result) with open('article.json','w') as f:
f.write(json_result) with open('article.json','r') as f:data = f.read() data = json.loads(data)
df = pd.DataFrame(data,columns=['title','article_url','abstract','comment_count','source'])
df.to_excel('article.xlsx',index=False) 4.自動化爬蟲構(gòu)建 最后一步,也就是找到翻頁規(guī)律,完成自動化爬蟲構(gòu)建。我們在搜索出的結(jié)果頁依次用手向下滑動,發(fā)現(xiàn)繼續(xù)彈出search的url,觀察下圖: 觀察這些url,發(fā)現(xiàn)僅僅在offset這個參數(shù)有所區(qū)別,而且是10的倍數(shù),因此我們的翻頁循環(huán)代碼為:
三、爬蟲總結(jié)至此利用Fildder軟件結(jié)合python程序很容易的構(gòu)建了手機端app爬蟲程序,再通過此爬蟲總結(jié)一下:首先我們先安裝好Fildder軟件,并且同時配置好PC端和手機端代理,之后通過在手機上操作反饋到電腦端Fildder查看結(jié)果;進而通過Fildder抓包結(jié)果判斷請求具體參數(shù)和數(shù)據(jù)格式,之后對響應(yīng)的數(shù)據(jù)進行進一步的加工和存儲就ok了。結(jié)果如下: |
|