Fiddler iOS https抓包加爬虫

来源:互联网 发布:淘宝买家秀大尺度网站 编辑:程序博客网 时间:2024/05/21 06:45

在爬取B2B网站企业联系方式之后,老板又突发奇想要抓取竞争对手手机APP中显示的客户信息,于是乎,对于手机抓包、APP爬虫一无所知的我开始了艰难的探(百)索(度)之路,最终成功拿到两家竞争对手APP中的客户列表。如果你也想爬取某个APP,这篇文章或许能帮到你。

各类问答平台、博客网站的前辈们分享的经验固然丰富,却不一定是在同样的环境(譬如系统版本)下做出来的,因此借鉴的意义也比较有限,总之大家都是摸着石头过河。

 

系统:Win10

Fiddler:V4.6

手机:iOS 10.3.3


第一步:设置Fiddler与手机

关于Fiddler的下载,安装,与手机端HTTP代理的设置,随便百度“手机APP抓包”就能出来一堆非常相似的文章。譬如这篇讲得很详细:使用Fiddler进行iOS APP的HTTP/HTTPS抓包

不过其中可能遇到的最大困难就是HTTPS的截取,作为新手的我,真是吃尽了苦头。在百度过N篇文章后,我总结了以下几个步骤(这里假设你已经按照上述博客指导流程走了一遍):

1、打开Fiddler,点击工具栏中Tools,选择Options,选择其中HTTPS一栏,右上角Actions点开有一个选项叫做Reset All Certificates,点击就相当于将所有fiddler的证书删除并重新下载,其间会有很多窗口弹出,基本上都是选择Yes或者Trust就可以搞定了。


这时尝试在浏览器中打开百度,由于百度首页也是HTTPS协议,因此可以检验我们是否设定好PC端的证书。如果你看到的是如下图,说明OK了:



2、如果你打开手机上的Safari,进入百度主页,页面却没有加载,反而给出错误提示:浏览器无法建立与服务器的安全连接,那就说明手机端的证书没有搞定了。这时简单粗暴的方法就是删除手机上的Fiddler证书,按照上述博客中的方法再下载安装一次。注意:在iOS 10.3.3 中即使安装证书也不会默认启用,需要在“设置 –> 通用 –> 关于本机 –> 证书信息设置”中开启Fiddler证书。如下图:


感谢在这个问题下的答主:链接

这时尝试在微信中打开公众号文章,如果能正常加载并截取HTTPS说明手机端的证书也搞定了。如下图:



3、如果PC或者手机刚刚升级,或者Fiddler版本更新,这时出现HTTPS无法正常抓包情况,可以简单粗暴将1、2再做一次。

如果有些APP依然无法正常加载,譬如饿了么,大概是因为APP开发者本身运用证书锁定技术,防止类似Fiddler这样的中间人代理。



第二步:截取,查看,分析请求

设置好之后打开你想爬取的APP,进入包含你所需要的信息的界面(对我而言,所有客户的列表页),由于客户端要向服务器请求信息,会产生GET或者POST请求,而服务器也会有相应的Response。如下图:


右下角是Response的区域,可以看到我们想要的客户信息就在服务器传回来的JSON文件中,companyName很明显就是公司名称,而industry就是客户公司所在的行业。

接下来的任务就是用脚本模拟这条请求,产生一系列的请求获取所有公司的信息。于是我操作APP下拉列表,试图截取第二条类似的请求,以寻找规律。

结果发现,第二次请求返回的公司列表与第一次不同(废话),但是它们的请求头(包括url)几乎完全一样。这种情况与网页版百度地图搜索请求一模一样,因为请求除了头,还带上了一个表格,这个表格中的内容告诉服务器应该给什么Response。点击Inspectors下面的WebForms,如下图:


第三部:用Python request 库批量发送请求,解析JSON文件

观察到第一页请求skip的值为0,第二页请求skip的值为1,以此类推,将WebForms中的表格内容以Python数据类型的“字典”形式,传给requests函数中的data参数。

 

彩蛋:对于有些安全措施不严密的APP,Fiddler甚至可以截取到服务器发送给客户端的正确验证码的明文,若这个APP只需手机验证码正确即可登录,则攻击者一旦知道某一用户的注册手机号,就可以登录他/她的账号为所欲为。

 

原创粉丝点击