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参数一大堆,并且加密的有哪些还不太清楚,我试过直接照搬请求返回错误。。。 因此大家慢慢分析或者等我下篇文章吧

相关文章
相关标签/搜索