通过手机模拟器爬腾讯新闻APP数据

最近接到公司派的1个任务,让我爬取腾讯新闻app的热点榜

此热点新闻每10分钟更新1次,所以需要每隔10分钟爬取一次,然后保存下来。最简单的办法就是找电脑网页版,但是翻遍所有网站也没有找到这个接口,所以只好乖乖地从手机端爬了。

手机端数据接口参数分析是一件很难的事,我们可以绕过此过程,在APP数据交换的过程通过mitmproxy工具将返回的数据拦截下来。

这种方法的优点就是简便,分析接口参数,缺点是需要一台手机,不停地进行数据请求,速度相对较慢,但是对此次爬取来说足够了。为了节省1部手机,我想到了爬取手机模拟器端APP数据。

下面一起来看看我是怎么实现的吧

第一步:安装charles、appium、mitmdump和夜神手机模拟器

1.安装charles

Charles是一款代理服务器,通过过将自己设置成系统(电脑或者浏览器)的网络访问代理服务器,然后截取请求和请求结果达到分析抓包的目的。

①下载:https://www.charlesproxy.com/latest-release/download.do

下载完成后,点击安装,一路默认安装即可。

②设置代理

③安装证书

依次点击帮助——ssl代理——安装charles root证书

点击确定,电脑端证书就安装完成了

再依次点击帮助——ssl代理——在移动设备或远程浏览器上安装charles root证书

然后在模拟器浏览器中输入chls.pro/ssl,会自动下载手机端证书并安装。

2.安装appium

依次安装Adroid SDK、JAVA和appium客户端即可

3.安装mitmproxy

mitmproxy是一个支持http和https的抓包程序,类似Fiddler、Cha,只不过它可以对接python1脚本。

①只需执行如下命令即可安装:Pip install mitmproxy

②证书配置:在命令行输入mitmdump,然后在用户目录找到CA证书

双击mitmproxy-ca-cert.p12,在电脑上安装证书,然后将mitmproxy-ca-cert.pem发送到模拟器上,在手机设置-安全-从SD卡安装,选中此文件,安装即可。

4.安装夜神手机模拟器

安装地址

http://soft.onlinedown.net/soft/987318.html

一直默认安装即可

第二步:用Charles分析出腾讯app热点新闻数据接口

首先设置模拟手机代理ip,长按WireSSID,点击修改网络

设置好代理ip,保存即可。

打开模拟器腾讯新闻APP,进入今日热搜界面,然后在charles中找到该接口

它的url信息为

将该url在浏览器中打开

该url看起来是比较复杂的,但是今天我们不去分析它,按照上述所说的方法抓取数据。

第三步:用mitmdump抓包,保存热点新闻数据

首先设置代理ip,步骤同第二步,不过要把端口设置为8080

然后编写python脚本抓取第二步的接口

有两种数据流方式,一种是相应数据response,一种是请求数据request,本次用response,flow代表数据流

为了筛选新闻热点的数据流,根据第二步url的固定部分判断该数据流是否是我们要的url,如果是,则保存flow.request.text,用json解析保存到表格内,至此脚本编写完毕。在脚本所在路径裕兴mitmdump -s demo.py

然后在模拟器中打开腾讯新闻今日热搜界面

再看看表格中保存的数据

第四步:用appium控制手机模拟器定时启动腾讯新闻APP

第三步中是手动点击查看热点榜,因为此热点信息是10分钟更更新1次

所以我们需要用appium写个脚本,模拟循环进行此过程,同时mitmproxy脚本会截取最新的数据

但是现在还是没法打开模拟器里的腾讯新闻app,因为模拟器还未连接到主机,还需要在夜神模拟器所在安装目录bin路径下运行以下代码

再检测一下

这就算连接成功了,再运行appium脚本就ok了,展示视频如下

正常情况应该是每隔10分钟点击1次才能爬到最新数据,此视频为了展示效果缩短了时间间隔。

小结:app的爬取是爬虫最难的部分,涉及很多复杂的逆向分析过程,这次只是借助模拟器介绍了1个非常简单的app爬取过程,有兴趣的朋友可以借此深入学习一下。

https://mp.weixin.qq.com/mp/profile_ext?action=home&__biz=MzA3NDQwNzI0NA==&scene=124#wechat_redirect

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容