目录
- 一、介绍
- [二、APP 爬虫常见反爬](#二、APP 爬虫常见反爬)
- [三、APP 抓包常用工具](#三、APP 抓包常用工具)
- 四、模拟器
- [五、安装 APP](#五、安装 APP)
-
- [1、下载 APP](#1、下载 APP)
- [2、安装 APP](#2、安装 APP)
- 六、fiddler
- 七、环境配置
-
- [1、fiddler 的配置](#1、fiddler 的配置)
- 2、夜神模拟器的配置
- 八、案例
一、介绍
爬虫分类------数据来源
1、PC 端爬虫(网页端爬虫)
- 找数据接口(requests,scrapy等)
- selenium
2、APP 端爬虫
-
找数据接口
获取数据接口------fiddler
获取 APP 与服务器进行交互的数据包------模拟器
-
appium
二、APP 爬虫常见反爬
1、抓不到数据包请求
2、抓取数据包里的参数涉及加密(APP 逆向)
三、APP 抓包常用工具
抓包软件名称 | 支持的操作系统 | 适用平台 | 调试难易程度 | 软件功能程度 |
---|---|---|---|---|
fiddler | Windows/Linux | 网页端、APP 端 | 一般 | 多 |
mitmproxy | Windows/Mac/Linux | 网页端、APP 端 | 一般 | 多 |
packetCapture | 安卓 | APP 端 | 简单 | 少 |
四、模拟器
1、安装夜神模拟器安装包;
2、安装好后桌面会多出两个软件,点击模拟器助手;
3、点击"多开管理";
4、点击"添加模拟器",新建一个模拟器;
5、选择一个模拟器;
6、点击设置;
7、选择"手机版"后,点击"保存设置";
8、启动模拟器;
9、界面启动成功;
五、安装 APP
1、下载 APP
1、输入需要安装的 APP 名称,点击搜索;
2、点击"查看";
3、取消选择框;
4、点击"普通下载";
2、安装 APP
1、直接把下载好的 apk 拖拽到模拟器(常用);
2、通过命令进行安装。
六、fiddler
1、工作原理
2、安装
1、点击"I Agree";
2、选择安装路径,点击"Install";
3、点击"Close";
4、这个软件不会自动在桌面上创建快捷方式,可以自己手动创建,
在安装路径文件夹里找到"Fiddler.exe"文件,右键点击,选择"发送到",选择"桌面快捷方式";
3、基本介绍
1、界面展示
2、快捷功能区
1:给会话添加备注信息
2:重新加载当前会话
3:删除会话选项
4:放行,和断点对应
5:响应模式,当 fiddler 拿到远程的 response 后是缓存起来一次响应给客户端还是以 stream 的方式直接响应
6:解码,有些请求是被编码的,点击这个按钮后可以根据响应的编码格式自动解码
7:查找会话
8:保存会话
9:截屏,截屏后,会以会话的方式返回一个截图
3、常用功能
清空数据包
停止抓包
保存数据包
打断点
七、环境配置
1、fiddler 的配置
HTTPS
让 fiddler 能够捕获 https 的请求
检查证书是否安装成功
如果能看到这两个证书,就说明证书已经安装成功了
Connections
然后重新启动 fiddler
2、夜神模拟器的配置
1、打开夜神模拟器,在桌面上找到"工具"并点击,然后找到"设置"并点击;
2、滑动到最底部,点击"关于平板电脑";
3、滑动到最底部,不停的点击"版本号";
4、直到出现"您现在处于开发者模式"为止;
5、点击返回上一页,会出现"开发者选项",点击进去;
6、打开"USB调试",点击"确定";
7、返回桌面,打开浏览器,点击"设置";
8、选择"隐私和安全";
9、点击取消选中"显示安全警告";
10、然后重启模拟器,点击"设置",找到"WLAN",点击进入;
11、在"WiredSSID"上长按鼠标左键,点击"修改网络";
12、可按 win+R 后,输入 cmd 进入电脑终端;
13、回到桌面,点击浏览器,在地址栏里输入 ip 地址和端口号后,点击"FiddlerRoot certificate"(如没有出现此页面可重新启动模拟器);
14、点击"下载";
15、点击"下载已完成";
16、填入"证书名称"后,点击"确定";
17、此时,会跳出弹窗提示,需要设置密码,点击"确定";
18、点击"密码";
19、输入密码后,点击"继续";
20、点击"完成"。
八、案例
目标 APP:当当
需求:爬取书名、作者、出版社、好评率、价格
1、在"豌豆荚"网站下载好目标 APP 后,将 APP 拖拽进模拟器中
2、打开 APP,在搜索框里输入内容,输入内容前,先在 fiddler 里清空数据包
3、点击"Find"查找相关数据包后,点击"Find Sessions"
4、依次点击高亮显示的数据包,找到有数据的
5、数据为乱码,点击图中框框的位置
6、点击后正常显示
7、数据为 json 格式,点击"JSON",更方便查看数据
8、复制数据包的 url
代码实现
python
import requests # 导入 requests 模块,用于发送网络请求
# pip install rich
from rich import print as rprint # 导入 rich 模块的 print 函数,用于打印带样式的输出
# 目标 url
url = 'http://mapi7.dangdang.com/index.php?page_version=new2&access-token=&time_code=0a700316b85a0d578709bd673dd123dc&img_size=e&client_version=10.12.4&pageSize=10&union_id=537-100998×tamp=1687961723&province_id=111&permanent_id=20230628220338845805790296886915991&a=all-search&global_province_id=111&page_action=search&c=search&sort_type=default_0&keyword=%E7%88%AC%E8%99%AB&udid=4aa439184898c3fbab8ed2cd869b77e1&user_client=android&page=1'
# 发送 get 请求,获取响应对象
res = requests.get(url)
# 使用 rich 模块的 print 函数打印响应对象中的 JSON 数据的 product 字段
# rprint(res.json()['data']['product']) # 返回的数据类型 list
# 获取响应对象中的 product 列表
product_lst = res.json()['data']['product']
# 遍历 product 列表
for product in product_lst:
# 创建字典
item = {}
item['title'] = product.get('productName') # 获取商品名称
item['author'] = product.get('author') # 获取商品作者
item['publisher'] = product.get('publisher') # 获取商品出版社
item['commentCount'] = product.get('commentCount') # 获取商品评论数
item['price'] = product.get('price') # 获取商品价格
print(item) # 打印商品信息
print('-' * 100) # 分隔线
注意:
1、pip install rich 安装报错
检查是否开启 fiddler,开启的话可能会报错,关闭 fiddler,再重新安装即可
2、url 里面
page:控制翻页
keyword:关键字搜索
记录学习过程,欢迎讨论交流,尊重原创,转载请注明出处~