怀念夏天 发表于 2024-8-24 23:17:06

移动端爬虫学习记录

免责声明

        本文旨在探讨移动端爬虫技术的应用和挑衅,仅供教育和研究用途。请确保在合法合规的框架内利用爬虫技术,遵照相关法律法规和网站的利用条款。作者不对因利用本文内容而产生的任何法律或安全题目承担责任。

1、初识移动端爬虫

学习移动端爬虫的缘故原由:
①、随机互联网的发展,数据不但仅只是存在于PC端。移动端的数据在这几年的占比以及势头发展趋势出现多少倍数的增长。对于做数据分析、用户画像、市场调研来说仅仅参考PC端的数据是远远不敷的。
②、部分网站的web端难爬取数据,反而APP的反爬措施更简单,甚至没有反爬。

移动端爬虫的原理:
App 中的页面要加载出来,起首须要获取数据,而这些数据一般是通过哀求服务器的接口来获取,由于 App 没有欣赏器这种可以比较直观地看到背景哀求的开辟者工具,所以主要用一些抓包技术来抓取数据。

2、移动端工具的安装

概述:既然要学习移动端爬虫,就须要移动端,我们可以接纳真实手机或模仿器,由于修改体系可能会导致手机无法正常利用,所以本文所有操纵都基于捏造机举行。
网上有很多捏造手机软件:夜神模仿器、雷电模仿器、网易MuMu模仿器、清闲模仿器等等...可以选择的任意一种(推荐野神模仿器,它的模仿器助手可以多开而且创建指定版本的android)。
https://i-blog.csdnimg.cn/direct/0020ce619efa4e639988df809bc80615.png

3、抓包工具的安装与配置

概述:Fiddler是一个http协议调试代理工具,它可以大概记录并检查所有的电脑和互联网之间的http通讯,设置断点,检察所有的进出Fiddler的数据(cookie,html,js,css等文件),而且Fiddler 要比其他的网络调试器要更加简单,因为它不但仅暴露http通讯还提供了一个用户友好的格式。
3.1、Fiddler安装

①.起首进入官网下载:Download Fiddler Web Debugging Tool for Free by Telerik
留意:国家一定要选China,其他题目随便。
https://i-blog.csdnimg.cn/direct/07112bc540534bc9937a75aab6978d30.jpeg
下载后的界面如下:
https://i-blog.csdnimg.cn/direct/7262246be4b24a92a8351ffecd2de4f3.png
②、下载完成后双击打开举行安装;
③、安装时无脑下一步即可(可以更改一下安装位置),安装完成后会跳转到如下界面:
https://i-blog.csdnimg.cn/direct/2fa8cc9598cd40f686c12db636fc91fd.png

3.2、配置Fiddler

①、安装好后启动Fiddler(可以在开始菜单中找到);
②、打开配置菜单:
https://i-blog.csdnimg.cn/direct/746aca1c7c074bb3911692b477d7c1cb.jpeg
③、勾选https并勾选忽略错误:
概述:Fiddler默认只抓取http协议的哀求,须要修改配置实现抓取https协议的哀求,须要手动勾选Decypt HTTPS traffic,勾选后会有证书安装的窗口弹出,都选择YES。
https://i-blog.csdnimg.cn/direct/cd3f04ac69d5496db0111cda737ef560.jpeg
④、勾选允许远程连接:
https://i-blog.csdnimg.cn/direct/49e2ffb0222543cda05d1b916d6113c8.jpeg

4、抓包配置

概述:在前面的章节中已经预备好了模仿器和Fiddler抓包工具,但是Fiddler抓包工具并不能抓到模仿器的哀求,本章节主要解决Fiddler抓包工具无法抓取模仿器哀求的题目及题目解决后出现的安全证书题目。
4.1、获取主机IPv4地址

概述:电脑打开cmd(下令提示符),输入如下下令获取本机的IPV4地址(留意区分,不要拿到捏造机的地址):
ipconfig 参考图片如下:
https://i-blog.csdnimg.cn/direct/08968553f54348dd8ce39c4211dbc587.jpeg
为防个人隐私泄露,假设该IPv4地址为192.168.1.2,后面将用该地址举例,大家将其替换成自己的IPv4地址即可。


