Włącz toolset web i skonfiguruj backend:
hermes tools enable web
hermes tools enable browser
# Po resecie sesji (/reset) masz web_search i web_extract
Obecny stan: web ✅ włączony, browser ✅ włączony. Backend: search_backend: duckduckgo, extract_backend: jina (skonfigurowane w profilu CEO).
Zwykły curl z odpowiednim User-Agentem działa na Google i Facebooku. Nie działa na x.com (Cloudflare 403) i reddit.com (403).
curl -sL -A "Mozilla/5.0 (Windows NT 10.0; Win64; x64) Chrome/124" https://www.google.com/
Python cloudscraper (imitacja Cloudflare challenge) działa na x.com — bypassuje Cloudflare, ale strona to JS SPA (Next.js). Nie ma treści w surowym HTMLu. Potrzebny headless browser do renderowania. Na reddicie i facebooku nie działa.
pip3 install cloudscraper
python3 -c "import cloudscraper; r=cloudscraper.create_scraper().get('https://x.com/'); print(r.status_code)"
DuckDuckGo ma publiczne API (lite.duckduckgo.com, html.duckduckgo.com). Wymaga POST z form data. Zwraca czysty HTML z wynikami wyszukiwania. Idealne jako darmowy backend search dla Hermes.
curl -s -d "q=test" https://lite.duckduckgo.com/lite/ | grep -oP '(?<=class="result">).*?(?=)'
Jina Reader konwertuje URL na czysty Markdown. Działa na Google. Nie działa na x.com (403) i reddit (403). Jina v2 (s.jina.ai) wymaga API key (płatny).
curl -s -H "Accept: text/plain" https://r.jina.ai/https://example.com
Google Search zwraca HTTP 200 z curl, ale wyniki są w JS-renderowanych elementach. Potrzebny BeautifulSoup do ekstrakcji. Google zmienia strukturę HTML często.
Cloudflare Browser Run (dawniej Browser Rendering) to headless Chrome na Workers. Renderuje JS SPA (x.com, reddit). Zamienia strony na Markdown. Wymaga konta Cloudflare i Workers.
# Worker code:
const browser = await puppeteer.launch();
const page = await browser.newPage();
await page.goto('https://x.com/');
const markdown = await page.evaluate(() => document.body.innerText);
Wszystkie alternatywne frontendy Reddita i X.com są blokowane. Reddit blokuje nawet RSS i JSON API (HTTP 403). Nitter (X) zwraca 0 bajtów. Teddit ma błędy SSL.
Google Search API. Structured JSON. Działa tylko na Google. Najpopularniejszy backend dla AI agentów. Natywnie wspierany przez Hermes przez web.search_backend?
Tańsza alternatywa dla SerpAPI. Google + News. Szybki, czysty JSON. Często używany przez AI agentów.
Proxy + scraping API. Obsługuje wszystkie strony (Google, X, Reddit, Facebook). Sieć proxy + headless browser. Największy dostawca.
Specjalizuje się w bypassowaniu Cloudflare. Proxy + headless browser. Działa na x.com, reddit, google. Ma API do AI agentów.
API + headless browser. Obsługuje JS rendering. Anti-bot bypass. Działa na Google, X, Reddit.
Cloud headless browser. Sterowany przez Puppeteer/Playwright. Pełna kontrola nad przeglądarką. Działa na wszystkich stronach. Wymaga integracji.
Platforma scrapingowa z gotowymi aktorami (Google Search, X, Reddit, Facebook scraper). Gotowe aktory, nie trzeba kodować. REST API.
x402 to propozycja protokołu HTTP oparta na kodzie 402 "Payment Required". Cloudflare promuje to jako sposób na monetyzację dostępu AI do treści stron. NIE jest to narzędzie do bypassowania Cloudflare.
Jak miałby działać:
X-402-Charge z kwotąStatus na 2026: Protokół NIE został wdrożony produkcyjnie. Cloudflare prowadzi testy z wybranymi partnerami. Brak publicznego API lub stawek.
Implementacje:
Wpływ na scraping: Jeśli protokół zostanie wdrożony, scraping x.com/reddit/facebook może stać się płatny — ale legalny i oficjalny. Na ten moment — obserwować, nie używać.
Cloudflare Turnstile (następca CAPTCHA) to system ochrony przed botami. Analizuje:
Dlaczego cloudscraper nie wystarcza: cloudscraper radzi sobie tylko ze starymi JS challenge. Turnstile wymaga pełnego środowiska przeglądarki (canvas, WebGL, czcionki). Potrzebujesz prawdziwej przeglądarki (Puppeteer/Playwright) + stealth plugin + dobre proxy.
Co działa na Turnstile: Browserbase, ZenRows (płatne), BrightData Web Unlocker, 2Captcha/Capsolver. Nie działa: curl, requests, cloudscraper, zwykłe headless Chrome bez stealth.
| # | Narzędzie | Ocena | Koszt/mies. | Działa na |
|---|---|---|---|---|
| 1 | Browserbase | ⭐⭐⭐⭐⭐ | $30 | Wszystkie (headless browser, JS SPA) |
| 2 | ZenRows | ⭐⭐⭐⭐⭐ | $49 | Wszystkie (bypass Cloudflare) |
| 3 | Serper.dev | ⭐⭐⭐⭐⭐ | $50 | Google Search API |
| 4 | Apify | ⭐⭐⭐⭐ | $0-49 | Gotowe scrapery X, Reddit, Google, FB |
| 5 | BrightData | ⭐⭐⭐⭐ | ~$0.008/req | Wszystkie (proxy + unlocker) |
| 6 | Jina Reader | ⭐⭐⭐ | $0 | Google, proste strony |
| 7 | SearXNG | ⭐⭐⭐ | $0 | Wyszukiwanie (self-hosted) |
| 8 | cloudscraper | ⭐⭐ | $0 | Stare Cloudflare, nie SPA |
| 9 | ScrapingBee | ⭐⭐ | $49 | Wolne (1 req/s) |
| 10 | Crawlee | ⭐⭐ | $0 | Node.js, wymaga proxy |
| Opcja | Typ | Koszt/mies. | X.com | FB | ||
|---|---|---|---|---|---|---|
| curl + UA | Free | $0 | ✅ | ❌ | ❌ | ✅ |
| cloudscraper | Free | $0 | ✅ | ⚠ (tylko bypass) | ❌ | ❌ |
| DuckDuckGo Lite | Free | $0 | search | - | - | - |
| Jina Reader | Free | $0 | ✅ | ❌ | ❌ | ❌ |
| Cloudflare BrowserRun | Free/Paid | $0-5 | ✅ | ✅ | ✅ | ✅ |
| SerpAPI | Paid | $25 | search | - | - | - |
| Serper.dev | Paid | $50 | search | - | - | - |
| BrightData | Paid | ~$12/mo | ✅ | ✅ | ✅ | ✅ |
| ZenRows | Paid | $49 | ✅ | ✅ | ✅ | ✅ |
| Browserbase | Paid | $30 | ✅ | ✅ | ✅ | ✅ |
| Apify | Freemium | $0-49 | ✅ | ✅ | ✅ | ✅ |
1. DuckDuckGo Lite -> web_search backend (darmowy, bez limitów)
2. curl + BS4 -> Google (działa)
3. cloudscraper -> x.com bypass (ale bez treści)
4. Cloudflare Browser Run -> x.com / reddit content (free tier, 100k req/dzień)
5. Jina Reader -> proste strony na markdown
1. Cloudflare Workers Paid ($5/mo) + Browser Run
- Renderowanie x.com, reddit, facebook
- Markdown output
- 10M req/mo
2. DuckDuckGo Lite (search, darmowy)
3. Własny Worker proxy do scrapowania
1. Apify (free $5 credit) -> gotowe scrapery X, Reddit, Google
2. Lub: ZenRows ($49) -> Cloudflare bypass + JS rendering
3. Lub: BrightData (pay-as-you-go) -> proxy + headless
Aby web_search działał w Hermes, ustaw w ~/.hermes/profiles/ceo/config.yaml:
web:
search_backend: duckduckgo # lub "searxng" jeśli self-hosted
extract_backend: jina # lub "native"
Dla SearXNG self-hosted ustaw zmienną środowiskową:
export SEARXNG_URL=http://localhost:8080
# lub w .env:
SEARXNG_URL=http://localhost:8080
Po zmianie configu zrób /reset w sesji.
/root/.hermes/profiles/ceo/config.yaml — konfiguracja CEO/root/.hermes/config.yaml — konfiguracja domyślna/root/.hermes/skills/devops/web-research-techniques/SKILL.md — skill scrapowania