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

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

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

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

从一个点击动作开始

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

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


用浏览器抓请求

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

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

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

相关推荐
梦曦i1 分钟前
Vue-Router 2.4.0 新增可控重定向功能
前端·uni-app
deli00700721 分钟前
Markdown 实时预览器:左边写右边看,排版效率翻倍
前端·ai编程
郑州光合科技余经理26 分钟前
海外版外卖系统架构:订单怎么流转、权限怎么分
java·开发语言·前端·系统架构·uni-app·php·ai编程
pengyu41 分钟前
【Kotlin 协程修仙录 · 炼虚境 · 初阶】 | 虚空造物:Channel 基础与协程间通信的管道艺术
android·前端·kotlin
提线木偶43 分钟前
CORS 到底谁说了算?一份跨域配置的避坑指南
前端·后端
九九落1 小时前
北京时间校准怎么做?电脑和手机时间不准的排查方法
javascript
网安蟹佬霸2 小时前
区块链与智能合约安全实战:从Solidity审计到DeFi漏洞深度剖析
运维·前端·网络·安全·自动化·区块链·智能合约
念何架构之路2 小时前
Gin响应渲染
前端·javascript·gin
invicinble2 小时前
设计网站的底层思路(深刻版本)
前端
2501_915106322 小时前
Swift 开发环境搭建指南:三条路径按目标对号入座
开发语言·vscode·ios·objective-c·个人开发·swift·敏捷流程