| name | cloak-fetch |
| description | Use as a fallback when a web page won't load via WebFetch, curl, or any HTTP client because it's behind anti-bot protection — Cloudflare, DataDome, Akamai Bot Manager, PerimeterX/HUMAN, Imperva/Incapsula, F5/Distil, Kasada, AWS WAF, Sucuri, or generic WAF/CDN screening — and returns 403/429/"Just a moment"/"Access Denied"/"Pardon Our Interruption"/"Please verify you are a human"/"Incapsula incident"/"Sucuri WebSite Firewall"/"Reference |
| license | MIT |
| homepage | https://github.com/Agents365-ai/cloakFetch |
| compatibility | Requires CloakBrowser (https://github.com/CloakHQ/CloakBrowser) installed with the `cloakbrowser` Python package importable, plus `trafilatura` (`pip install trafilatura`) in the same env for HTML→markdown extraction. Set `CLOAKBROWSER_PYTHON` to your cloakbrowser-enabled Python if not in the default location. |
| platforms | ["macos","linux","windows"] |
| metadata | {"openclaw":{"requires":{"bins":"[Truncated]"},"emoji":"🥷"},"hermes":{"tags":["webfetch","cloudflare","datadome","akamai","perimeterx","imperva","sucuri","waf","stealth-browser","bot-bypass","fallback","scraping"],"category":"web","requires_tools":["python3"],"related_skills":[]},"author":"Agents365-ai","version":"0.3.0"} |
cloak-fetch — bot-protection / WAF fetch fallback
When a normal HTTP fetcher fails because the target site uses bot protection
or WAF screening, route the same URL through CloakBrowser (a real Chromium
with anti-bot patches at the C++ level and a genuine TLS/JA3 fingerprint) and
return clean markdown via trafilatura. The agent never has to tell the user
"the page is unfetchable" — it can try this skill first.
The underlying engine doesn't care which vendor is blocking the request —
Cloudflare, DataDome, Akamai, PerimeterX, Imperva, Distil, Kasada, AWS WAF,
or a no-name WAF rule. They all eventually let a real browser through, and
CloakBrowser is a real browser.
When to trigger
Use immediately after any of these symptoms from a recent fetch tool call:
| Symptom in tool output | Likely cause |
|---|
HTTP 403, 403 Forbidden, HTTP 429 | Bot protection or rate-limit block |
| Empty body / a few hundred bytes of nothing on a content-rich URL | Silent WAF / TLS-fingerprint reject |
| Page rendered as a near-empty shell with a JS challenge script | SPA-only page or anti-bot challenge |
Resource was not loaded, net::ERR_HTTP2_PROTOCOL_ERROR | Upstream blocked the fetch handshake |
Access denied, Blocked, You don't have permission | Generic WAF / bot detection |
Vendor-specific signatures
If the failure string roughly matches one of these, it's a CloakBrowser case —
don't waste another round-trip on a plain HTTP client:
| Vendor | Telltale strings / headers |
|---|
| Cloudflare | Just a moment..., Enable JavaScript and cookies to continue, cf-ray: header, __cf_bm cookie, Attention Required! | Cloudflare, Sorry, you have been blocked |
| DataDome | blocked by DataDome, <title>blocked</title>, dd-cookie / cookie, , geo-block style 403 with empty body |