4.2、验证IPv4地址

概述:验证IPv4地址(要提前打开Fiddler),在欣赏器地址栏参考如下地址输入自己的地址:
# 这里的8888就是配置Fiddler是设置的端口号,如果你在配置Fiddler时修改了端口号,需要将端口号替换
# 记得将IP地址替换成自己的IPv4地址
192.168.1.2:8888 打开如下地址就是精确的:
https://i-blog.csdnimg.cn/direct/c3cf598d73c74471afa84c4ba0506d21.jpeg

4.3、设置模仿器代理

流程:起首打开夜神模仿器 > 点击工具文件夹 > 点击设置 > 点击WLAN > 长按已连接的WLAN > 点击修改网络 > 点击高级选项右侧的向下箭头 > 点击代理右侧的向下三角 > 点击手动 > 填入主机IPv4的地址和Fiddler设置的端标语 > 点击生存。(具体流程可参考下图)
https://i-blog.csdnimg.cn/direct/3f5526f92a704009bace683d564120cd.jpeg
https://i-blog.csdnimg.cn/direct/af4ff6b749c64ffd97e9609378c3db6f.jpeg
https://i-blog.csdnimg.cn/direct/793edaf25d8345ed84929419c7ccde40.jpeg
https://i-blog.csdnimg.cn/direct/66ddf69331ce47708ff3d9b3324ec59a.jpeg
https://i-blog.csdnimg.cn/direct/ca4a621b4c3d4da798dbe88c3af695c5.jpeg
https://i-blog.csdnimg.cn/direct/e61521e0e17740ac88084ce7ad52c2a2.jpeg
至此,模仿器代理就设置完成了。
4.4、解决android7.0版本以下的安全告诫


概述:当我们进入模仿器的欣赏器进入任意https开头的网址都会弹出安全告诫,如下图:
https://i-blog.csdnimg.cn/direct/77e28ceb54a14868b3ffcc11e3623b9b.png
在欣赏器中的地址栏参考如下地址输入:
# 记得替换成自己的IP地址
192.168.1.2:8888 进入该界面后点击下载证书:
https://i-blog.csdnimg.cn/direct/a51c3948cdd24cbf8ae972e61364412c.jpeg
接下来安装证书:
https://i-blog.csdnimg.cn/direct/2d0b266508eb42a7b3c1ea1eae7c94a9.jpeg
https://i-blog.csdnimg.cn/direct/f93619bb193f4d69ba60a23b0b9d5339.jpeg
接下来设置暗码:
https://i-blog.csdnimg.cn/direct/1083666bfbdc46b4a19b78101a0eb5e3.jpeg
https://i-blog.csdnimg.cn/direct/28d62a93de2946fb944e155144f43af8.jpeg
https://i-blog.csdnimg.cn/direct/1c5f184b55fe4c9abae6ecb4c741ef13.jpeg
后面还须要确认一下暗码,这里就不展示了,设置完成后的界面如下:
https://i-blog.csdnimg.cn/direct/29ce67c35d4c4b8f8eb5bc18412c640d.png
但是当我们再次进入欣赏器访问百度时任然会有告诫信息!
欸!为什么下载了证书还是会弹安全告诫?哦,原来我们的模仿器android版本大于7.0了(如下图):
https://i-blog.csdnimg.cn/direct/e79f2b8f0da44ceeab956f9d67f16b4b.png
分析:在设置 > 安全 > 信托凭证 > 用户 中我们可以看到刚刚下载的安全证书,对于android7.0版本以下的设备只须要将安全证书放在用户中即可正常访问,但对于android7.0版本以上的用户就须要将证书放在体系中。
https://i-blog.csdnimg.cn/direct/46de3011df0442b6871d5797a4a3ca79.png

4.5、解决android7.0版本以上的安全告诫

4.5.1、导出Fiddler证书

