mit einem Klick
web-scraping-diagnosis
诊断网页抓取失败的常见原因,识别反爬虫保护措施
Mit Codex oder Claude installieren Kopieren Sie diesen Prompt, fügen Sie ihn in Codex, Claude oder einen anderen Assistant ein und lassen Sie die Skill-Seite prüfen und installieren.
Menü
诊断网页抓取失败的常见原因,识别反爬虫保护措施
Mit Codex oder Claude installieren Kopieren Sie diesen Prompt, fügen Sie ihn in Codex, Claude oder einen anderen Assistant ein und lassen Sie die Skill-Seite prüfen und installieren.
Basierend auf der SOC-Berufsklassifikation
高德地图综合服务,支持POI搜索、路径规划、旅游规划、周边搜索和热力图数据可视化
Knowledge comic creator supporting multiple art styles and tones. Creates original educational comics with detailed panel layouts and sequential image generation. Use when user asks to create "知识漫画", "教育漫画", "biography comic", "tutorial comic", or "Logicomix-style comic".
Generate professional infographics with 21 layout types and 21 visual styles. Analyzes content, recommends layout×style combinations, and generates publication-ready infographics. Use when user asks to create "infographic", "visual summary", "信息图", "可视化", or "高密度信息大图".
Darwin Skill (达尔文.skill): autonomous skill optimizer inspired by Karpathy's autoresearch. Evaluates SKILL.md files using an 8-dimension rubric (structure + effectiveness), runs hill-climbing with git version control, validates improvements through test prompts, and generates visual result cards. Use when user mentions "优化skill", "skill评分", "自动优化", "auto optimize", "skill质量检查", "达尔文", "darwin", "帮我改改skill", "skill怎么样", "提升skill质量", "skill review", "skill打分".
从 DESIGN.md 生成预览图并截图的工作流 - 解决 Playwright 浏览器路径问题和 YAML 解析
Cron jobs auto-deliver final responses to configured targets — send_message to the same target gets deduplicated and skipped. Print report content directly as final response instead.
| name | web-scraping-diagnosis |
| description | 诊断网页抓取失败的常见原因,识别反爬虫保护措施 |
| triggers | ["抓取失败","网页爬取","scraping","anti-bot","验证码","微信文章","微信公众号"] |
page.on('console', msg => console.log('Console:', msg.type(), msg.text()));
page.on('pageerror', err => console.log('Error:', err.message));
| 特征 | 说明 |
|---|---|
TencentCaptcha | 腾讯验证码,需要人工验证 |
waf_probe | WAF 防护探测 |
setFp, window will reload | 反爬虫 fingerprint 检测 |
| 空白 body 或 minimal HTML | 可能是反爬虫重定向 |
webdriver 检测 | Selenium/Playwright 被检测 |
| 网站 | 保护方式 | 备注 |
|---|---|---|
| smzdm.com | 腾讯验证码 | 需要人工验证 |
| 微信文章 | 腾讯验证码 | 常触发(cap_appid 2003810213),需用户配合或粘贴内容 |
| 知乎 | 较宽松 | 可能需要登录 |
await page.addInitScript(() => {
Object.defineProperty(navigator, 'webdriver', {get: () => undefined});
window.navigator.chrome = true;
});
window.cgiData {register_code: 4, cap_appid: 2003810213} 表示触发腾讯验证码,Playwright 无法自动通过。此时应请求用户协助(手动验证或粘贴正文)PLAYWRIGHT_BROWSERS_PATH=/opt/data/home/.playwright node -e "
const { chromium } = require('playwright');
(async () => {
const browser = await chromium.launch({
headless: true,
executablePath: '/opt/data/home/.playwright/chromium-1217/chrome-linux64/chrome'
});
const page = await browser.newPage();
page.on('console', msg => console.log('Console:', msg.type(), msg.text()));
page.on('pageerror', err => console.log('Error:', err.message));
await page.goto('YOUR_URL_HERE', {timeout: 45000, waitUntil: 'domcontentloaded'});
await page.waitForTimeout(8000);
console.log('Final URL:', page.url());
const html = await page.content();
console.log('HTML size:', html.length);
await browser.close();
})();
"
成功标志:
失败标志:
waf_probe 或 setFp当 Playwright 不可用(如缺少 libnspr4.so)且页面是 JS 渲染的 SPA 时,可以从 JS bundle 中提取嵌入的内容。
识别特征:curl 抓到的 HTML 只有空 <div id="root"></div> 和一个 <script src="assets/xxx.js">,没有实际内容。
提取流程:
# 1. 下载 JS bundle
curl -sL 'https://example.com/assets/index-xxx.js' > /tmp/page.js
# 2. 从 JS 中提取中文内容块(SPA 通常把内容作为字符串嵌入)
python3 -c "
import re
with open('/tmp/page.js','r') as f: content = f.read()
# 方法A:grep 有意义的中文字符串(50+字符)
for m in re.finditer(r'[\u4e00-\u9fff]{10,}', content):
start, end = max(0, m.start()-80), min(len(content), m.end()+80)
print(content[start:end])
print('---')
# 方法B:如果是 JSON 格式嵌入,提取 id/level/content 结构
blocks = re.findall(r\"content:'((?:[^'\\\\]|\\\\.)*?)'\", content)
for b in blocks: print(b.encode().decode('unicode_escape'))
"
适用场景:文档站、产品介绍页、博客(部分 SSR 失败时)。内容通常以字符串字面量、JSON 对象或模板字符串形式嵌入 JS。
局限:只能提取构建时嵌入的静态内容,动态 API 加载的数据需要找到对应的 fetch 端点。
/opt/data/home/.playwright/chromium-1217/chrome-linux64/chrome/opt/data/home/.hermes/