写爬虫时,有些数据pc端并不能提供我们需要的数据例如抖音,就需要对手机端数据进行抓取,目前来说比较常用的app抓包软件:Fiddler,mitmproxy,Charles,这些软件在进行数据抓包之前都需要进行相应的代理配置:下载,保证pc端跟手机端在同一个局域网内,证书下载,端口配置等。
利用Fiddler代理配置方法
首先在在官网将Fiddler下载,下载地址:http://www.telerik.com/fiddler;下载到本地之后,按正常的安装流程即可。安装后打开的页面如下:
Fiddler抓取Android/Iphone的数据包,第一步,要保证电脑端Fiddler手机端跟电脑端在同一局域网,在这种情况下才能够实现Fiddler抓取手机端的数据;同一局域网就是有两台或以上的设备连接,并拥有相同IP网段的网络,例如pc端跟手机端连接同一个wifi,或者说电脑开热点手机连接。
第二步,对Fiddler进行相关设置:打开【Fiddler -> Tools ->options】;然后选中【Connections】选项 ,图中设置手机端需要连接Fiddler的服务器端口(一般默认即可),下面对选项[【Allow remote computers to connect】 (允许远程发送请求)进行勾选。
打开【Fiddler -> Tools -> options】;选择HTTPS选项,勾选【Decrypt HTTPS traffic】 下面选择【from all process】选项,用来抓取手机端的https请求,如果想抓取https请求还需要在手机端安装安全证书。
第三步,手机端安装证书,先找到电脑的ip地址,在fiddler上方菜单栏里点击Online就能看到电脑的ip地址;用手机访问地址:http://IP地址:代理端口,点"FiddlerRoot certificate" 然后安装证书,例如:http://192.168.1.173:8888;有的手机在安装证书之前需要设置锁屏密码(例如小米),否则会安装不上。
接下来就是对对手机端的wifi修改代理设置;打开连接中的wifi,点记下面的代理切换到手动,以pc端的ip名为主机名,端口为Fiddler设置的端口进行填写,然后点击确定即可。
配置成功结果如下:
利用Charles代理配置方法
Charles官方下载地址:https://www.charlesproxy.com/;下载Charles,然后一键安装即可,下载后打开的页面如下,页面分为两种标签,一种是Structure,是按照域名进行区分;一种是Sequence,是按照访问时间先后进行排序:
先对Charles软件进行配置,打开客户端,点击菜单Proxy->Proxy Settings,设置服务器端口,自己也可以对端口进行修改,把下面【Enable transpaent HTTP proxing】勾选上为了是让Charles自己设置成代理服务器实现抓包,对于本地系统发出的访问请求都会被截取下来。如果只是用Charles对手机抓包,菜单上的Windows proxing 就不需要勾选,可以避免pc端访问请求数据的干扰。
跟Fiddle一样,需要把电脑端和手机端配置到同一局域网;在获取Charles端口之后,也需要得到电脑端的ip地址,电脑IP地址查询方式:windows+R 输入cmd卡开命令行,然后输入ipconfig,IPv4即为本机的IP地址。
更改手机端WiFi的代理及端口:
有些小伙伴可能在配置成功的时候,手机端会出现"wifi已连接,但无法访问互联网“的现象,这时候可以先把wifi代理先转换成【无】,然后wifi断连再重新连接,这时候WiFi可以正常使用之后再更改wifi的代理,更改主级名以及端口保存即可,这时候手机就可以正常访问网络了。
用win10的小伙伴们注意一下,在进行设置之前最好先把防火墙关闭,配置成功之后,Charles的页面就如下图:
避免抓取本地或者移动端http数据乱码或者失败,需要相应配置SSL证书,电脑端跟移动端都需要相应进行配置。
电脑端安装证书,打开Charles客户端,选择菜单【 "Help" -> "SSL Proxying" -> "Install Charles Root Certificate"】
按步骤进行安装即可;
在选择证书储存位置时,只要选【个人】即可,一般来说选择的是第二项。
然后配置SSL的抓取域名:选中【"Proxy"->"SSL Proxying Settings"】,启用【Enable SSL Proxying】选项,选择add选项,Charles的Location配置是支持通配符的,因此在Host设置一个"*"就可以用来表示所有域名,port不用写。
之后如果配置某一个指定域名的时候,这里的port可以设置为443即可,这样就可以抓到指定域名的数据;
手机端SSL证书安装,打开Charles客户端,点击【"Help"-> "SSL Proxying" ->"Install Charles Root Certificate on a Mobile Device or remote Browser"】,
会出现,如下页面,意思就是让你手机端设置一个代理:192.168.2.173:1111,就是要保证移动端与pc端在同一局域网,然后用手机端浏览器访问chls.pro/ssl:
下载成功后,需要手机端本地安装,这里以红米为例,小米手机安装安全证书时需要提前设置解锁密码,否则安装不了,以下就是安装流程:
安装完之后,就可以利用charles抓取手机端http的数据了。
mitmproxy收机抓包的相关配置
mitmproxy是一个支持HTTP和HTTPS的抓包程序,有类似Fiddler、Charles的功能,只不过它是一个控制台的形式操作。
mitmproxy还有两个关联组件。一个是mitmdump,它是mitmproxy的命令行接口,利用它我们可以对接Python脚本,用Python实现监听后的处理。另一个是mitmweb,它是一个Web程序,打开它是一个监视网页,我们可以很清楚地观察到mitmproxy捕获的请求。这里是以windows为实例来进行演示。
下载方式分为两种:一种是可以直接从官网中进行下载,网址:https://docs.mitmproxy.org/,另一种是借助于python安装包pip,利用pip install mitmproxy命令;下载完之后,找到mitmproxy的下载目录,把下载目录配置到系统的环境变量中,配置环境变量的教程网上有很多,可以自行学习;方便使用,我们可以借助命令行测试一下,看mitmproxy是否安装成功;windows不支持mitmproxy命令,但不影响,因为windows支持mitmdump和mitmweb命令。
这里可以能够直接获取得到mitmproxy的端口为8080,第二步跟Charles一样,确保手机端与电脑端在同一局域网,电脑端的IP地址获取方式与Charles中一样,配置成功后的mitmdump如下图:
与Charles一样,如果要通过mtmproxy抓取本地跟手机端的HTTP数据,则电脑端与手机端也需要安装相应的安全证书,安装方式与Charles中介绍的方式一样,证书的获取地址为在c盘存放mitmproxy地址:【C盘 -> 用户 -> 用户名 -> mitmproxy】 。