流程:打开Fiddler > Tools > Options > HTTPS > Actions > Export Root Certificate to Desktop
https://i-blog.csdnimg.cn/direct/982e8f7933664acaba60cc9ef6282070.jpeg
https://i-blog.csdnimg.cn/direct/f50289eedf6b469bb9bd355f1fd376cc.jpeg
留意:导出的证书会自动生成到桌面上。
提示:为了方便后期操纵,我将证书移动到了D盘的根目录。

4.5.2、下载openssl

概述:我们刚刚导出的证书移动端是无法识别的,我们须要通过openssl这个工具将导出的证书转换成移动端能识别的证书。
下载地址:Win32/Win64 OpenSSL Installer for Windows - Shining Light Productions (slproweb.com)
提示:须要更具自己电脑的现实情况下载EXE文件,我的电脑是64位的,所以下载了Win64的EXE文件:
https://i-blog.csdnimg.cn/direct/6ce7a562f6934bfcbd5b1ef523d4bea3.jpeg
双击打开下载好的EXE文件,然后无脑下一步举行安装即可(发起修改一下安装地址,方便后面找到),安装完成后会问你是否要捐钱,将√去掉然后点Finish即可。

4.5.3、操纵openssl

概述:起首打开openssl的安装地址,我将其安装在了D盘下一个名为OpenSSL-Win64的文件夹中,然后进入该文件夹中一个名为bin的文件夹中,完备路径如下:D:\OpenSSL-Win64\bin,然后在地址栏输入cmd回车即可:
https://i-blog.csdnimg.cn/direct/b634ba9ab00d4becbf8bcf9265ac94d9.png
https://i-blog.csdnimg.cn/direct/882a1c40ab394576b6c55e1893c96510.png
回车后打开了如下下令提示符:
https://i-blog.csdnimg.cn/direct/9d0589667ebe4a08a4d3f9c53df08b7b.png
接下来在下令提示符中输入如下下令将Fiddler导出的cer证书转换为pem证书并存放到d盘根目录(Fiddler导出的证书我已经提前放在了D盘根目录):
openssl x509 -inform DER -in d:\FiddlerRoot.cer -out d:\FiddlerRoot.pem 运行后的文件夹内容如下:
https://i-blog.csdnimg.cn/direct/c9a7bd1a64f243278f4086de35c3ef0f.png
在下令提示符中输入如下下令利用md5方式表现pem证书的hash值,然后生存该值用于后面改名:
openssl x509 -inform PEM -subject_hash_old -in d:\FiddlerRoot.pem https://i-blog.csdnimg.cn/direct/7c19f326c43a4995af225fbb504c8bec.jpeg
然后将刚刚生成到D盘根目录的FiddlerRoot.pem文件改重定名为 hash值.0,比方我改名成了269953fb.0

4.5.4、安装证书到体系目录

①、起首获取访问权限:
https://i-blog.csdnimg.cn/direct/558361ca0e9441f8821e4e9c09d7174d.jpeg
https://i-blog.csdnimg.cn/direct/082c21308d4d4ad1ac9b22d5af6e5596.jpeg
②、返回桌面并将刚刚改名的269953fb.0文件拖拽到模仿器桌面,拖拽完成后就会自动进入安卓文件夹:
https://i-blog.csdnimg.cn/direct/57e27eaebb32484dbaf6abaef9d1df78.png
 ③、拷贝该文件:
https://i-blog.csdnimg.cn/direct/e9074a4a627147fba954ac6c485a8668.jpeg
④、将证书拷贝到//system/etc/security/cacerts:
https://i-blog.csdnimg.cn/direct/c947d4db3d924cbebda6489430b61115.jpeg
拷贝后的内容如下:
https://i-blog.csdnimg.cn/direct/00da21dfe18b46c4af29a42ba8dbae99.png
⑤、虽然已经将证书添加到体系中了,但该证书的权限不敷导致无法见效,接下来我们通过MT管理器为该证书修改权限:
MT管理器获取:MT管理器_免费高速下载|百度网盘-分享无限制 (baidu.com)
提示1:将下载好的apk文件直接拖拽到模仿器桌面举行安装即可。
接下来打开安装好的MT管理器(所有权限都允许)
https://i-blog.csdnimg.cn/direct/1cd66d3cc68148819b409a278420d79c.jpeg
提示2:不须要更新(不影响利用,时间久了就不保真了),不须要登录(点击捏造机空缺处或按ESC就可以跳过登录)
https://i-blog.csdnimg.cn/direct/31d25cd7de804a11893f276fc2eef6db.jpeg
运行如下下令:
# 进入存放证书的目录
cd /system/etc/security/cacerts

