Add crawler-reverse skill documentation
Added documentation for the crawler-reverse skill, detailing its purpose, applicable scenarios, workflow, recommended tools, and security boundaries.
This commit is contained in:
254
spdier_skills.md
Normal file
254
spdier_skills.md
Normal file
@@ -0,0 +1,254 @@
|
|||||||
|
# crawler-reverse
|
||||||
|
|
||||||
|
> 用于**合法授权前提下**的网页抓包、接口分析、前端 JS 逆向与反爬排查。
|
||||||
|
|
||||||
|
## 简介
|
||||||
|
|
||||||
|
`crawler-reverse` 是一个面向网页抓包分析、接口链路定位、参数生成逻辑梳理和前端混淆排查的技能。
|
||||||
|
|
||||||
|
适用于以下工作:
|
||||||
|
|
||||||
|
- 分析页面请求链路
|
||||||
|
- 定位签名参数/加密参数生成位置
|
||||||
|
- 排查 token / cookie / header 来源
|
||||||
|
- 复现前端接口调用流程
|
||||||
|
- 分析反爬机制与接口重放差异
|
||||||
|
- 借助浏览器自动化辅助定位关键逻辑
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 适用场景
|
||||||
|
|
||||||
|
当需求类似下面这些时,适合使用本技能:
|
||||||
|
|
||||||
|
- “分析这个网站的请求链路”
|
||||||
|
- “找签名参数/加密参数在哪里生成”
|
||||||
|
- “看一下这个 token / cookie / header 怎么来的”
|
||||||
|
- “排查这个页面的 JS 混淆逻辑”
|
||||||
|
- “复现前端接口调用流程”
|
||||||
|
- “帮我分析反爬机制/接口重放问题”
|
||||||
|
- “从浏览器行为里定位关键请求”
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 工作目标
|
||||||
|
|
||||||
|
把网页行为拆成几层进行分析:
|
||||||
|
|
||||||
|
1. **页面入口**
|
||||||
|
- 用户操作
|
||||||
|
- 按钮点击
|
||||||
|
- 路由切换
|
||||||
|
- 表单提交
|
||||||
|
- 懒加载触发
|
||||||
|
|
||||||
|
2. **网络请求**
|
||||||
|
- XHR
|
||||||
|
- Fetch
|
||||||
|
- Document
|
||||||
|
- WebSocket
|
||||||
|
- 静态资源请求
|
||||||
|
|
||||||
|
3. **关键参数**
|
||||||
|
- Query 参数
|
||||||
|
- Body 参数
|
||||||
|
- Header
|
||||||
|
- Cookie
|
||||||
|
- localStorage
|
||||||
|
- sessionStorage
|
||||||
|
|
||||||
|
4. **生成逻辑**
|
||||||
|
- 签名函数
|
||||||
|
- 时间戳
|
||||||
|
- 随机数
|
||||||
|
- 加密
|
||||||
|
- 序列化
|
||||||
|
- 压缩
|
||||||
|
|
||||||
|
5. **复现方式**
|
||||||
|
- 最小验证脚本
|
||||||
|
- 浏览器自动化流程
|
||||||
|
- 请求重放与差异比对
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 推荐工具组合
|
||||||
|
|
||||||
|
### 1. 页面行为观察
|
||||||
|
|
||||||
|
优先使用:
|
||||||
|
|
||||||
|
- `browser_visible`:需要真实可见浏览器时
|
||||||
|
- `browser_use`:打开页面、点击、输入、快照、执行 JS、查看网络请求
|
||||||
|
|
||||||
|
常见动作:
|
||||||
|
|
||||||
|
- 打开目标页面并复现操作路径
|
||||||
|
- 用 `snapshot` 找元素
|
||||||
|
- 用 `network_requests` 观察接口
|
||||||
|
- 用 `evaluate / eval` 读取页面变量、storage、hook 点
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
### 2. 代码与文件分析
|
||||||
|
|
||||||
|
优先使用:
|
||||||
|
|
||||||
|
- `file_reader`:读取本地 JS / HTML / JSON / 日志
|
||||||
|
- `read_file`:查看项目中的脚本、抓包结果、接口样本
|
||||||
|
- `execute_shell_command`:搜索关键词、运行本地验证脚本
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
### 3. 验证与复现
|
||||||
|
|
||||||
|
可用方式:
|
||||||
|
|
||||||
|
- 写最小 Python / JS 复现脚本
|
||||||
|
- 比对浏览器请求与脚本请求差异
|
||||||
|
- 验证 header / cookie / payload / 签名是否一致
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 建议流程
|
||||||
|
|
||||||
|
### A. 先确认目标与授权边界
|
||||||
|
|
||||||
|
先确认:
|
||||||
|
|
||||||
|
- 目标站点/系统是什么
|
||||||
|
- 用户是否有合法授权或正当测试目的
|
||||||
|
- 是要分析页面、接口、签名,还是登录流程
|
||||||
|
|
||||||
|
如果用途明显涉及:
|
||||||
|
|
||||||
|
- 未授权数据抓取
|
||||||
|
- 绕过权限
|
||||||
|
- 批量滥用
|
||||||
|
- 撞库
|
||||||
|
- 绕过付费
|
||||||
|
- 绕过风控
|
||||||
|
|
||||||
|
则不继续提供实操绕过方案。
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
### B. 观察页面与请求
|
||||||
|
|
||||||
|
1. 打开页面
|
||||||
|
2. 复现用户操作
|
||||||
|
3. 记录触发的关键请求
|
||||||
|
4. 标记以下信息:
|
||||||
|
|
||||||
|
- URL
|
||||||
|
- Method
|
||||||
|
- Status
|
||||||
|
- 请求头
|
||||||
|
- Body
|
||||||
|
- 响应结构
|
||||||
|
- 请求前后的页面状态
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
### C. 定位关键参数来源
|
||||||
|
|
||||||
|
重点查找:
|
||||||
|
|
||||||
|
- `sign`
|
||||||
|
- `token`
|
||||||
|
- `timestamp`
|
||||||
|
- `nonce`
|
||||||
|
- `secret`
|
||||||
|
- `encrypt`
|
||||||
|
- `signature`
|
||||||
|
- `authorization`
|
||||||
|
- `x-` 自定义 Header
|
||||||
|
|
||||||
|
常用方法:
|
||||||
|
|
||||||
|
- 在源码中搜关键词
|
||||||
|
- 在浏览器环境里打印函数或变量
|
||||||
|
- 从发请求位置向上追踪调用链
|
||||||
|
- 比对多次请求的变化字段
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
### D. 识别常见反爬点
|
||||||
|
|
||||||
|
重点关注:
|
||||||
|
|
||||||
|
- 登录态与 Cookie 绑定
|
||||||
|
- CSRF Token
|
||||||
|
- 动态 Header
|
||||||
|
- 请求体加密 / Base64 / JSON 包装
|
||||||
|
- 时间戳与随机数参与签名
|
||||||
|
- WebSocket 下发临时 Token
|
||||||
|
- 页面渲染后再拼装参数
|
||||||
|
- localStorage / sessionStorage / 内存中的临时值
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
### E. 产出可验证结果
|
||||||
|
|
||||||
|
尽量给出:
|
||||||
|
|
||||||
|
- 关键请求列表
|
||||||
|
- 参数来源说明
|
||||||
|
- 生成逻辑摘要
|
||||||
|
- 最小复现步骤
|
||||||
|
- 若能安全且合规地做,给一个最小验证脚本
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 输出模板
|
||||||
|
|
||||||
|
建议输出采用下面结构:
|
||||||
|
|
||||||
|
- **目标页面/动作:**
|
||||||
|
- **关键请求:**
|
||||||
|
- **可疑参数:**
|
||||||
|
- **参数来源推测/证据:**
|
||||||
|
- **还需要验证的点:**
|
||||||
|
- **下一步建议:**
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 安全边界
|
||||||
|
|
||||||
|
### 可以做
|
||||||
|
|
||||||
|
- 合法授权下的接口分析
|
||||||
|
- 自有系统调试
|
||||||
|
- 前端参数链路梳理
|
||||||
|
- 本地脚本验证
|
||||||
|
- 浏览器行为复现
|
||||||
|
|
||||||
|
### 不要做
|
||||||
|
|
||||||
|
- 未授权绕过访问控制
|
||||||
|
- 绕过验证码 / 付费墙 / 权限系统的具体实操
|
||||||
|
- 大规模盗采或滥用
|
||||||
|
- 撞库、刷接口、规避风控的攻击性方案
|
||||||
|
|
||||||
|
如果用户目标不清楚,应该先追问:
|
||||||
|
|
||||||
|
- 授权范围
|
||||||
|
- 目标页面
|
||||||
|
- 目标接口
|
||||||
|
- 分析目的
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 实操提醒
|
||||||
|
|
||||||
|
- 先从“重放已观察到的合法请求”开始,不要一上来重造整套链路
|
||||||
|
- 优先找“最少变化字段”,再定位签名
|
||||||
|
- 参数分析时,至少做两次请求对比
|
||||||
|
- 页面脚本很大时,优先围绕触发请求的函数调用点缩小范围
|
||||||
|
- 如果需要真实浏览器观察,就先配合 `browser_visible` 使用
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 一句话总结
|
||||||
|
|
||||||
|
`crawler-reverse` 适合在**合法授权**前提下,帮助你把网页请求链路、前端参数生成、签名逻辑和接口复现过程系统化地拆开分析,并输出可验证的结论与脚本。
|
||||||
Reference in New Issue
Block a user