Python 爬蟲 - MT(一)

前言

博客:bloghtml

分析

一、Charles抓包

一開始爬 mtwm 我是直接Charles上手就乾的,但我抓了一天都沒抓到有用的數據我就開始找資料,遺憾的是網上沒有一篇關於 mtwm APP 抓包分析的文章,我是真的一篇都沒看到(這裏指的是移動app,不是網頁)linux

不過好在在我查找資料的過程也並不是無任何收穫,我得知mt使用了一種叫 "移動長鏈接" 的技術致使我抓不到包;shell

接着我在網上找了關於該名詞的解釋以及mt發表的一篇文章:移動網絡優化實踐,用我所理解的話來講就是: 打開APP的時候移動端和服務器創建起tcp鏈接後,這個鏈接就不斷開了,後續的請求和接收都走該通道,這個tcp長鏈接通常都是會使用自定義的協議,而非http,全部普通的抓包軟件都沒法抓到這類請求(若有誤請指正)vim

二、長鏈接分析

文章裏有這麼一段: 「當TCP通道沒法創建或者發生故障時,可使用UDP面向無鏈接的特性提供另外一條請求通道,或者繞過代理長連服務器之間向業務服務器發起HTTP公網請求」服務器

也就是說,mt爲了以防萬一提供了降級方案,正是由於這個方案給了咱們機會,既然tcp通道發生故障會切換到http請求,那麼只要讓這個條件成立就行了。這個能夠經過屏蔽ip實現,隨即有了一個新問題,怎麼找到這個ip。

首先移動端長鏈接與服務器的通訊確定是TCP協議;而後因爲是長鏈接,那麼移動端確定不會輕易的去斷開這個鏈接,也就是不會發送fin包,有了這兩個特徵就能夠開始篩選ip了。網絡

三、ip篩選

PC端

pc端的話用 wireshark 就完事了;app

首先打開模擬器,而後打開wireshark,選擇網卡就開始抓包了,而後打開mtApp,搜索一個關鍵字;tcp

首先你搜索一個關鍵字確定會獲得不少結果,那麼就能夠判定返回的數據包應該比較大,並且根據上圖還能夠知道是加密過的,那麼就很好找了,我這裏找到了 優化

接着就是屏蔽它了,Linux直接用iptables就行,我沒linux但我能夠提供命令:加密

iptable -A INPUT -s ***.**.***.181 -j DROP #屏蔽
iptable -D INPUT -s ***.**.***.181 -j DROP #解除屏蔽
複製代碼

這命令能夠在安卓上直接生效,linux可能須要 service iptables save 來生效

Mac下沒有iptables能夠用 pfctl,首先寫規則

sudo vim /etc/pf.conf
複製代碼

而後使其生效

sudo pfctl -evf /etc/pf.conf
複製代碼

接着就能夠直接用 Charles 抓包了

Android

接下來我要說的是 Android 上,我抓mt是爲了寫爬蟲,我在電腦上抓到了請求的鏈接但那些參數加密我須要hook,因此不得不在手機上弄,因此我就須要在手機上屏蔽ip。我先說在手機上抓長鏈接ip,目前手機上能抓tcp的除了tcpdump之外好像就只有 httpcanary 了,主要是它能顯示請求的協議;

找到ip後屏蔽便可,而後再次請求

其中有一條80多k的請求,並且這個host以前沒見過,點進去看response就得知成功了

最後

就算你抓到了也沒用,請求、POST參數一大堆,並且加密的有哪些還不太清楚,我試過直接照搬請求返回錯誤。。。 因此大家慢慢分析或者等我下篇文章吧

相關文章
相關標籤/搜索