爬虫这个词细节来说本质只有一件事,把浏览器发出的请求,换一种方式再发一遍
问题不是怎么发请求,而是:
- 请求是怎么构造的
- 参数从哪里来的
- 哪些字段不能少
从一个点击动作开始
打开一个网站,例如一个列表页。
执行一个动作,如点击下一页或点击加载更多
用浏览器抓请求
- 按 F12 打开 DevTools
- 切换到 Network
- 勾选 XHR / Fetch
- 点击页面按钮
观察变化
会出现一个新请求,例如:
https://api.example.com/list?page=2
关键点
这个请求就是爬虫入口。
二、确认请求是否可以独立执行
复制这个请求。
用 curl 测试
curl 'https://api.example.com/list?page=2' \
-H 'User-Agent: ...' \
-H 'Cookie: ...'
观察结果
- 如果返回数据 → 请求完整
- 如果返回错误 → 缺少参数
三、找出哪些参数是必须的
在 DevTools 中查看:
- Headers
- Query 参数
- Request Body
重点字段
例如:
- Cookie
- Authorization
- Token
删除法验证
逐个删除字段,再发请求 哪个删掉会失败 → 必须保留
这个过程可以直接验证,不依赖猜测。
四、处理 Cookie 与登录态
如果接口需要登录:
获取 Cookie
- 登录网站
- 打开 DevTools → Application
- 查看 Cookie
在请求中带上
Cookie: session=xxxx
验证
重新发送请求:
- 返回数据 → 登录态有效
五、当接口被混淆或加密
有些网站会出现:
- 参数加密
- 请求签名
用代理工具观察
使用 Charles 或 Proxyman 或 Sniffmaster:
- 启动工具
- 打开网页
- 触发请求
对比两次请求
观察参数变化和 Header 变化
判断方式
如果同一个请求每次参数不同、但结果正常
说明存在动态参数。
定位参数生成位置
打开 DevTools 的 Sources 面板。
操作步骤
- 找到请求对应 JS 文件
- 搜索接口路径
- 找到调用位置
断点调试
在发送请求前打断点:查看参数生成过程、记录计算逻辑
如果请求来自移动端时
有些接口在 PC 上不可见,例如:
- App 专用接口
- H5 内嵌接口
用 SniffMaster 抓取移动流量
操作步骤
- 用 USB 连接 iPhone
- 解锁设备
- 点击“信任此电脑”
- 启动 SniffMaster(抓包大师)
- 选择设备
- 安装描述文件
- 进入 HTTPS 暴力抓包模式
- 点击开始
触发请求
在手机上打开页面然后点击按钮,可以看到 API 请求 、Header 、请求路径
只抓目标接口
移动端流量较多,需要筛选。
筛选方式
- 点击 选择 App
- 勾选目标应用
- 使用关键字过滤
/list
把抓到的请求转成代码
例如用 Python:
import requests
url = "https://api.example.com/list?page=2"
headers = {
"User-Agent": "...",
"Cookie": "session=xxxx"
}
response = requests.get(url, headers=headers)
print(response.text)
运行代码, 返回数据 → 爬虫成功
爬虫可以用什么工具
| 工具 | 作用 |
|---|---|
| DevTools | 找请求入口 |
| Charles / Proxyman | 分析参数变化 |
| SniffMaster | 获取移动端接口 |
| Python requests | 实现爬取 |
如果一个接口满足,可以独立请求,而且参数明确,重点是返回数据稳定那么久就可以认为已经完成抓包到爬虫的转换。 本文章仅用于学习参考,不得做违法行为。