crawllisted
Install: claude install-skill xiaoshuai1024/skills
# 爬虫自动化最佳实践
## 何时用本 skill
- 编写或修改 BOSS直聘 / 猎聘 / 智联 等平台的爬虫
- 遇到 captcha、白屏、空列表等反爬拦截
- 选择浏览器导航策略时
## 核心原则
1. **不要从零推理策略**——下面记录的是已经被验证有效的方法,直接遵循
2. **爬虫的本质是模拟真人**——越快越假,越规律越容易被封
3. **每个平台的反爬策略不同**——不要把一个平台的方法套到另一个
---
## 一、浏览器自动化通用规则
### 导航策略(最重要)
| 方法 | 推荐度 | 说明 |
|------|--------|------|
| `page.goto(url)` 直接导航 | ✅ **始终优先** | 最接近真人地址栏输入,反爬特征最少 |
| `page.click()` + 等待导航 | ⚠️ 仅限必要 | 可能触���前端路由检测 |
| CDP (`CDPSession.send`) | ❌ **避免** | BOSS直聘 等平台会检测 CDP 调用特征 |
**结论:始终用 `page.goto()` 直接导航到目标 URL,不要用 click + 等待导航**
### 反检测清单
- [ ] 使用 stealth 插件(`puppeteer-extra-plugin-stealth` 或手动 patch)
- [ ] 禁用 `webdriver` 属性:`page.evaluateOnNewDocument(() => delete navigator.__proto__.webdriver)`
- [ ] 随机化 User-Agent(不同会话用不同 UA)
- [ ] 添加合理的页面操作延迟(每个操作间隔 1-3 秒,随机)
- [ ] 不要关闭用户已有的浏览器会话——复用已登录的上下文(cookie/Storage)
- [ ] 页面加载后随机滚动(模拟真人阅读行为)
### 请求间隔
```
每次搜索之间: 5-15 秒随机
每次翻页之间: 8-20 秒随机
每次完整爬取: 不超过 50 条,否则强制休息 60 秒
同一会话总次数: 不超过 3 轮,之后必须新建浏览器上下文
```
---
## 二、各平台已知策略
### BOSS直聘
- **反爬等级**:🔴 严苛
- **已验证有效的方法**:
- 使用 `page.goto()` 直接导航,**禁止** CDP/UI click 导航
- 必须使用 stealth 插件,否则 about:blank 拦截
- 搜索 URL 格式:`https://www.zhipin.com/web/geek/job?city=100010000&query=技术总监`
- 搜索结果加载后等 3-5 秒让 DOM 完全渲染
- 如果出现验证码弹窗 → 暂停该会话,切换 IP 或等 10 分钟后重试
- **不要**点击「搜索按钮」——直接 goto 搜索 URL
- **已知无效**:
- CDP 导航 → 触发检测
- 高频请求(< 3 秒间隔)→ 触发 captcha
### 猎聘
- **反爬等级**:🟡 中等
- **已验证有效的方法**:
- 用户已登录状态下,白屏概率降低
- 搜索 URL 格式:`https://www.liepin.com/zhaopin/?key=技术总监`
- 翻页使用 URL 参数:`?ke