4种Python爬虫(4. 手机APP,如,乐刻运动)
目录:
1. PC网页爬虫
2. H5网页爬虫
3. 微信小程序爬虫
4. 手机APP爬虫
爬取乐刻运动手机APP的课表数据。Android和iOS都可以。
要制定具体方案,还是要从抓包分析开始。
如果你在前一章《三、微信小程序爬虫》中已经搭建好了Charles+iPhone的抓包环境,可以直接启动“乐刻APP”再来抓一波。
LefitAppium.py
LefitMitmAddon.py
接下来就是见证奇迹的时刻了!
可以看到左侧的手机已经自动跑起来了!
所有流过的数据都尽在掌握!
这个方案的适应能力非常强,不怕各种反爬虫机制。
但是如果要去爬取淘宝、携程等海量数据时,肯定也是力不从心。
如何利用安卓手机进行app里面的爬虫采集
火车头采集器是比较好的网站采集软件。 火车头采集器: 火车采集器已经成为国内使用人数最多、功能最完善、网站程序支持最全面、数据库支持最丰富的软件产品。 使用火车采集器,系统支持远程图片下载,图片批量水印,Flash下载,下载文件地址探测,自制作发表的cms模块参数,自定义发表的内容等。此外,丰富的规则制定,内容替换功能,对Access,Mysql,MSsql的数据入库导出的支持,更可令采集内容的时候得心应手。
如何爬取京东手机上万的商品数据,这个神器可以帮你
Charles是一个网络抓包工具,我们可以用它来做App的抓包分析,得到App运行过程中发生的所有网络请求和响应内容,这就和Web端浏览器的开发者工具Network部分看到的结果一致。
相比Fiddler来说,Charles的功能更强大,而且跨平台支持更好。所以我们选用Charles作为主要的移动端抓包工具,用于分析移动App的数据包,辅助完成App数据抓取工作。
一、本节目标
本节我们以京东App为例,通过Charles抓取App运行过程中的网络数据包,然后查看具体的Request和Response内容,以此来了解Charles的用法。
二、准备工作
请确保已经正确安装Charles并开启了代理服务,手机和Charles处于同一个局域网下,Charles代理和CharlesCA证书设置好。
三、原理
首先Charles运行在自己的PC上,Charles运行的时候会在PC的8888端口开启一个代理服务,这个服务实际上是一个HTTP/HTTPS的代理。
确保手机和PC在同一个局域网内,我们可以使用手机模拟器通过虚拟网络连接,也可以使用手机真机和PC通过无线网络连接。
设置手机代理为Charles的代理地址,这样手机访问互联网的数据包就会流经Charles,Charles再转发这些数据包到真实的服务器,服务器返回的数据包再由Charles转发回手机,Charles就起到中间人的作用,所有流量包都可以捕捉到,因此所有HTTP请求和响应都可以捕获到。同时Charles还有权力对请求和响应进行修改。
四、抓包
初始状态下Charles的运行界面如下图所示。
Charles会一直监听PC和手机发生的网络数据包,捕获到的数据包就会显示在左侧,随着时间的推移,捕获的数据包越来越多,左侧列表的内容也会越来越多。
可以看到,图中左侧显示了Charles抓取到的请求站点,我们点击任意一个条目便可以查看对应请求的详细信息,其中包括Request、Response等内容。
接下来清空Charles的抓取结果,点击左侧的扫帚按钮即可清空当前捕获到的所有请求。然后点击第二个监听按钮,确保监听按钮是打开的,这表示Charles正在监听App的网络数据流,如下图所示。
这时打开手机京东,注意一定要提前设置好Charles的代理并配置好CA证书,否则没有效果。
打开任意一个商品,如iPhone,然后打开它的商品评论页面,如下图示。
不断上拉加载评论,可以看到Charles捕获到这个过程中京东App内发生的所有网络请求,如下图所示。
左侧列表中会出现一个api.m.jd.com链接,而且它在不停闪动,很可能就是当前App发出的获取评论数据的请求被Charles捕获到了。我们点击将其展开,继续上拉刷新评论。随着上拉的进行,此处又会出现一个个网络请求记录,这时新出现的数据包请求确定就是获取评论的请求。
为了验证其正确性,我们点击查看其中一个条目的详情信息。切换到Contents选项卡,这时我们发现一些JSON数据,核对一下结果,结果有commentData字段,其内容和我们在App中看到的评论内容一致,如下图所示。
这时可以确定,此请求对应的接口就是获取商品评论的接口。这样我们就成功捕获到了在上拉刷新的过程中发生的请求和响应内容。
五、分析
现在分析一下这个请求和响应的详细信息。首先可以回到Overview选项卡,上方显示了请求的接口URL,接着是响应状态Status Code、请求方式Method等,如下图所示。
这个结果和原本在Web端用浏览器开发者工具内捕获到的结果形式是类似的。
接下来点击Contents选项卡,查看该请求和响应的详情信息。
上半部分显示的是Request的信息,下半部分显示的是Response的信息。比如针对Reqeust,我们切换到Headers选项卡即可看到该Request的Headers信息,针对Response,我们切换到JSON TEXT选项卡即可看到该Response的Body信息,并且该内容已经被格式化,如下图所示。
由于这个请求是POST请求,我们还需要关心POST的表单信息,切换到Form选项卡即可查看,如下图所示。
这样我们就成功抓取App中的评论接口的请求和响应,并且可以查看Response返回的JSON数据。
至于其他App,我们同样可以使用这样的方式来分析。如果我们可以直接分析得到请求的URL和参数的规律,直接用程序模拟即可批量抓取。
六、重发
Charles还有一个强大功能,它可以将捕获到的请求加以修改并发送修改后的请求。点击上方的修改按钮,左侧列表就多了一个以编辑图标为开头的链接,这就代表此链接对应的请求正在被我们修改,如下图所示。
我们可以将Form中的某个字段移除,比如这里将partner字段移除,然后点击Remove。这时我们已经对原来请求携带的Form Data做了修改,然后点击下方的Execute按钮即可执行修改后的请求,如下图所示。
可以发现左侧列表再次出现了接口的请求结果,内容仍然不变,如下图所示。
删除Form表单中的partner字段并没有带来什么影响,所以这个字段是无关紧要的。
有了这个功能,我们就可以方便地使用Charles来做调试,可以通过修改参数、接口等来测试不同请求的响应状态,就可以知道哪些参数是必要的哪些是不必要的,以及参数分别有什么规律,最后得到一个最简单的接口和参数形式以供程序模拟调用使用。
七、结语
以上内容便是通过Charles抓包分析App请求的过程。通过Charles,我们成功抓取App中流经的网络数据包,捕获原始的数据,还可以修改原始请求和重新发起修改后的请求进行接口测试。
知道了请求和响应的具体信息,如果我们可以分析得到请求的URL和参数的规律,直接用程序模拟即可批量抓取!
手机爬虫非常有意思,而且可以爬取的数据非常多,当然还有很多东西要学。以后我也会写一些实战的有趣案例给大家。
4种Python爬虫(3. 微信小程序,如,超级猩猩)
目录:
1. PC网页爬虫
2. H5网页爬虫
3. 微信小程序爬虫
4. 手机APP爬虫
爬取超级猩猩的课表,该平台仅提供了微信小程序这一个途径,前面两种针对html网页的爬取方式都不再适用。
采用抓包分析是我们制定方案的第一步。
我用的Mac电脑,fiddler只有一个简化版,所以另找了Charles这个类似的软件。启动Charles的代理,在手机WIFI中设置好对应的代理就可以开抓了。但是,抓到的https包的内容都是乱码,咋办?
Charles中提供了ssl证书,在手机端安装证书即可。推荐使用iPhone,直接安装描述文件即可。Android手机必须使用系统版本在7.0以下的才行,7.0以上还需要反编译什么的,太麻烦了。
很容易的定位到了超级猩猩微信小程序载入课表的后台接口。拿这个URL在浏览器里访问试试,直接返回了json结果!超级猩猩很友好!
提取对应的URL,放到浏览器中验证,也可以支持返回json包,剩下就是分析一下这个json的数据结构,按照需要的方式导出了。
直接通过接口的爬取效率非常高,几秒钟就拉取了全国各个门店的排课,相当舒心。(下图的录屏没有进行加速)
最后一个挑战就是对只有Android/iOS的APP端应用数据的爬取。请看下一章
请点击: 下一页
如何进行手机APP的数据爬取?
Python爬虫手机的步骤:
1. 下载fiddler抓包工具
2. 设置fiddler
这里有两点需要说明一下。
设置允许抓取HTTPS信息包
操作很简单,打开下载好的fiddler,找到 Tools - Options,然后再HTTPS的工具栏下勾选Decrpt HTTPS traffic,在新弹出的选项栏下勾选Ignore server certificate errors。
设置允许外部设备发送HTTP/HTTPS到fiddler
相同的,在Connections选项栏下勾选Allow remote computers to connect,并记住上面的端口号8888,后面会使用到。
好了,需要的fiddler设置就配置完成了。
3. 设置手机端
设置手机端之前,我们需要记住一点:电脑和手机需要在同一个网络下进行操作。
可以使用wifi或者手机热点等来完成。
假如你已经让电脑和手机处于同一个网络下了,这时候我们需要知道此网络的ip地址,可以在命令行输入ipconfig简单的获得,如图。
好了,下面我们开始手机端的设置。
手机APP的抓取操作对于Android和Apple系统都可用,博主使用的苹果系统,在此以苹果系统为例。
进入到手机wifi的设置界面,选择当前连接网络的更多信息,在苹果中是一个叹号。然后在最下面你会看到HTTP代理的选项,点击进入。
进入后,填写上面记住的ip地址和端口号,确定保存。
4. 下载fiddler安全证书
在手机上打开浏览器输入一个上面ip地址和端口号组成的url:,然后点击FiddlerRoot certificate下载fiddler证书。
以上就简单完成了所有的操作,最后我们测试一下是否好用。
5. 手机端测试
就以知乎APP为例,在手机上打开 知乎APP。下面是电脑上fiddler的抓包结果。
结果没有问题,抓到信息包。然后就可以使用我们分析网页的方法来进行后续的操作了。
mitmproxy安装与安卓模拟器的配合使用-手机APP爬虫
参考链接:
介绍一款爬虫辅助工具mitmproxy ,mitmproxy 就是用于MITM的proxy,MITM中间人攻击。说白了就是服务器和客户机中间通讯多增加了一层。跟Fiddler和Charles最大的不同就是,mitmproxy可以进行二次开发,尤其可以对接python。
mitmproxy一般用于开发或者测试,用在爬虫辅助也是极好的。
github地址:
官网地址:
进入CMD窗口,Python3执行
安装完成后,系统将拥有 mitmproxy、mitmdump、mitmweb 三个命令,由于 mitmproxy 命令不支持在 windows 系统中运行。
控制台运行
输出
同时打开你的默认浏览器
这是完毕,在随便访问一个网站,例如百度,一股似曾相识的感觉铺面而来,这就是网页版的Fiddler
接下来关闭所有 Chrome 窗口,否则命令行启动时的附加参数将失效。打开 cmd,执行:
前面那一长串是 Chrome 的的安装路径,应当根据系统实际情况修改,后面两参数设置了代理地址并强制忽略掉证书错误。
当我们初次运行mitmproxy或mitmdump时,
会在当前目录下生成 ~/.mitmproxy文件夹,其中该文件下包含4个文件,这就是我们要的证书了。
windows上安装证书很简单,双击.p12结尾的证书文件即可。 安卓手机需要将对应的文件发送到手机文件,进行安装。
在windows平台下一般使用mitmdump 控制台运行 mitmdump,出现如下结果
打开模拟器,跟fiddler和Charles的配置其实是非常类似的
上述文章内容就是对手机爬虫app和手机爬虫数据抓取软件的详细解答,希望能够帮助到大家;如有其他更多疑问请关注华展网。
标签: 手机爬虫app