爬虫 — App 爬虫(一)

目录

一、介绍

爬虫分类------数据来源

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

点击下载 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&timestamp=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:关键字搜索

记录学习过程,欢迎讨论交流,尊重原创,转载请注明出处~

相关推荐
__lost12 分钟前
Python图像变清晰与锐化,调整对比度,高斯滤波除躁,卷积锐化,中值滤波钝化,神经网络变清晰
python·opencv·计算机视觉
海绵波波10717 分钟前
玉米产量遥感估产系统的开发实践(持续迭代与更新)
python·flask
爱吃泡芙的小白白1 小时前
爬虫学习——使用HTTP服务代理、redis使用、通过Scrapy实现分布式爬取
redis·分布式·爬虫·http代理·学习记录
逢生博客1 小时前
使用 Python 项目管理工具 uv 快速创建 MCP 服务(Cherry Studio、Trae 添加 MCP 服务)
python·sqlite·uv·deepseek·trae·cherry studio·mcp服务
堕落似梦1 小时前
Pydantic增强SQLALchemy序列化(FastAPI直接输出SQLALchemy查询集)
python
坐吃山猪2 小时前
Python-Agent调用多个Server-FastAPI版本
开发语言·python·fastapi
Bruce-li__2 小时前
使用Django REST Framework快速开发API接口
python·django·sqlite
小兜全糖(xdqt)2 小时前
python 脚本引用django中的数据库model
python·django
Arenaschi3 小时前
SQLite 是什么?
开发语言·网络·python·网络协议·tcp/ip
纪元A梦3 小时前
华为OD机试真题——推荐多样性(2025A卷:200分)Java/python/JavaScript/C++/C语言/GO六种最佳实现
java·javascript·c++·python·华为od·go·华为od机试题