最近接到了公司派的一个任务,让我登上了腾讯新闻app的热点名单。
这个热点新闻每10分钟更新一次,所以必须每10分钟爬过去保存一次。
最简单的办法就是找电脑网页版,但是翻遍所有网站也没有找到这个接口,所以只好乖乖地从手机端爬了。
手机端数据接口参数分析是一件很难的事,我们可以绕过此过程,在APP数据交换的过程通过mitmproxy工具将返回的数据拦截下来。
这种方法的优点就是简便,分析接口参数,缺点是需要一台手机,不停地进行数据请求,速度相对较慢,但是对此次爬取来说足够了。为了节省1部手机,我想到了爬取手机模拟器端APP数据。
下面一起来看看我是怎么实现的吧
第一步:安装Charles、appium、mitmdump和夜神手机模拟器
1.安装charles
Charles是一款代理服务器,通过过将自己设置成系统(电脑或者浏览器)的网络访问代理服务器,然后截取请求和请求结果达到分析抓包的目的。
①下载:
下载完成后,点击安装,一路默认安装即可。
②设置代理
③安装证书
依次点击帮助——ssl代理——安装charles root证书
点击确定,电脑端证书就安装完成了
再依次点击帮助——ssl代理——在移动设备或远程浏览器上安装charles root证书
然后在模拟器浏览器中输入c,会自动下载手机端证书并安装。
2.安装appium
依次安装Adroid SDK、JAVA和appium客户端即可
3.安装mitmproxy
mitmproxy是一个支持http和https的抓包程序,类似Fiddler、Cha,只不过它可以对接python1脚本。
①只需执行如下命令即可安装:Pip install mitmproxy
②证书配置:在命令行输入mitmdump,然后在用户目录找到CA证书
双击mi,在电脑上安装证书,然后将mi发送到模拟器上,在手机设置-安全-从SD卡安装,选中此文件,安装即可。
4.安装夜神手机模拟器
安装地址
一直默认安装即可
第二步:用Charles分析出腾讯app热点新闻数据接口
首先设置模拟手机代理ip,长按WireSSID,点击修改网络
设置好代理ip,保存即可。
打开模拟器腾讯新闻APP,进入今日热搜界面,然后在charles中找到该接口
它的url信息为
将该url在浏览器中打开
该url看起来是比较复杂的,但是今天我们不去分析它,按照上述所说的方法抓取数据。
第三步:用mitmdump抓包,保存热点新闻数据
首先设置代理ip,步骤同第二步,不过要把端口设置为8080
然后编写python脚本抓取第二步的接口
有两种数据流方式,一种是相应数据response,一种是请求数据request,本次用response,flow代表数据流
为了筛选新闻热点的数据流,根据第二步url的固定部分判断该数据流是否是我们要的url,如果是,则保存,用json解析保存到表格内,至此脚本编写完毕。在脚本所在路径输入mitmdump -s demo.py
然后在模拟器中打开腾讯新闻今日热搜界面
再看看表格中保存的数据
第四步:用appium控制手机模拟器定时启动腾讯新闻APP
第三步中是手动点击查看热点榜,因为此热点信息是10分钟更更新1次
所以我们需要用appium写个脚本,模拟循环进行此过程,同时mitmproxy脚本会截取最新的数据
但是现在还是没法打开模拟器里的腾讯新闻app,因为模拟器还未连接到主机,还需要在夜神模拟器所在安装目录bin路径下运行以下代码
再检测一下
小结:app的爬取是爬虫最难的部分,涉及很多复杂的逆向分析过程,这次只是借助模拟器介绍了1个非常简单的app爬取过程,有兴趣的朋友可以借此深入学习一下。
1.文章《s-demo怎么用?总结很全面速看!通过手机模拟器爬腾讯新闻APP数据》援引自互联网,为网友投稿收集整理,仅供学习和研究使用,内容仅代表作者本人观点,与本网站无关,侵删请点击页脚联系方式。
2.文章《s-demo怎么用?总结很全面速看!通过手机模拟器爬腾讯新闻APP数据》仅供读者参考,本网站未对该内容进行证实,对其原创性、真实性、完整性、及时性不作任何保证。
相关推荐
- . 现代买票为什么带上携程保险
- . 潮阳怎么去广州南站
- . 湖南马拉河怎么样
- . 烧纸为什么到三岔路口
- . 百色为什么这么热
- . 神州租车怎么样
- . 芜湖方特哪个适合儿童
- . 护肤品保养液是什么类目
- . 早晚的护肤保养有哪些项目
- . 女孩护肤品怎么保养的最好