
最近收到公司的任务,让我抓取腾讯新闻应用程序的热门列表
此热门新闻每10分钟更新一次,因此需要每10分钟进行抓取,然后保存一次. 最简单的方法是找到计算机的Web版本,但是我没有在所有网站上都找到此界面,因此我不得不乖乖地从手机上爬网.
分析手机数据接口的参数非常困难. 在APP数据交换过程中,我们可以绕过此过程并通过mitmproxy工具拦截返回的数据.
此方法的优点是易于分析接口参数. 缺点是需要手机连续请求数据. 速度相对较慢手机模拟器自动读新闻,但足以进行此爬网. 为了保存1部手机,我想到了抓取手机模拟器的APP数据.
让我们看看我是如何实现的
第一步: 安装查尔斯,阿皮姆,mitmdump和Night God手机模拟器
1. 安装查尔斯
Charles是代理服务器. 它通过设置为系统(计算机或浏览器)的网络访问代理服务器,然后拦截请求和请求结果以分析和捕获数据包.
①下载:
下载完成后,单击“安装”,并且默认安装是全部.
②设置代理
③安装证书

点击turn-ssl代理安装Charles根证书中的帮助
单击“确定”,已安装计算机证书
单击turn-ssl代理中的帮助,将查尔斯根证书安装在移动设备或远程浏览器上
然后在模拟器浏览器中输入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. 安装夜神手机模拟器
安装地址
始终默认安装
步骤2: 使用Charles分析腾讯应用程序的热点新闻数据界面
首先设置模拟的手机代理IP,长按WireSSID,单击以修改网络
设置代理IP并保存.
打开模拟器腾讯新闻APP,进入今天的热门搜索界面,然后在查尔斯中找到该界面
其网址信息为
在浏览器中打开网址

URL看起来很复杂,但是今天我们将不再分析它并如上所述获取数据.
第3步: 使用mitmdump捕获数据包并保存热点新闻数据
首先设置代理ip,步骤与第二步相同,但是将端口设置为8080
然后编写一个python脚本以获取第二步界面
数据流方法有两种,一种是对应的数据响应,另一种是请求数据请求,这一次使用响应,流代表数据流
为了过滤新闻热点的数据流,请根据第二步url的固定部分,确定数据流是否为我们想要的url. 如果是,请保存flow.request.text,使用json对其进行解析并将其保存在表中. 脚本已编写. 在脚本所在的路径中,Yuxing mitmdump -s demo.py
然后在模拟器中打开“腾讯新闻今日搜索”界面
再次查看表中保存的数据

第四步: 使用appium控制手机模拟器定期启动腾讯新闻APP
第三步是手动单击以查看热点列表,因为此热点信息每10分钟更新一次
因此,我们需要编写一个带有appium的脚本来周期性地模拟此过程手机模拟器自动读新闻,同时mitmproxy脚本将拦截最新数据
但是仍然无法在模拟器中打开腾讯新闻应用程序,因为该模拟器尚未连接到主机,您仍然需要在安装目录的bin路径中运行以下代码,模拟器位于
再次检查
即使连接成功,也可以运行appium脚本,一切正常,视频如下
通常情况是,您应每10分钟单击一次以爬到最新数据. 该视频缩短了时间间隔以显示效果.
摘要: 抓取应用程序是抓取工具中最困难的部分,涉及许多复杂的反向分析过程. 这次,我只是在模拟器的帮助下介绍了一个非常简单的应用爬网过程. 有兴趣的朋友可以对此进行深入了解.
; __ biz = MzA3NDQwNzI0NA ==&scene = 124#wechat_redirect
本文来自电脑杂谈,转载请注明本文网址:
https://www.pc-fly.com/a/shouji/article-267542-1.html
而日本每年添置数艘先进战舰
想骗钱么就明说了
面对在叙利亚的战绩
不行就是不行