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

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

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

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

从一个点击动作开始

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

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


用浏览器抓请求

  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

删除法验证

逐个删除字段,再发请求 哪个删掉会失败 → 必须保留

这个过程可以直接验证,不依赖猜测。


如果接口需要登录:


  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 实现爬取

如果一个接口满足,可以独立请求,而且参数明确,重点是返回数据稳定那么久就可以认为已经完成抓包到爬虫的转换。

本文章仅用于学习参考,不得做违法行为。

相关推荐
码路飞21 小时前
玩了一圈 AI 编程工具,Background Agent 才是让我真正震撼的东西
前端·javascript
UCloud_TShare21 小时前
优刻得发布云搜索服务CSS:面向AI时代的企业级搜索基础设施
前端·css·人工智能
林恒smileZAZ21 小时前
Three.js实现更真实的3D地球[特殊字符]动态昼夜交替
开发语言·javascript·3d
月月大王的3D日记21 小时前
别再复制粘贴了,从零拆解 3D 场景的诞生过程
javascript
木斯佳21 小时前
前端八股文面经大全:字节暑期前端一面(2026-04-21)·面经深度解析
前端·面试·校招·面经·实习
昭昭日月明1 天前
前端仔速通 Python
javascript·python
SailingCoder1 天前
Electron 安全IPC核心:contextBridge 安全机制
javascript·安全·electron
Jolyne_1 天前
前端从0开始的LangChain学习(一)
前端·langchain
掘金一周1 天前
掘友们,一人说一个你买过夯到爆的东西 | 沸点周刊 4.23
前端·人工智能·后端
Developer_Niuge1 天前
告别翻不动的 1000+ 书签:开源 Chrome / Edge 浏览器书签管理插件 Smart Bookmark 0.2 发布
前端·后端