网站爬虫原理,基于浏览器点击行为还原可接口请求

0 阅读3分钟

爬虫这个词细节来说本质只有一件事,把浏览器发出的请求,换一种方式再发一遍

问题不是怎么发请求,而是:

  • 请求是怎么构造的
  • 参数从哪里来的
  • 哪些字段不能少

从一个点击动作开始

打开一个网站,例如一个列表页。

执行一个动作,如点击下一页或点击加载更多


用浏览器抓请求

  1. 按 F12 打开 DevTools
  2. 切换到 Network
  3. 勾选 XHR / Fetch
  4. 点击页面按钮

观察变化

会出现一个新请求,例如:

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

  1. 登录网站
  2. 打开 DevTools → Application
  3. 查看 Cookie

在请求中带上

Cookie: session=xxxx

验证

重新发送请求:

  • 返回数据 → 登录态有效

五、当接口被混淆或加密

有些网站会出现:

  • 参数加密
  • 请求签名

用代理工具观察

使用 Charles 或 Proxyman 或 Sniffmaster:

  1. 启动工具
  2. 打开网页
  3. 触发请求

对比两次请求

观察参数变化和 Header 变化


判断方式

如果同一个请求每次参数不同、但结果正常

说明存在动态参数。


定位参数生成位置

打开 DevTools 的 Sources 面板。

操作步骤

  1. 找到请求对应 JS 文件
  2. 搜索接口路径
  3. 找到调用位置

断点调试

在发送请求前打断点:查看参数生成过程、记录计算逻辑


如果请求来自移动端时

有些接口在 PC 上不可见,例如:

  • App 专用接口
  • H5 内嵌接口

用 SniffMaster 抓取移动流量

操作步骤

  1. 用 USB 连接 iPhone
  2. 解锁设备
  3. 点击“信任此电脑”
  4. 启动 SniffMaster(抓包大师)
  5. 选择设备
  6. 安装描述文件
  7. 进入 HTTPS 暴力抓包模式
  8. 点击开始

触发请求

在手机上打开页面然后点击按钮,可以看到 API 请求 、Header 、请求路径


只抓目标接口

移动端流量较多,需要筛选。

筛选方式

  1. 点击 选择 App
  2. 勾选目标应用
  3. 使用关键字过滤
/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实现爬取

如果一个接口满足,可以独立请求,而且参数明确,重点是返回数据稳定那么久就可以认为已经完成抓包到爬虫的转换。 本文章仅用于学习参考,不得做违法行为。