- 310 registry:skill items, 1528 files, 7 categories (hub tags) - registry.json generated by @kortix/registry buildRegistry - nested SKILL.md in sn-da-* renamed SUBSKILL.md (no phantom skills) - provenance + licenses: SOURCES.md
29 lines
677 B
Python
29 lines
677 B
Python
#!/usr/bin/env python3
|
|
"""Cloudflare 反爬绕过模板
|
|
用途: 有 Cloudflare/WAF 保护的网站
|
|
替换: URL, COOKIES(可选), CSS_SELECTOR
|
|
"""
|
|
from scrapling.fetchers import StealthyFetcher
|
|
|
|
URL = "{{URL}}"
|
|
COOKIES = {{COOKIES}} # None 或 [{'name': ..., 'value': ..., 'domain': ..., 'path': '/'}]
|
|
CSS_SELECTOR = "{{CSS_SELECTOR}}"
|
|
|
|
page = StealthyFetcher.fetch(
|
|
URL,
|
|
headless=True,
|
|
solve_cloudflare=True,
|
|
cookies=COOKIES,
|
|
timeout=60000,
|
|
network_idle=True,
|
|
)
|
|
|
|
print(f"Status: {page.status}")
|
|
|
|
if CSS_SELECTOR:
|
|
results = page.css(CSS_SELECTOR).getall()
|
|
for r in results:
|
|
print(r)
|
|
else:
|
|
print(page.get_all_text(strip=True)[:2000])
|