# 切换为root用户
su

# 重新挂载系统,使文件具有可读写权限
mount -o rw,remount /system

# 修改证书权限
chmod 644 269953fb.0

# 重启模拟器 参考截图如下(软件的表现好像有题目,参考上面提供的下令运行即可):
https://i-blog.csdnimg.cn/direct/1546be6a95ab4147b19462315e38dece.jpeg
重启模仿器后,打开设置 > 安全 > 信托的凭证 > 体系 中找到名称中带有 FiddlerRoot 的证书,如果能找到就说明我们已经成功的将证书放进了模仿器的体系中,而且能正常利用,如下图:
https://i-blog.csdnimg.cn/direct/a208a2f91b574f9f91dc9378bd7ac099.png
至此,对于android7.0版本以上体系的哀求都能被Fiddler获取且没有安全告诫。
https://i-blog.csdnimg.cn/direct/73568e7c427d4010aad58963e86164bb.png

5、抓包案例

概述:本章节将通过抓取某小说app的排行数据实现抓包练习。
①、实操前须要进入模仿器桌面的游戏中心下载任意一款小说软件:
https://i-blog.csdnimg.cn/direct/1a62ae0c46d040ea89955764f4a909dc.png
②、下载完成后进入首页:
https://i-blog.csdnimg.cn/direct/62adf92240ee44f2bb35dfb0da48bc6a.png
③、进入Fiddler,清空所有的哀求:
https://i-blog.csdnimg.cn/direct/7ff2ccbcf92a4d92a28ac012a41e4fce.jpeg
④、立刻点击模仿器中小说首页的排行:
https://i-blog.csdnimg.cn/direct/8dd443978ad64f48b521bec649505b8b.jpeg
⑤、逐个排查每一个响应内容(如果找不到数据可以实验点击排行中的女生,重新获取新的响应):
https://i-blog.csdnimg.cn/direct/e041112348414005ba836694a7270e69.jpeg
⑥、找到响应后获取数据链接:
https://i-blog.csdnimg.cn/direct/cc6ae2acd3ff4376994b514359d96cdb.jpeg
⑦、验证地址的真实性,将获取的地址放在欣赏器中去获取,获取的内容如下(更加确信该地址就是排行数据):
https://i-blog.csdnimg.cn/direct/6a376db719614efdbd07e2eb89bc18cb.png
⑧、编写爬虫获取指定命据(运行爬虫文件时要关闭Fiddler,否则会没有响应甚至报错):
留意:当运行程序时发现程序运行较慢时,可能时响应被Fiddler挟制了,此时将Fiddler关闭即可。
import requests

def get_data():
    url = 'https://b.zhuishushenqi.com/category/rank-recommend?node=recommendfemale&size=100&token=&gender=female&tag=&type=&packageName=com.ushaqi.zhuishushenqi&userid=yk_bc66a5dbbf1cf8895e534'
    header = {'User-Agent':'Mozilla/5.0 (Linux; Android 7.1.2; SM-G977N Build/LMY48Z; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/92.0.4515.131 Mobile Safari/537.36'}

    books = requests.get(url,headers=header)
    for book in books.json().get('books'):
      title = book.get('title')
      author = book.get('author')
      hot = book.get('bookIndicator')
      print(f'标题:{title},作者:{author},热度:{hot}')

if __name__ == '__main__':
    get_data() 运行结果如下:
https://i-blog.csdnimg.cn/direct/4ca9a1a810b642d2a37098d68962dc7b.png

留意:虽然我们的案例中很顺利地获取到了数据,但不是所有的app都会如此,部分app的响应也会做加密处置惩罚。

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
页: [1]
查看完整版本: 移动端爬虫学习记录