Not in the top 1,000 by GitHub stars

Johell1NS/browser-search

A skill for AI agents: search the web with SearXNG, browse with Camofox, bypass protections with CloakBrowser. Anti-hallucination by design. Self-hosted, free, unlimited.

History

Review weekly changes to SKILL.md before updating. Dates mark the weeks in which we observed each version; checks apply to the recorded commits.

View weekly changes

SKILL.md

Week of Oct 26, 2026 · +0 / −0 lines

Before Network or broad shell → After Network or broad shell

81c40250aeb2 → 81c40250aeb2

Compare on GitHub

View on GitHubAdd to my skills

Verified commit 81c40250aeb26194e2c8da5c988e22757a4b38ed

542GitHub stars
2stars in 7 days
1skill in this repository
3commits in 30 days

Heat

5.2
  • Star growth, last 7 daysNot available
  • Star growth, last 24 hoursNot available
  • Rank movement, last 7 daysNot available
  • Commits, last 30 daysNot available
  • Accounts asking about it through MCP, last 7 daysNot available
  • Hot votes this weekNot available

Heat never changes the order by stars, and sponsorship never touches it. How heat works

Stars over time

Oct 25, 2026Nov 6, 2026542

30-day change not yet available: not enough history.

Individual skills in this repository

How it works

browser-search

When your agent uses it

Multi-engine web search (SearXNG) + browsing/scraping (Camofox, CloakBrowser). Use whenever you need to do web research.

What it loads into context

Frontmatter

42 tokens

Always available to the agent

SKILL.md

2,777 tokens

When the skill is activated

Reference documents

75,755 tokens

Loaded on request

Token counts are estimates. Scripts run separately; they are not counted as reference context.

The playbook

  1. What it does
  2. Core rules
  3. Tools
  4. Technical reference — Prerequisites & Docker containers

Scripts executed separately

  • package.json
  • scripts/audit.sh
  • scripts/camofox/Readability.js
  • scripts/camofox/camofox-client.mjs
  • scripts/camofox/camofox.mjs
  • scripts/check.sh
  • scripts/cloak/challenges.mjs
  • scripts/cloak/cloak-fetch.mjs
  • scripts/cloak/cloak-script.mjs
  • scripts/cloak/lib/__tests__/sandbox.test.mjs
  • scripts/cloak/lib/__tests__/url-validation.test.mjs
  • scripts/cloak/lib/credentials.mjs
  • scripts/cloak/lib/rate-limiter.mjs
  • scripts/cloak/lib/sandbox.mjs
  • scripts/cloak/lib/session.mjs
  • scripts/cloak/lib/url-validation.mjs
  • scripts/cloak/scripts/screenshot.mjs
  • scripts/searxng/searxng.mjs
  • scripts/setup.sh
  • scripts/smart-extract.mjs

Files

  • .gitignoreasset477 bytes
  • .npmrcasset103 bytes
  • FAQ.mddoc9,666 bytes
  • LICENSEasset1,076 bytes
  • README.mddoc21,640 bytes
  • SKILL.mdcore11,354 bytes
  • SKILL.mdcore11,354 bytes
  • SKILL.mdcore11,354 bytes
  • SKILL.mdcore11,354 bytes
  • SKILL.mdcore11,354 bytes
  • SKILL.mdcore11,354 bytes
  • SKILL.mdcore11,354 bytes
  • data/advanced-browsing-reference.mddoc6,735 bytes
  • docker/setup.mddoc4,363 bytes
  • i18n/README.ar.mddoc26,602 bytes
  • i18n/README.de.mddoc22,512 bytes
  • i18n/README.es.mddoc22,159 bytes
  • i18n/README.fr.mddoc22,933 bytes
  • i18n/README.hi.mddoc38,253 bytes
  • i18n/README.it.mddoc21,809 bytes
  • i18n/README.ja.mddoc25,787 bytes
  • i18n/README.ko.mddoc23,253 bytes
  • i18n/README.pt-BR.mddoc21,908 bytes
  • i18n/README.ru.mddoc31,208 bytes
  • i18n/README.zh-CN.mddoc20,272 bytes
  • img/logoLarge-browser-search.pngasset461,210 bytes
  • img/logoMedium-browser-search.pngasset160,334 bytes
  • img/logoSmall-browser-search.pngasset91,705 bytes
  • package-lock.jsonasset7,244 bytes
  • package.jsonruns334 bytes
  • scripts/audit.shruns10,707 bytes
  • scripts/camofox/Readability.jsruns89,980 bytes
  • scripts/camofox/Readability.js.sha256asset65 bytes
  • scripts/camofox/camofox-client.mjsruns6,450 bytes
  • scripts/camofox/camofox.mjsruns22,692 bytes
  • scripts/check.shruns6,497 bytes
  • scripts/cloak/challenges.mjsruns7,023 bytes
  • scripts/cloak/cloak-fetch.mjsruns11,215 bytes
  • scripts/cloak/cloak-script.mjsruns8,506 bytes
  • scripts/cloak/guida-fetch.mddoc3,870 bytes
  • scripts/cloak/lib/__tests__/sandbox.test.mjsruns3,935 bytes
  • scripts/cloak/lib/__tests__/url-validation.test.mjsruns5,746 bytes
  • scripts/cloak/lib/credentials.mjsruns1,901 bytes
  • scripts/cloak/lib/rate-limiter.mjsruns2,489 bytes
  • scripts/cloak/lib/sandbox.mjsruns3,045 bytes
  • scripts/cloak/lib/session.mjsruns5,580 bytes
  • scripts/cloak/lib/url-validation.mjsruns5,351 bytes
  • scripts/cloak/scripts/screenshot.mjsruns1,034 bytes
  • scripts/searxng/searxng.mjsruns11,105 bytes
  • scripts/setup.shruns2,633 bytes
  • scripts/smart-extract.mjsruns23,162 bytes
Read SKILL.md

# Browser Search

## What it does

Web search and browsing for AI agents. Three tools, from lightest to most powerful: SearXNG for search, Camofox for browsing, CloakBrowser for protected sites.

| Tool                         | When to use                                   | How                                                       |
| ---------------------------- | --------------------------------------------- | --------------------------------------------------------- |
| **SearXNG** (Docker, :8080)  | Default: Multi-source search, find URLs/info  | `exec` + `node <skill_dir>/scripts/searxng/searxng.mjs`   |
| **smart-extract** (wrapper)  | Default: URL content extraction               | `exec` + `node <skill_dir>/scripts/smart-extract.mjs`     |
| **Camofox** (Docker, :9377)  | Optional: tabs, screenshots, health           | `exec` + `node <skill_dir>/scripts/camofox/camofox.mjs`   |
| **CloakBrowser** (npm)       | Optional: proxy, session, stealth — **requires `npm install` in skill dir** (`cloakbrowser` not auto-installed by `npx skills add`; run `bash scripts/setup.sh` or `npm install` + `node -e "import('cloakbrowser').then(c=>c.ensureBinary())"`) | `exec` + `node <skill_dir>/scripts/cloak/cloak-fetch.mjs` |

## Core rules
View the complete source on GitHub

Skills included

  • browser-search

Repository facts

License
MIT
Created
Jun 22, 2026
Last pushed
Oct 22, 2026
Forks
42
Open issues
1
Project activity
Active

Before you install

Network or broad shell

Automated signals, not a guarantee

Checked Nov 4, 2026

Not fully analyzed: some files were too long, unreadable or missing. This never lowers the level.

Show 6 notes
  • SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
Show all 690 signals by file

.gitignore

  • Access to secretsline 5
    [Credential-related source omitted]
  • Access to secretsline 12
    [Credential-related source omitted]

.npmrc

  • Network accessline 1
    # npm security configuration registry=https://registry.npmjs.org/
  • Network accessline 2
    registry=https://registry.npmjs.org/

FAQ.md

  • Network accessline 209
    For SearXNG Docker, set `SEARXNG_HOST=127.0.0.1` in `searxng/.env` so the search API is not exposed on `0.0.0.0` (see [SearXNG docker docs](https://docs.searxng.org/admin/installation-docker.html)).
  • Network accessline 210
    search API is not exposed on `0.0.0.0` (see [SearXNG docker docs](https://docs.searxng.org/admin/installation-docker.html)).

README.md

  • Network accessline 7
    <p align="center">   <a href="https://github.com/Johell1NS/browser-search/releases"><img src="https://img.shields.io/github/v/release/Johell1NS/browser-search" alt="Release"></a>
  • Network accessline 8
    <a href="https://github.com/Johell1NS/browser-search/releases"><img src="https://img.shields.io/github/v/release/Johell1NS/browser-search" alt="Release"></a>
  • Network accessline 9
    <a href="https://github.com/Johell1NS/browser-search"><img src="https://img.shields.io/github/stars/Johell1NS/browser-search" alt="GitHub stars"></a>
  • Network accessline 10
    <a href="https://github.com/Johell1NS/browser-search/issues"><img src="https://img.shields.io/github/issues/Johell1NS/browser-search" alt="GitHub issues"></a>
  • Network accessline 11
    <a href="LICENSE"><img src="https://img.shields.io/github/license/Johell1NS/browser-search" alt="License: MIT"></a>
  • Network accessline 12
    <a href="https://nodejs.org"><img src="https://img.shields.io/badge/node-%3E%3D20.19-brightgreen" alt="Node.js >=20.19"></a>
  • Network accessline 13
    <a href="https://github.com/Johell1NS/browser-search/discussions"><img src="https://img.shields.io/badge/Discussions-GitHub-333333?logo=github&logoColor=white" alt="Discussions"></a>
  • Network accessline 14
    <a href="https://x.com/Johell1NS"><img src="https://img.shields.io/badge/-Follow%20updates-333333?logo=x" alt="Follow updates"></a>
  • Network accessline 42
    1. **[SearXNG](https://github.com/searxng/searxng)** — metasearch engine for the search phase (multi-source, JSON)
  • Network accessline 43
    2. **[Camofox](https://github.com/jo-inc/camofox-browser)** — browser navigable via REST API for standard sites
  • Network accessline 44
    3. **[CloakBrowser](https://github.com/cloakhq/cloakbrowser)** — stealth browser for anti-bot protected sites
  • Network accessline 185
    # Single-URL extraction (Readability.js, auto-fallback to snapshot) node scripts/camofox/camofox.mjs readability "https://example.com"
  • Network accessline 186
    node scripts/camofox/camofox.mjs readability "https://example.com"
  • Network accessline 188
    # JavaScript evaluation node scripts/camofox/camofox.mjs evaluate "https://example.com" "document.title"
  • Network accessline 189
    node scripts/camofox/camofox.mjs evaluate "https://example.com" "document.title"
  • Network accessline 191
    # Accessibility snapshot node scripts/camofox/camofox.mjs snapshot "https://example.com"
  • Network accessline 192
    node scripts/camofox/camofox.mjs snapshot "https://example.com"
  • Network accessline 210
    node scripts/cloak/cloak-fetch.mjs "https://protected-site.com"
  • Network accessline 211
    node scripts/cloak/cloak-fetch.mjs "https://protected-site.com" --proxy socks5://... --geoip
  • Network accessline 213
    # Markdown output (requires: pip install markitdown) node scripts/cloak/cloak-fetch.mjs "https://example.com" --format markdown
  • Network accessline 214
    node scripts/cloak/cloak-fetch.mjs "https://example.com" --format markdown
  • Network accessline 254
    ¹ "Camoufox Vs Playwright Stealth: Complete Comparison & Alternatives (2026)" — [blog.send.win](https://blog.send.win/camoufox-vs-playwright-stealth-complete-comparison-alternatives-2026/)
  • Network accessline 255
    ² CloakBrowser README — [github.com/cloakhq/cloakbrowser](https://github.com/cloakhq/cloakbrowser)
  • Network accessline 256
    ³ camoufox-pi README (cold start comparison) — [github.com/MonsieurBarti/camoufox-pi](https://github.com/MonsieurBarti/camoufox-pi)
  • Network accessline 257
    ⁴ Playwright issue #4345 (launch time variability) — [github.com/microsoft/playwright/issues/4345](https://github.com/microsoft/playwright/issues/4345)
  • Network accessline 291
    git clone https://github.com/Johell1NS/browser-search
  • Network accessline 305
    | Service | How | Reference | |---|---|---| | SearXNG | Docker, `:8080` | [docs.searxng.org](https://docs.searxng.org/admin/installation-docker.html) |
  • Network accessline 306
    |---|---|---| | SearXNG | Docker, `:8080` | [docs.searxng.org](https://docs.searxng.org/admin/installation-docker.html) | | Camofox | Docker, `:9377` | [github.com/jo-inc/camofox-browser](https://github.com/jo-inc/camofox-browser) |
  • Network accessline 307
    | SearXNG | Docker, `:8080` | [docs.searxng.org](https://docs.searxng.org/admin/installation-docker.html) | | Camofox | Docker, `:9377` | [github.com/jo-inc/camofox-browser](https://github.com/jo-inc/camofox-browser) | | CloakBrowser | npm 
  • Network accessline 308
    | Camofox | Docker, `:9377` | [github.com/jo-inc/camofox-browser](https://github.com/jo-inc/camofox-browser) |
  • Network accessline 325
    - Keep it local: bind SearXNG to `127.0.0.1` (`SEARXNG_HOST=127.0.0.1` in `.env`). - Valkey/Redis is **not needed** by the skill (SearXNG uses it only for the limiter, which stays off). - If SearXNG is not at `http://127.0.0.1:8080`, set `S
  • Network accessline 327
    - If SearXNG is not at `http://127.0.0.1:8080`, set `SEARXNG_URL`.
  • Access to secretsline 347
    [Credential-related source omitted]
  • Access to secretsline 372
    [Credential-related source omitted]

SKILL.md

  • Network accessline 125
    # 1. Exploratory: read page content exec node <skill_dir>/scripts/smart-extract.mjs "https://example.com"
  • Network accessline 126
    exec node <skill_dir>/scripts/smart-extract.mjs "https://example.com"
  • Network accessline 128
    # 2. Expression: extract specific data (only after reading the page) exec node <skill_dir>/scripts/smart-extract.mjs "https://example.com" --expr "document.querySelector('h1')?.textContent"
  • Network accessline 129
    exec node <skill_dir>/scripts/smart-extract.mjs "https://example.com" --expr "document.querySelector('h1')?.textContent"
  • Network accessline 155
    exec node <skill_dir>/scripts/smart-extract.mjs --fallback "https://url1" "https://url2" "https://url3"

data/advanced-browsing-reference.md

  • Access to secretsline 69
    [Credential-related source omitted]
  • Access to secretsline 76
    [Credential-related source omitted]
  • Network accessline 91
    # Raw HTML exec node <skill_dir>/scripts/cloak/cloak-fetch.mjs "https://example.com" --format html
  • Network accessline 92
    exec node <skill_dir>/scripts/cloak/cloak-fetch.mjs "https://example.com" --format html
  • Network accessline 94
    # Markdown (preserves headings, lists, links) exec node <skill_dir>/scripts/cloak/cloak-fetch.mjs "https://example.com" --format markdown
  • Network accessline 95
    exec node <skill_dir>/scripts/cloak/cloak-fetch.mjs "https://example.com" --format markdown
  • Network accessline 101
    exec node <skill_dir>/scripts/cloak/cloak-fetch.mjs "https://ebay.com/..." --scroll
  • Network accessline 109
    exec node <skill_dir>/scripts/cloak/cloak-fetch.mjs "https://protected-site.com" --session
  • Network accessline 117
    exec node <skill_dir>/scripts/cloak/cloak-fetch.mjs "https://..." --proxy "socks5://user:pass@proxy:1080" --geoip
  • Network accessline 125
    exec node <skill_dir>/scripts/cloak/cloak-fetch.mjs "https://..." --seed 12345 --platform windows
  • Network accessline 131
    exec node <skill_dir>/scripts/cloak/cloak-fetch.mjs "https://..." --retry 3 --timeout 60000 --wait 5000
  • Network accessline 139
    exec node <skill_dir>/scripts/cloak/cloak-script.mjs --script "<skill_dir>/scripts/cloak/scripts/screenshot.mjs" "https://example.com"
  • Network accessline 160
    |---|---|---| | `SEARXNG_QUERY_DELAY` | Pausa in ms tra query consecutive della modalità multi-query; `0` la disattiva | `3000` | | `SEARXNG_URL` | Indirizzo di SearXNG (anche con `/search` finale). Se impostata, lo script non riavvia nessu
  • Network accessline 161
    | `SEARXNG_QUERY_DELAY` | Pausa in ms tra query consecutive della modalità multi-query; `0` la disattiva | `3000` | | `SEARXNG_URL` | Indirizzo di SearXNG (anche con `/search` finale). Se impostata, lo script non riavvia nessun container in
  • Network accessline 162
    | `SEARXNG_URL` | Indirizzo di SearXNG (anche con `/search` finale). Se impostata, lo script non riavvia nessun container in caso di errore | `http://127.0.0.1:8080` |

docker/setup.md

  • Network accessline 9
    # SearXNG (via docker-compose) # Follow: https://docs.searxng.org/admin/installation-docker.html
  • Network accessline 10
    # Follow: https://docs.searxng.org/admin/installation-docker.html
  • Access to secretsline 11
    [Credential-related source omitted]
  • Access to secretsline 16
    [Credential-related source omitted]
  • Access to secretsline 17
    [Credential-related source omitted]
  • Access to secretsline 32
    [Credential-related source omitted]
  • Dangerous shell operationline 58
    docker stop camofox-browser && docker rm camofox-browser
  • Network accessline 70
    # Individual health checks curl -s http://localhost:9377/health   # Camofox
  • Network accessline 71
    curl -s http://localhost:9377/health   # Camofox
  • Network accessline 72
    curl -s http://localhost:8080/health   # SearXNG

i18n/README.ar.md

  • Network accessline 7
    <p align="center">   <a href="https://github.com/Johell1NS/browser-search/releases"><img src="https://img.shields.io/github/v/release/Johell1NS/browser-search" alt="Release"></a>
  • Network accessline 8
    <a href="https://github.com/Johell1NS/browser-search/releases"><img src="https://img.shields.io/github/v/release/Johell1NS/browser-search" alt="Release"></a>
  • Network accessline 9
    <a href="https://github.com/Johell1NS/browser-search"><img src="https://img.shields.io/github/stars/Johell1NS/browser-search" alt="GitHub stars"></a>
  • Network accessline 10
    <a href="https://github.com/Johell1NS/browser-search/issues"><img src="https://img.shields.io/github/issues/Johell1NS/browser-search" alt="GitHub issues"></a>
  • Network accessline 11
    <a href="../LICENSE"><img src="https://img.shields.io/github/license/Johell1NS/browser-search" alt="License: MIT"></a>
  • Network accessline 12
    <a href="https://nodejs.org"><img src="https://img.shields.io/badge/node-%3E%3D20.19-brightgreen" alt="Node.js >=20.19"></a>
  • Network accessline 13
    <a href="https://github.com/Johell1NS/browser-search/discussions"><img src="https://img.shields.io/badge/Discussions-GitHub-333333?logo=github&logoColor=white" alt="Discussions"></a>
  • Network accessline 14
    <a href="https://x.com/Johell1NS"><img src="https://img.shields.io/badge/-Follow%20updates-333333?logo=x" alt="Follow updates"></a>
  • Network accessline 27
    1. **[SearXNG](https://github.com/searxng/searxng)** — محرك بحث وصفي لمرحلة البحث (متعدد المصادر، JSON)
  • Network accessline 28
    2. **[Camofox](https://github.com/jo-inc/camofox-browser)** — متصفح يمكن الوصول إليه عبر REST API للمواقع القياسية
  • Network accessline 29
    3. **[CloakBrowser](https://github.com/cloakhq/cloakbrowser)** — متصفح متخفي للمواقع المحمية بمكافحة البوت
  • Network accessline 130
    # Single-URL extraction (Readability.js, auto-fallback to snapshot) node scripts/camofox/camofox.mjs readability "https://example.com"
  • Network accessline 131
    node scripts/camofox/camofox.mjs readability "https://example.com"
  • Network accessline 133
    # JavaScript evaluation node scripts/camofox/camofox.mjs evaluate "https://example.com" "document.title"
  • Network accessline 134
    node scripts/camofox/camofox.mjs evaluate "https://example.com" "document.title"
  • Network accessline 136
    # Accessibility snapshot node scripts/camofox/camofox.mjs snapshot "https://example.com"
  • Network accessline 137
    node scripts/camofox/camofox.mjs snapshot "https://example.com"
  • Network accessline 152
    node scripts/cloak/cloak-fetch.mjs "https://protected-site.com"
  • Network accessline 153
    node scripts/cloak/cloak-fetch.mjs "https://protected-site.com" --proxy socks5://... --geoip
  • Network accessline 155
    # Markdown output (requires: pip install markitdown) node scripts/cloak/cloak-fetch.mjs "https://example.com" --format markdown
  • Network accessline 156
    node scripts/cloak/cloak-fetch.mjs "https://example.com" --format markdown
  • Network accessline 186
    ¹ "Camoufox Vs Playwright Stealth: Complete Comparison & Alternatives (2026)" — [blog.send.win](https://blog.send.win/camoufox-vs-playwright-stealth-complete-comparison-alternatives-2026/)
  • Network accessline 187
    ² CloakBrowser README — [github.com/cloakhq/cloakbrowser](https://github.com/cloakhq/cloakbrowser)
  • Network accessline 188
    ³ camoufox-pi README (cold start comparison) — [github.com/MonsieurBarti/camoufox-pi](https://github.com/MonsieurBarti/camoufox-pi)
  • Network accessline 189
    ⁴ Playwright issue #4345 (launch time variability) — [github.com/microsoft/playwright/issues/4345](https://github.com/microsoft/playwright/issues/4345)
  • Network accessline 221
    git clone https://github.com/Johell1NS/browser-search
  • Network accessline 235
    | الخدمة | الطريقة | المرجع | |---|---|---| | SearXNG | Docker، `:8080` | [docs.searxng.org](https://docs.searxng.org/admin/installation-docker.html) |
  • Network accessline 236
    |---|---|---| | SearXNG | Docker، `:8080` | [docs.searxng.org](https://docs.searxng.org/admin/installation-docker.html) | | Camofox | Docker، `:9377` | [github.com/jo-inc/camofox-browser](https://github.com/jo-inc/camofox-browser) |
  • Network accessline 237
    | SearXNG | Docker، `:8080` | [docs.searxng.org](https://docs.searxng.org/admin/installation-docker.html) | | Camofox | Docker، `:9377` | [github.com/jo-inc/camofox-browser](https://github.com/jo-inc/camofox-browser) | | CloakBrowser | npm 
  • Network accessline 238
    | Camofox | Docker، `:9377` | [github.com/jo-inc/camofox-browser](https://github.com/jo-inc/camofox-browser) |
  • Network accessline 255
    - أبقِه محليًا: اربط SearXNG بالعنوان `127.0.0.1` (`SEARXNG_HOST=127.0.0.1` في `.env`). - المهارة **لا تحتاج** إلى Valkey/Redis (يستخدمه SearXNG فقط للمحدِّد limiter، وهو معطّل). - إذا لم يكن SearXNG على `http://127.0.0.1:8080`، فاضبط `SEAR
  • Network accessline 257
    - إذا لم يكن SearXNG على `http://127.0.0.1:8080`، فاضبط `SEARXNG_URL`.
  • Access to secretsline 275
    [Credential-related source omitted]
  • Access to secretsline 299
    [Credential-related source omitted]

i18n/README.de.md

  • Network accessline 7
    <p align="center">   <a href="https://github.com/Johell1NS/browser-search/releases"><img src="https://img.shields.io/github/v/release/Johell1NS/browser-search" alt="Release"></a>
  • Network accessline 8
    <a href="https://github.com/Johell1NS/browser-search/releases"><img src="https://img.shields.io/github/v/release/Johell1NS/browser-search" alt="Release"></a>
  • Network accessline 9
    <a href="https://github.com/Johell1NS/browser-search"><img src="https://img.shields.io/github/stars/Johell1NS/browser-search" alt="GitHub stars"></a>
  • Network accessline 10
    <a href="https://github.com/Johell1NS/browser-search/issues"><img src="https://img.shields.io/github/issues/Johell1NS/browser-search" alt="GitHub issues"></a>
  • Network accessline 11
    <a href="../LICENSE"><img src="https://img.shields.io/github/license/Johell1NS/browser-search" alt="License: MIT"></a>
  • Network accessline 12
    <a href="https://nodejs.org"><img src="https://img.shields.io/badge/node-%3E%3D20.19-brightgreen" alt="Node.js >=20.19"></a>
  • Network accessline 13
    <a href="https://github.com/Johell1NS/browser-search/discussions"><img src="https://img.shields.io/badge/Discussions-GitHub-333333?logo=github&logoColor=white" alt="Discussions"></a>
  • Network accessline 14
    <a href="https://x.com/Johell1NS"><img src="https://img.shields.io/badge/-Follow%20updates-333333?logo=x" alt="Follow updates"></a>
  • Network accessline 27
    1. **[SearXNG](https://github.com/searxng/searxng)** — Metasuchmaschine für die Suchphase (multiquelle, JSON)
  • Network accessline 28
    2. **[Camofox](https://github.com/jo-inc/camofox-browser)** — über REST API navigierbarer Browser für Standard-Websites
  • Network accessline 29
    3. **[CloakBrowser](https://github.com/cloakhq/cloakbrowser)** — Tarnkappenbrowser für anti-bot-geschützte Websites
  • Network accessline 130
    # Single-URL extraction (Readability.js, auto-fallback to snapshot) node scripts/camofox/camofox.mjs readability "https://example.com"
  • Network accessline 131
    node scripts/camofox/camofox.mjs readability "https://example.com"
  • Network accessline 133
    # JavaScript evaluation node scripts/camofox/camofox.mjs evaluate "https://example.com" "document.title"
  • Network accessline 134
    node scripts/camofox/camofox.mjs evaluate "https://example.com" "document.title"
  • Network accessline 136
    # Accessibility snapshot node scripts/camofox/camofox.mjs snapshot "https://example.com"
  • Network accessline 137
    node scripts/camofox/camofox.mjs snapshot "https://example.com"
  • Network accessline 152
    node scripts/cloak/cloak-fetch.mjs "https://protected-site.com"
  • Network accessline 153
    node scripts/cloak/cloak-fetch.mjs "https://protected-site.com" --proxy socks5://... --geoip
  • Network accessline 155
    # Markdown output (requires: pip install markitdown) node scripts/cloak/cloak-fetch.mjs "https://example.com" --format markdown
  • Network accessline 156
    node scripts/cloak/cloak-fetch.mjs "https://example.com" --format markdown
  • Network accessline 186
    ¹ "Camoufox Vs Playwright Stealth: Complete Comparison & Alternatives (2026)" — [blog.send.win](https://blog.send.win/camoufox-vs-playwright-stealth-complete-comparison-alternatives-2026/)
  • Network accessline 187
    ² CloakBrowser README — [github.com/cloakhq/cloakbrowser](https://github.com/cloakhq/cloakbrowser)
  • Network accessline 188
    ³ camoufox-pi README (cold start comparison) — [github.com/MonsieurBarti/camoufox-pi](https://github.com/MonsieurBarti/camoufox-pi)
  • Network accessline 189
    ⁴ Playwright issue #4345 (launch time variability) — [github.com/microsoft/playwright/issues/4345](https://github.com/microsoft/playwright/issues/4345)
  • Network accessline 221
    git clone https://github.com/Johell1NS/browser-search
  • Network accessline 235
    | Dienst | Wie | Referenz | |---|---|---| | SearXNG | Docker, `:8080` | [docs.searxng.org](https://docs.searxng.org/admin/installation-docker.html) |
  • Network accessline 236
    |---|---|---| | SearXNG | Docker, `:8080` | [docs.searxng.org](https://docs.searxng.org/admin/installation-docker.html) | | Camofox | Docker, `:9377` | [github.com/jo-inc/camofox-browser](https://github.com/jo-inc/camofox-browser) |
  • Network accessline 237
    | SearXNG | Docker, `:8080` | [docs.searxng.org](https://docs.searxng.org/admin/installation-docker.html) | | Camofox | Docker, `:9377` | [github.com/jo-inc/camofox-browser](https://github.com/jo-inc/camofox-browser) | | CloakBrowser | npm 
  • Network accessline 238
    | Camofox | Docker, `:9377` | [github.com/jo-inc/camofox-browser](https://github.com/jo-inc/camofox-browser) |
  • Network accessline 255
    - Lokal halten: SearXNG an `127.0.0.1` binden (`SEARXNG_HOST=127.0.0.1` in `.env`). - Valkey/Redis wird von der Skill **nicht benötigt** (SearXNG nutzt es nur für den Limiter, der ausgeschaltet bleibt). - Läuft SearXNG nicht unter `http://1
  • Network accessline 257
    - Läuft SearXNG nicht unter `http://127.0.0.1:8080`, setze `SEARXNG_URL`.
  • Access to secretsline 275
    [Credential-related source omitted]
  • Access to secretsline 299
    [Credential-related source omitted]

i18n/README.es.md

  • Network accessline 7
    <p align="center">   <a href="https://github.com/Johell1NS/browser-search/releases"><img src="https://img.shields.io/github/v/release/Johell1NS/browser-search" alt="Release"></a>
  • Network accessline 8
    <a href="https://github.com/Johell1NS/browser-search/releases"><img src="https://img.shields.io/github/v/release/Johell1NS/browser-search" alt="Release"></a>
  • Network accessline 9
    <a href="https://github.com/Johell1NS/browser-search"><img src="https://img.shields.io/github/stars/Johell1NS/browser-search" alt="GitHub stars"></a>
  • Network accessline 10
    <a href="https://github.com/Johell1NS/browser-search/issues"><img src="https://img.shields.io/github/issues/Johell1NS/browser-search" alt="GitHub issues"></a>
  • Network accessline 11
    <a href="../LICENSE"><img src="https://img.shields.io/github/license/Johell1NS/browser-search" alt="License: MIT"></a>
  • Network accessline 12
    <a href="https://nodejs.org"><img src="https://img.shields.io/badge/node-%3E%3D20.19-brightgreen" alt="Node.js >=20.19"></a>
  • Network accessline 13
    <a href="https://github.com/Johell1NS/browser-search/discussions"><img src="https://img.shields.io/badge/Discussions-GitHub-333333?logo=github&logoColor=white" alt="Discussions"></a>
  • Network accessline 14
    <a href="https://x.com/Johell1NS"><img src="https://img.shields.io/badge/-Follow%20updates-333333?logo=x" alt="Follow updates"></a>
  • Network accessline 27
    1. **[SearXNG](https://github.com/searxng/searxng)** — metabuscador para la fase de búsqueda (multifuente, JSON)
  • Network accessline 28
    2. **[Camofox](https://github.com/jo-inc/camofox-browser)** — navegador accesible vía API REST para sitios estándar
  • Network accessline 29
    3. **[CloakBrowser](https://github.com/cloakhq/cloakbrowser)** — navegador sigiloso para sitios protegidos contra bots
  • Network accessline 130
    # Single-URL extraction (Readability.js, auto-fallback to snapshot) node scripts/camofox/camofox.mjs readability "https://example.com"
  • Network accessline 131
    node scripts/camofox/camofox.mjs readability "https://example.com"
  • Network accessline 133
    # JavaScript evaluation node scripts/camofox/camofox.mjs evaluate "https://example.com" "document.title"
  • Network accessline 134
    node scripts/camofox/camofox.mjs evaluate "https://example.com" "document.title"
  • Network accessline 136
    # Accessibility snapshot node scripts/camofox/camofox.mjs snapshot "https://example.com"
  • Network accessline 137
    node scripts/camofox/camofox.mjs snapshot "https://example.com"
  • Network accessline 152
    node scripts/cloak/cloak-fetch.mjs "https://protected-site.com"
  • Network accessline 153
    node scripts/cloak/cloak-fetch.mjs "https://protected-site.com" --proxy socks5://... --geoip
  • Network accessline 155
    # Markdown output (requires: pip install markitdown) node scripts/cloak/cloak-fetch.mjs "https://example.com" --format markdown
  • Network accessline 156
    node scripts/cloak/cloak-fetch.mjs "https://example.com" --format markdown
  • Network accessline 186
    ¹ "Camoufox Vs Playwright Stealth: Complete Comparison & Alternatives (2026)" — [blog.send.win](https://blog.send.win/camoufox-vs-playwright-stealth-complete-comparison-alternatives-2026/)
  • Network accessline 187
    ² CloakBrowser README — [github.com/cloakhq/cloakbrowser](https://github.com/cloakhq/cloakbrowser)
  • Network accessline 188
    ³ camoufox-pi README (cold start comparison) — [github.com/MonsieurBarti/camoufox-pi](https://github.com/MonsieurBarti/camoufox-pi)
  • Network accessline 189
    ⁴ Playwright issue #4345 (launch time variability) — [github.com/microsoft/playwright/issues/4345](https://github.com/microsoft/playwright/issues/4345)
  • Network accessline 221
    git clone https://github.com/Johell1NS/browser-search
  • Network accessline 235
    | Servicio | Cómo | Referencia | |---|---|---| | SearXNG | Docker, `:8080` | [docs.searxng.org](https://docs.searxng.org/admin/installation-docker.html) |
  • Network accessline 236
    |---|---|---| | SearXNG | Docker, `:8080` | [docs.searxng.org](https://docs.searxng.org/admin/installation-docker.html) | | Camofox | Docker, `:9377` | [github.com/jo-inc/camofox-browser](https://github.com/jo-inc/camofox-browser) |
  • Network accessline 237
    | SearXNG | Docker, `:8080` | [docs.searxng.org](https://docs.searxng.org/admin/installation-docker.html) | | Camofox | Docker, `:9377` | [github.com/jo-inc/camofox-browser](https://github.com/jo-inc/camofox-browser) | | CloakBrowser | npm 
  • Network accessline 238
    | Camofox | Docker, `:9377` | [github.com/jo-inc/camofox-browser](https://github.com/jo-inc/camofox-browser) |
  • Network accessline 255
    - Mantenlo local: enlaza SearXNG a `127.0.0.1` (`SEARXNG_HOST=127.0.0.1` en `.env`). - La skill **no necesita** Valkey/Redis (SearXNG lo usa solo para el limiter, que queda desactivado). - Si SearXNG no está en `http://127.0.0.1:8080`, defi
  • Network accessline 257
    - Si SearXNG no está en `http://127.0.0.1:8080`, define `SEARXNG_URL`.
  • Access to secretsline 275
    [Credential-related source omitted]
  • Access to secretsline 299
    [Credential-related source omitted]

i18n/README.fr.md

  • Network accessline 7
    <p align="center">   <a href="https://github.com/Johell1NS/browser-search/releases"><img src="https://img.shields.io/github/v/release/Johell1NS/browser-search" alt="Release"></a>
  • Network accessline 8
    <a href="https://github.com/Johell1NS/browser-search/releases"><img src="https://img.shields.io/github/v/release/Johell1NS/browser-search" alt="Release"></a>
  • Network accessline 9
    <a href="https://github.com/Johell1NS/browser-search"><img src="https://img.shields.io/github/stars/Johell1NS/browser-search" alt="GitHub stars"></a>
  • Network accessline 10
    <a href="https://github.com/Johell1NS/browser-search/issues"><img src="https://img.shields.io/github/issues/Johell1NS/browser-search" alt="GitHub issues"></a>
  • Network accessline 11
    <a href="../LICENSE"><img src="https://img.shields.io/github/license/Johell1NS/browser-search" alt="License: MIT"></a>
  • Network accessline 12
    <a href="https://nodejs.org"><img src="https://img.shields.io/badge/node-%3E%3D20.19-brightgreen" alt="Node.js >=20.19"></a>
  • Network accessline 13
    <a href="https://github.com/Johell1NS/browser-search/discussions"><img src="https://img.shields.io/badge/Discussions-GitHub-333333?logo=github&logoColor=white" alt="Discussions"></a>
  • Network accessline 14
    <a href="https://x.com/Johell1NS"><img src="https://img.shields.io/badge/-Follow%20updates-333333?logo=x" alt="Follow updates"></a>
  • Network accessline 27
    1. **[SearXNG](https://github.com/searxng/searxng)** — métamoteur de recherche pour la phase de recherche (multisource, JSON)
  • Network accessline 28
    2. **[Camofox](https://github.com/jo-inc/camofox-browser)** — navigateur accessible via API REST pour les sites standards
  • Network accessline 29
    3. **[CloakBrowser](https://github.com/cloakhq/cloakbrowser)** — navigateur furtif pour les sites protégés anti-bot
  • Network accessline 130
    # Single-URL extraction (Readability.js, auto-fallback to snapshot) node scripts/camofox/camofox.mjs readability "https://example.com"
  • Network accessline 131
    node scripts/camofox/camofox.mjs readability "https://example.com"
  • Network accessline 133
    # JavaScript evaluation node scripts/camofox/camofox.mjs evaluate "https://example.com" "document.title"
  • Network accessline 134
    node scripts/camofox/camofox.mjs evaluate "https://example.com" "document.title"
  • Network accessline 136
    # Accessibility snapshot node scripts/camofox/camofox.mjs snapshot "https://example.com"
  • Network accessline 137
    node scripts/camofox/camofox.mjs snapshot "https://example.com"
  • Network accessline 152
    node scripts/cloak/cloak-fetch.mjs "https://protected-site.com"
  • Network accessline 153
    node scripts/cloak/cloak-fetch.mjs "https://protected-site.com" --proxy socks5://... --geoip
  • Network accessline 155
    # Markdown output (requires: pip install markitdown) node scripts/cloak/cloak-fetch.mjs "https://example.com" --format markdown
  • Network accessline 156
    node scripts/cloak/cloak-fetch.mjs "https://example.com" --format markdown
  • Network accessline 186
    ¹ "Camoufox Vs Playwright Stealth: Complete Comparison & Alternatives (2026)" — [blog.send.win](https://blog.send.win/camoufox-vs-playwright-stealth-complete-comparison-alternatives-2026/)
  • Network accessline 187
    ² CloakBrowser README — [github.com/cloakhq/cloakbrowser](https://github.com/cloakhq/cloakbrowser)
  • Network accessline 188
    ³ camoufox-pi README (cold start comparison) — [github.com/MonsieurBarti/camoufox-pi](https://github.com/MonsieurBarti/camoufox-pi)
  • Network accessline 189
    ⁴ Playwright issue #4345 (launch time variability) — [github.com/microsoft/playwright/issues/4345](https://github.com/microsoft/playwright/issues/4345)
  • Network accessline 221
    git clone https://github.com/Johell1NS/browser-search
  • Network accessline 235
    | Service | Comment | Référence | |---|---|---| | SearXNG | Docker, `:8080` | [docs.searxng.org](https://docs.searxng.org/admin/installation-docker.html) |
  • Network accessline 236
    |---|---|---| | SearXNG | Docker, `:8080` | [docs.searxng.org](https://docs.searxng.org/admin/installation-docker.html) | | Camofox | Docker, `:9377` | [github.com/jo-inc/camofox-browser](https://github.com/jo-inc/camofox-browser) |
  • Network accessline 237
    | SearXNG | Docker, `:8080` | [docs.searxng.org](https://docs.searxng.org/admin/installation-docker.html) | | Camofox | Docker, `:9377` | [github.com/jo-inc/camofox-browser](https://github.com/jo-inc/camofox-browser) | | CloakBrowser | npm 
  • Network accessline 238
    | Camofox | Docker, `:9377` | [github.com/jo-inc/camofox-browser](https://github.com/jo-inc/camofox-browser) |
  • Network accessline 255
    - Gardez-le en local : liez SearXNG à `127.0.0.1` (`SEARXNG_HOST=127.0.0.1` dans `.env`). - Valkey/Redis n'est **pas nécessaire** à la skill (SearXNG ne l'utilise que pour le limiteur, qui reste désactivé). - Si SearXNG n'est pas sur `http:
  • Network accessline 257
    - Si SearXNG n'est pas sur `http://127.0.0.1:8080`, définissez `SEARXNG_URL`.
  • Access to secretsline 275
    [Credential-related source omitted]
  • Access to secretsline 299
    [Credential-related source omitted]

i18n/README.hi.md

  • Network accessline 7
    <p align="center">   <a href="https://github.com/Johell1NS/browser-search/releases"><img src="https://img.shields.io/github/v/release/Johell1NS/browser-search" alt="Release"></a>
  • Network accessline 8
    <a href="https://github.com/Johell1NS/browser-search/releases"><img src="https://img.shields.io/github/v/release/Johell1NS/browser-search" alt="Release"></a>
  • Network accessline 9
    <a href="https://github.com/Johell1NS/browser-search"><img src="https://img.shields.io/github/stars/Johell1NS/browser-search" alt="GitHub stars"></a>
  • Network accessline 10
    <a href="https://github.com/Johell1NS/browser-search/issues"><img src="https://img.shields.io/github/issues/Johell1NS/browser-search" alt="GitHub issues"></a>
  • Network accessline 11
    <a href="../LICENSE"><img src="https://img.shields.io/github/license/Johell1NS/browser-search" alt="License: MIT"></a>
  • Network accessline 12
    <a href="https://nodejs.org"><img src="https://img.shields.io/badge/node-%3E%3D20.19-brightgreen" alt="Node.js >=20.19"></a>
  • Network accessline 13
    <a href="https://github.com/Johell1NS/browser-search/discussions"><img src="https://img.shields.io/badge/Discussions-GitHub-333333?logo=github&logoColor=white" alt="Discussions"></a>
  • Network accessline 14
    <a href="https://x.com/Johell1NS"><img src="https://img.shields.io/badge/-Follow%20updates-333333?logo=x" alt="Follow updates"></a>
  • Network accessline 27
    1. **[SearXNG](https://github.com/searxng/searxng)** — खोज चरण के लिए मेटासर्च इंजन (मल्टी-सोर्स, JSON)
  • Network accessline 28
    2. **[Camofox](https://github.com/jo-inc/camofox-browser)** — मानक साइटों के लिए REST API के माध्यम से नेविगेट किया जा सकने वाला ब्राउज़र
  • Network accessline 29
    3. **[CloakBrowser](https://github.com/cloakhq/cloakbrowser)** — एंटी-बॉट संरक्षित साइटों के लिए स्टील्थ ब्राउज़र
  • Network accessline 130
    # Single-URL extraction (Readability.js, auto-fallback to snapshot) node scripts/camofox/camofox.mjs readability "https://example.com"
  • Network accessline 131
    node scripts/camofox/camofox.mjs readability "https://example.com"
  • Network accessline 133
    # JavaScript evaluation node scripts/camofox/camofox.mjs evaluate "https://example.com" "document.title"
  • Network accessline 134
    node scripts/camofox/camofox.mjs evaluate "https://example.com" "document.title"
  • Network accessline 136
    # Accessibility snapshot node scripts/camofox/camofox.mjs snapshot "https://example.com"
  • Network accessline 137
    node scripts/camofox/camofox.mjs snapshot "https://example.com"
  • Network accessline 152
    node scripts/cloak/cloak-fetch.mjs "https://protected-site.com"
  • Network accessline 153
    node scripts/cloak/cloak-fetch.mjs "https://protected-site.com" --proxy socks5://... --geoip
  • Network accessline 155
    # Markdown output (requires: pip install markitdown) node scripts/cloak/cloak-fetch.mjs "https://example.com" --format markdown
  • Network accessline 156
    node scripts/cloak/cloak-fetch.mjs "https://example.com" --format markdown
  • Network accessline 186
    ¹ "Camoufox Vs Playwright Stealth: Complete Comparison & Alternatives (2026)" — [blog.send.win](https://blog.send.win/camoufox-vs-playwright-stealth-complete-comparison-alternatives-2026/)
  • Network accessline 187
    ² CloakBrowser README — [github.com/cloakhq/cloakbrowser](https://github.com/cloakhq/cloakbrowser)
  • Network accessline 188
    ³ camoufox-pi README (cold start comparison) — [github.com/MonsieurBarti/camoufox-pi](https://github.com/MonsieurBarti/camoufox-pi)
  • Network accessline 189
    ⁴ Playwright issue #4345 (launch time variability) — [github.com/microsoft/playwright/issues/4345](https://github.com/microsoft/playwright/issues/4345)
  • Network accessline 221
    git clone https://github.com/Johell1NS/browser-search
  • Network accessline 235
    | सेवा | कैसे | संदर्भ | |---|---|---| | SearXNG | Docker, `:8080` | [docs.searxng.org](https://docs.searxng.org/admin/installation-docker.html) |
  • Network accessline 236
    |---|---|---| | SearXNG | Docker, `:8080` | [docs.searxng.org](https://docs.searxng.org/admin/installation-docker.html) | | Camofox | Docker, `:9377` | [github.com/jo-inc/camofox-browser](https://github.com/jo-inc/camofox-browser) |
  • Network accessline 237
    | SearXNG | Docker, `:8080` | [docs.searxng.org](https://docs.searxng.org/admin/installation-docker.html) | | Camofox | Docker, `:9377` | [github.com/jo-inc/camofox-browser](https://github.com/jo-inc/camofox-browser) | | CloakBrowser | npm 
  • Network accessline 238
    | Camofox | Docker, `:9377` | [github.com/jo-inc/camofox-browser](https://github.com/jo-inc/camofox-browser) |
  • Network accessline 255
    - इसे लोकल रखें: SearXNG को `127.0.0.1` से बाइंड करें (`.env` में `SEARXNG_HOST=127.0.0.1`)। - स्किल को Valkey/Redis की **ज़रूरत नहीं** है (SearXNG इसे केवल limiter के लिए उपयोग करता है, जो बंद रहता है)। - यदि SearXNG `http://127.0.0.1:8080
  • Network accessline 257
    - यदि SearXNG `http://127.0.0.1:8080` पर नहीं है, तो `SEARXNG_URL` सेट करें।
  • Access to secretsline 275
    [Credential-related source omitted]
  • Access to secretsline 299
    [Credential-related source omitted]

i18n/README.it.md

  • Network accessline 7
    <p align="center">   <a href="https://github.com/Johell1NS/browser-search/releases"><img src="https://img.shields.io/github/v/release/Johell1NS/browser-search" alt="Release"></a>
  • Network accessline 8
    <a href="https://github.com/Johell1NS/browser-search/releases"><img src="https://img.shields.io/github/v/release/Johell1NS/browser-search" alt="Release"></a>
  • Network accessline 9
    <a href="https://github.com/Johell1NS/browser-search"><img src="https://img.shields.io/github/stars/Johell1NS/browser-search" alt="GitHub stars"></a>
  • Network accessline 10
    <a href="https://github.com/Johell1NS/browser-search/issues"><img src="https://img.shields.io/github/issues/Johell1NS/browser-search" alt="GitHub issues"></a>
  • Network accessline 11
    <a href="../LICENSE"><img src="https://img.shields.io/github/license/Johell1NS/browser-search" alt="License: MIT"></a>
  • Network accessline 12
    <a href="https://nodejs.org"><img src="https://img.shields.io/badge/node-%3E%3D20.19-brightgreen" alt="Node.js >=20.19"></a>
  • Network accessline 13
    <a href="https://github.com/Johell1NS/browser-search/discussions"><img src="https://img.shields.io/badge/Discussions-GitHub-333333?logo=github&logoColor=white" alt="Discussions"></a>
  • Network accessline 14
    <a href="https://x.com/Johell1NS"><img src="https://img.shields.io/badge/-Follow%20updates-333333?logo=x" alt="Follow updates"></a>
  • Network accessline 27
    1. **[SearXNG](https://github.com/searxng/searxng)** — metamotore di ricerca per la fase di ricerca (multi-fonte, JSON)
  • Network accessline 28
    2. **[Camofox](https://github.com/jo-inc/camofox-browser)** — browser navigabile via REST API per siti standard
  • Network accessline 29
    3. **[CloakBrowser](https://github.com/cloakhq/cloakbrowser)** — browser stealth per siti protetti anti-bot
  • Network accessline 130
    # Single-URL extraction (Readability.js, auto-fallback to snapshot) node scripts/camofox/camofox.mjs readability "https://example.com"
  • Network accessline 131
    node scripts/camofox/camofox.mjs readability "https://example.com"
  • Network accessline 133
    # JavaScript evaluation node scripts/camofox/camofox.mjs evaluate "https://example.com" "document.title"
  • Network accessline 134
    node scripts/camofox/camofox.mjs evaluate "https://example.com" "document.title"
  • Network accessline 136
    # Accessibility snapshot node scripts/camofox/camofox.mjs snapshot "https://example.com"
  • Network accessline 137
    node scripts/camofox/camofox.mjs snapshot "https://example.com"
  • Network accessline 152
    node scripts/cloak/cloak-fetch.mjs "https://protected-site.com"
  • Network accessline 153
    node scripts/cloak/cloak-fetch.mjs "https://protected-site.com" --proxy socks5://... --geoip
  • Network accessline 155
    # Markdown output (requires: pip install markitdown) node scripts/cloak/cloak-fetch.mjs "https://example.com" --format markdown
  • Network accessline 156
    node scripts/cloak/cloak-fetch.mjs "https://example.com" --format markdown
  • Network accessline 186
    ¹ "Camoufox Vs Playwright Stealth: Complete Comparison & Alternatives (2026)" — [blog.send.win](https://blog.send.win/camoufox-vs-playwright-stealth-complete-comparison-alternatives-2026/)
  • Network accessline 187
    ² CloakBrowser README — [github.com/cloakhq/cloakbrowser](https://github.com/cloakhq/cloakbrowser)
  • Network accessline 188
    ³ camoufox-pi README (cold start comparison) — [github.com/MonsieurBarti/camoufox-pi](https://github.com/MonsieurBarti/camoufox-pi)
  • Network accessline 189
    ⁴ Playwright issue #4345 (launch time variability) — [github.com/microsoft/playwright/issues/4345](https://github.com/microsoft/playwright/issues/4345)
  • Network accessline 221
    git clone https://github.com/Johell1NS/browser-search
  • Network accessline 235
    | Servizio | Come | Riferimento | |---|---|---| | SearXNG | Docker, `:8080` | [docs.searxng.org](https://docs.searxng.org/admin/installation-docker.html) |
  • Network accessline 236
    |---|---|---| | SearXNG | Docker, `:8080` | [docs.searxng.org](https://docs.searxng.org/admin/installation-docker.html) | | Camofox | Docker, `:9377` | [github.com/jo-inc/camofox-browser](https://github.com/jo-inc/camofox-browser) |
  • Network accessline 237
    | SearXNG | Docker, `:8080` | [docs.searxng.org](https://docs.searxng.org/admin/installation-docker.html) | | Camofox | Docker, `:9377` | [github.com/jo-inc/camofox-browser](https://github.com/jo-inc/camofox-browser) | | CloakBrowser | npm 
  • Network accessline 238
    | Camofox | Docker, `:9377` | [github.com/jo-inc/camofox-browser](https://github.com/jo-inc/camofox-browser) |
  • Network accessline 255
    - Tienilo in locale: collega SearXNG a `127.0.0.1` (`SEARXNG_HOST=127.0.0.1` in `.env`). - Valkey/Redis **non serve** alla skill (SearXNG lo usa solo per il limiter, che resta spento). - Se SearXNG non è su `http://127.0.0.1:8080`, imposta 
  • Network accessline 257
    - Se SearXNG non è su `http://127.0.0.1:8080`, imposta `SEARXNG_URL`.
  • Access to secretsline 275
    [Credential-related source omitted]
  • Access to secretsline 299
    [Credential-related source omitted]

i18n/README.ja.md

  • Network accessline 7
    <p align="center">   <a href="https://github.com/Johell1NS/browser-search/releases"><img src="https://img.shields.io/github/v/release/Johell1NS/browser-search" alt="Release"></a>
  • Network accessline 8
    <a href="https://github.com/Johell1NS/browser-search/releases"><img src="https://img.shields.io/github/v/release/Johell1NS/browser-search" alt="Release"></a>
  • Network accessline 9
    <a href="https://github.com/Johell1NS/browser-search"><img src="https://img.shields.io/github/stars/Johell1NS/browser-search" alt="GitHub stars"></a>
  • Network accessline 10
    <a href="https://github.com/Johell1NS/browser-search/issues"><img src="https://img.shields.io/github/issues/Johell1NS/browser-search" alt="GitHub issues"></a>
  • Network accessline 11
    <a href="../LICENSE"><img src="https://img.shields.io/github/license/Johell1NS/browser-search" alt="License: MIT"></a>
  • Network accessline 12
    <a href="https://nodejs.org"><img src="https://img.shields.io/badge/node-%3E%3D20.19-brightgreen" alt="Node.js >=20.19"></a>
  • Network accessline 13
    <a href="https://github.com/Johell1NS/browser-search/discussions"><img src="https://img.shields.io/badge/Discussions-GitHub-333333?logo=github&logoColor=white" alt="Discussions"></a>
  • Network accessline 14
    <a href="https://x.com/Johell1NS"><img src="https://img.shields.io/badge/-Follow%20updates-333333?logo=x" alt="Follow updates"></a>
  • Network accessline 27
    1. **[SearXNG](https://github.com/searxng/searxng)** — 検索フェーズのためのメタサーチエンジン(マルチソース、JSON)
  • Network accessline 28
    2. **[Camofox](https://github.com/jo-inc/camofox-browser)** — 標準サイト向けのREST API経由で操作可能なブラウザ
  • Network accessline 29
    3. **[CloakBrowser](https://github.com/cloakhq/cloakbrowser)** — アンチボット保護サイト向けのステルスブラウザ
  • Network accessline 130
    # Single-URL extraction (Readability.js, auto-fallback to snapshot) node scripts/camofox/camofox.mjs readability "https://example.com"
  • Network accessline 131
    node scripts/camofox/camofox.mjs readability "https://example.com"
  • Network accessline 133
    # JavaScript evaluation node scripts/camofox/camofox.mjs evaluate "https://example.com" "document.title"
  • Network accessline 134
    node scripts/camofox/camofox.mjs evaluate "https://example.com" "document.title"
  • Network accessline 136
    # Accessibility snapshot node scripts/camofox/camofox.mjs snapshot "https://example.com"
  • Network accessline 137
    node scripts/camofox/camofox.mjs snapshot "https://example.com"
  • Network accessline 152
    node scripts/cloak/cloak-fetch.mjs "https://protected-site.com"
  • Network accessline 153
    node scripts/cloak/cloak-fetch.mjs "https://protected-site.com" --proxy socks5://... --geoip
  • Network accessline 155
    # Markdown output (requires: pip install markitdown) node scripts/cloak/cloak-fetch.mjs "https://example.com" --format markdown
  • Network accessline 156
    node scripts/cloak/cloak-fetch.mjs "https://example.com" --format markdown
  • Network accessline 186
    ¹ "Camoufox Vs Playwright Stealth: Complete Comparison & Alternatives (2026)" — [blog.send.win](https://blog.send.win/camoufox-vs-playwright-stealth-complete-comparison-alternatives-2026/)
  • Network accessline 187
    ² CloakBrowser README — [github.com/cloakhq/cloakbrowser](https://github.com/cloakhq/cloakbrowser)
  • Network accessline 188
    ³ camoufox-pi README (cold start comparison) — [github.com/MonsieurBarti/camoufox-pi](https://github.com/MonsieurBarti/camoufox-pi)
  • Network accessline 189
    ⁴ Playwright issue #4345 (launch time variability) — [github.com/microsoft/playwright/issues/4345](https://github.com/microsoft/playwright/issues/4345)
  • Network accessline 221
    git clone https://github.com/Johell1NS/browser-search
  • Network accessline 235
    | サービス | 方法 | 参照 | |---|---|---| | SearXNG | Docker, `:8080` | [docs.searxng.org](https://docs.searxng.org/admin/installation-docker.html) |
  • Network accessline 236
    |---|---|---| | SearXNG | Docker, `:8080` | [docs.searxng.org](https://docs.searxng.org/admin/installation-docker.html) | | Camofox | Docker, `:9377` | [github.com/jo-inc/camofox-browser](https://github.com/jo-inc/camofox-browser) |
  • Network accessline 237
    | SearXNG | Docker, `:8080` | [docs.searxng.org](https://docs.searxng.org/admin/installation-docker.html) | | Camofox | Docker, `:9377` | [github.com/jo-inc/camofox-browser](https://github.com/jo-inc/camofox-browser) | | CloakBrowser | npm 
  • Network accessline 238
    | Camofox | Docker, `:9377` | [github.com/jo-inc/camofox-browser](https://github.com/jo-inc/camofox-browser) |
  • Network accessline 255
    - ローカルに限定してください: SearXNG を `127.0.0.1` にバインドします(`.env` の `SEARXNG_HOST=127.0.0.1`)。 - スキルに Valkey/Redis は**不要**です(SearXNG はリミッターにのみ使用し、リミッターは無効のままです)。 - SearXNG が `http://127.0.0.1:8080` にない場合は `SEARXNG_URL` を設定してください。
  • Network accessline 257
    - SearXNG が `http://127.0.0.1:8080` にない場合は `SEARXNG_URL` を設定してください。
  • Access to secretsline 275
    [Credential-related source omitted]
  • Access to secretsline 299
    [Credential-related source omitted]

i18n/README.ko.md

  • Network accessline 7
    <p align="center">   <a href="https://github.com/Johell1NS/browser-search/releases"><img src="https://img.shields.io/github/v/release/Johell1NS/browser-search" alt="Release"></a>
  • Network accessline 8
    <a href="https://github.com/Johell1NS/browser-search/releases"><img src="https://img.shields.io/github/v/release/Johell1NS/browser-search" alt="Release"></a>
  • Network accessline 9
    <a href="https://github.com/Johell1NS/browser-search"><img src="https://img.shields.io/github/stars/Johell1NS/browser-search" alt="GitHub stars"></a>
  • Network accessline 10
    <a href="https://github.com/Johell1NS/browser-search/issues"><img src="https://img.shields.io/github/issues/Johell1NS/browser-search" alt="GitHub issues"></a>
  • Network accessline 11
    <a href="../LICENSE"><img src="https://img.shields.io/github/license/Johell1NS/browser-search" alt="License: MIT"></a>
  • Network accessline 12
    <a href="https://nodejs.org"><img src="https://img.shields.io/badge/node-%3E%3D20.19-brightgreen" alt="Node.js >=20.19"></a>
  • Network accessline 13
    <a href="https://github.com/Johell1NS/browser-search/discussions"><img src="https://img.shields.io/badge/Discussions-GitHub-333333?logo=github&logoColor=white" alt="Discussions"></a>
  • Network accessline 14
    <a href="https://x.com/Johell1NS"><img src="https://img.shields.io/badge/-Follow%20updates-333333?logo=x" alt="Follow updates"></a>
  • Network accessline 27
    1. **[SearXNG](https://github.com/searxng/searxng)** — 검색 단계를 위한 메타검색 엔진 (다중 소스, JSON)
  • Network accessline 28
    2. **[Camofox](https://github.com/jo-inc/camofox-browser)** — 표준 사이트를 위한 REST API로 탐색 가능한 브라우저
  • Network accessline 29
    3. **[CloakBrowser](https://github.com/cloakhq/cloakbrowser)** — 안티봇 보호 사이트를 위한 스텔스 브라우저
  • Network accessline 130
    # Single-URL extraction (Readability.js, auto-fallback to snapshot) node scripts/camofox/camofox.mjs readability "https://example.com"
  • Network accessline 131
    node scripts/camofox/camofox.mjs readability "https://example.com"
  • Network accessline 133
    # JavaScript evaluation node scripts/camofox/camofox.mjs evaluate "https://example.com" "document.title"
  • Network accessline 134
    node scripts/camofox/camofox.mjs evaluate "https://example.com" "document.title"
  • Network accessline 136
    # Accessibility snapshot node scripts/camofox/camofox.mjs snapshot "https://example.com"
  • Network accessline 137
    node scripts/camofox/camofox.mjs snapshot "https://example.com"
  • Network accessline 152
    node scripts/cloak/cloak-fetch.mjs "https://protected-site.com"
  • Network accessline 153
    node scripts/cloak/cloak-fetch.mjs "https://protected-site.com" --proxy socks5://... --geoip
  • Network accessline 155
    # Markdown output (requires: pip install markitdown) node scripts/cloak/cloak-fetch.mjs "https://example.com" --format markdown
  • Network accessline 156
    node scripts/cloak/cloak-fetch.mjs "https://example.com" --format markdown
  • Network accessline 186
    ¹ "Camoufox Vs Playwright Stealth: Complete Comparison & Alternatives (2026)" — [blog.send.win](https://blog.send.win/camoufox-vs-playwright-stealth-complete-comparison-alternatives-2026/)
  • Network accessline 187
    ² CloakBrowser README — [github.com/cloakhq/cloakbrowser](https://github.com/cloakhq/cloakbrowser)
  • Network accessline 188
    ³ camoufox-pi README (cold start comparison) — [github.com/MonsieurBarti/camoufox-pi](https://github.com/MonsieurBarti/camoufox-pi)
  • Network accessline 189
    ⁴ Playwright issue #4345 (launch time variability) — [github.com/microsoft/playwright/issues/4345](https://github.com/microsoft/playwright/issues/4345)
  • Network accessline 221
    git clone https://github.com/Johell1NS/browser-search
  • Network accessline 235
    | 서비스 | 방법 | 참조 | |---|---|---| | SearXNG | Docker, `:8080` | [docs.searxng.org](https://docs.searxng.org/admin/installation-docker.html) |
  • Network accessline 236
    |---|---|---| | SearXNG | Docker, `:8080` | [docs.searxng.org](https://docs.searxng.org/admin/installation-docker.html) | | Camofox | Docker, `:9377` | [github.com/jo-inc/camofox-browser](https://github.com/jo-inc/camofox-browser) |
  • Network accessline 237
    | SearXNG | Docker, `:8080` | [docs.searxng.org](https://docs.searxng.org/admin/installation-docker.html) | | Camofox | Docker, `:9377` | [github.com/jo-inc/camofox-browser](https://github.com/jo-inc/camofox-browser) | | CloakBrowser | npm 
  • Network accessline 238
    | Camofox | Docker, `:9377` | [github.com/jo-inc/camofox-browser](https://github.com/jo-inc/camofox-browser) |
  • Network accessline 255
    - 로컬로 유지하세요: SearXNG를 `127.0.0.1`에 바인딩합니다(`.env`의 `SEARXNG_HOST=127.0.0.1`). - 스킬에는 Valkey/Redis가 **필요하지 않습니다**(SearXNG는 limiter에만 사용하며, limiter는 꺼 둡니다). - SearXNG가 `http://127.0.0.1:8080`에 없다면 `SEARXNG_URL`을 설정하세요.
  • Network accessline 257
    - SearXNG가 `http://127.0.0.1:8080`에 없다면 `SEARXNG_URL`을 설정하세요.
  • Access to secretsline 275
    [Credential-related source omitted]
  • Access to secretsline 299
    [Credential-related source omitted]

i18n/README.pt-BR.md

  • Network accessline 7
    <p align="center">   <a href="https://github.com/Johell1NS/browser-search/releases"><img src="https://img.shields.io/github/v/release/Johell1NS/browser-search" alt="Release"></a>
  • Network accessline 8
    <a href="https://github.com/Johell1NS/browser-search/releases"><img src="https://img.shields.io/github/v/release/Johell1NS/browser-search" alt="Release"></a>
  • Network accessline 9
    <a href="https://github.com/Johell1NS/browser-search"><img src="https://img.shields.io/github/stars/Johell1NS/browser-search" alt="GitHub stars"></a>
  • Network accessline 10
    <a href="https://github.com/Johell1NS/browser-search/issues"><img src="https://img.shields.io/github/issues/Johell1NS/browser-search" alt="GitHub issues"></a>
  • Network accessline 11
    <a href="../LICENSE"><img src="https://img.shields.io/github/license/Johell1NS/browser-search" alt="License: MIT"></a>
  • Network accessline 12
    <a href="https://nodejs.org"><img src="https://img.shields.io/badge/node-%3E%3D20.19-brightgreen" alt="Node.js >=20.19"></a>
  • Network accessline 13
    <a href="https://github.com/Johell1NS/browser-search/discussions"><img src="https://img.shields.io/badge/Discussions-GitHub-333333?logo=github&logoColor=white" alt="Discussions"></a>
  • Network accessline 14
    <a href="https://x.com/Johell1NS"><img src="https://img.shields.io/badge/-Follow%20updates-333333?logo=x" alt="Follow updates"></a>
  • Network accessline 27
    1. **[SearXNG](https://github.com/searxng/searxng)** — metabuscador para a fase de pesquisa (multifonte, JSON)
  • Network accessline 28
    2. **[Camofox](https://github.com/jo-inc/camofox-browser)** — navegador acessível via API REST para sites padrão
  • Network accessline 29
    3. **[CloakBrowser](https://github.com/cloakhq/cloakbrowser)** — navegador furtivo para sites protegidos contra bots
  • Network accessline 130
    # Single-URL extraction (Readability.js, auto-fallback to snapshot) node scripts/camofox/camofox.mjs readability "https://example.com"
  • Network accessline 131
    node scripts/camofox/camofox.mjs readability "https://example.com"
  • Network accessline 133
    # JavaScript evaluation node scripts/camofox/camofox.mjs evaluate "https://example.com" "document.title"
  • Network accessline 134
    node scripts/camofox/camofox.mjs evaluate "https://example.com" "document.title"
  • Network accessline 136
    # Accessibility snapshot node scripts/camofox/camofox.mjs snapshot "https://example.com"
  • Network accessline 137
    node scripts/camofox/camofox.mjs snapshot "https://example.com"
  • Network accessline 152
    node scripts/cloak/cloak-fetch.mjs "https://protected-site.com"
  • Network accessline 153
    node scripts/cloak/cloak-fetch.mjs "https://protected-site.com" --proxy socks5://... --geoip
  • Network accessline 155
    # Markdown output (requires: pip install markitdown) node scripts/cloak/cloak-fetch.mjs "https://example.com" --format markdown
  • Network accessline 156
    node scripts/cloak/cloak-fetch.mjs "https://example.com" --format markdown
  • Network accessline 186
    ¹ "Camoufox Vs Playwright Stealth: Complete Comparison & Alternatives (2026)" — [blog.send.win](https://blog.send.win/camoufox-vs-playwright-stealth-complete-comparison-alternatives-2026/)
  • Network accessline 187
    ² CloakBrowser README — [github.com/cloakhq/cloakbrowser](https://github.com/cloakhq/cloakbrowser)
  • Network accessline 188
    ³ camoufox-pi README (cold start comparison) — [github.com/MonsieurBarti/camoufox-pi](https://github.com/MonsieurBarti/camoufox-pi)
  • Network accessline 189
    ⁴ Playwright issue #4345 (launch time variability) — [github.com/microsoft/playwright/issues/4345](https://github.com/microsoft/playwright/issues/4345)
  • Network accessline 221
    git clone https://github.com/Johell1NS/browser-search
  • Network accessline 235
    | Serviço | Como | Referência | |---|---|---| | SearXNG | Docker, `:8080` | [docs.searxng.org](https://docs.searxng.org/admin/installation-docker.html) |
  • Network accessline 236
    |---|---|---| | SearXNG | Docker, `:8080` | [docs.searxng.org](https://docs.searxng.org/admin/installation-docker.html) | | Camofox | Docker, `:9377` | [github.com/jo-inc/camofox-browser](https://github.com/jo-inc/camofox-browser) |
  • Network accessline 237
    | SearXNG | Docker, `:8080` | [docs.searxng.org](https://docs.searxng.org/admin/installation-docker.html) | | Camofox | Docker, `:9377` | [github.com/jo-inc/camofox-browser](https://github.com/jo-inc/camofox-browser) | | CloakBrowser | npm 
  • Network accessline 238
    | Camofox | Docker, `:9377` | [github.com/jo-inc/camofox-browser](https://github.com/jo-inc/camofox-browser) |
  • Network accessline 255
    - Mantenha local: vincule o SearXNG a `127.0.0.1` (`SEARXNG_HOST=127.0.0.1` no `.env`). - A skill **não precisa** de Valkey/Redis (o SearXNG só o usa para o limiter, que continua desligado). - Se o SearXNG não estiver em `http://127.0.0.1:8
  • Network accessline 257
    - Se o SearXNG não estiver em `http://127.0.0.1:8080`, defina `SEARXNG_URL`.
  • Access to secretsline 275
    [Credential-related source omitted]
  • Access to secretsline 299
    [Credential-related source omitted]

i18n/README.ru.md

  • Network accessline 7
    <p align="center">   <a href="https://github.com/Johell1NS/browser-search/releases"><img src="https://img.shields.io/github/v/release/Johell1NS/browser-search" alt="Release"></a>
  • Network accessline 8
    <a href="https://github.com/Johell1NS/browser-search/releases"><img src="https://img.shields.io/github/v/release/Johell1NS/browser-search" alt="Release"></a>
  • Network accessline 9
    <a href="https://github.com/Johell1NS/browser-search"><img src="https://img.shields.io/github/stars/Johell1NS/browser-search" alt="GitHub stars"></a>
  • Network accessline 10
    <a href="https://github.com/Johell1NS/browser-search/issues"><img src="https://img.shields.io/github/issues/Johell1NS/browser-search" alt="GitHub issues"></a>
  • Network accessline 11
    <a href="../LICENSE"><img src="https://img.shields.io/github/license/Johell1NS/browser-search" alt="License: MIT"></a>
  • Network accessline 12
    <a href="https://nodejs.org"><img src="https://img.shields.io/badge/node-%3E%3D20.19-brightgreen" alt="Node.js >=20.19"></a>
  • Network accessline 13
    <a href="https://github.com/Johell1NS/browser-search/discussions"><img src="https://img.shields.io/badge/Discussions-GitHub-333333?logo=github&logoColor=white" alt="Discussions"></a>
  • Network accessline 14
    <a href="https://x.com/Johell1NS"><img src="https://img.shields.io/badge/-Follow%20updates-333333?logo=x" alt="Follow updates"></a>
  • Network accessline 27
    1. **[SearXNG](https://github.com/searxng/searxng)** — метапоисковая система для фазы поиска (мультиисточник, JSON)
  • Network accessline 28
    2. **[Camofox](https://github.com/jo-inc/camofox-browser)** — браузер с доступом через REST API для стандартных сайтов
  • Network accessline 29
    3. **[CloakBrowser](https://github.com/cloakhq/cloakbrowser)** — скрытый браузер для сайтов с антибот-защитой
  • Network accessline 130
    # Single-URL extraction (Readability.js, auto-fallback to snapshot) node scripts/camofox/camofox.mjs readability "https://example.com"
  • Network accessline 131
    node scripts/camofox/camofox.mjs readability "https://example.com"
  • Network accessline 133
    # JavaScript evaluation node scripts/camofox/camofox.mjs evaluate "https://example.com" "document.title"
  • Network accessline 134
    node scripts/camofox/camofox.mjs evaluate "https://example.com" "document.title"
  • Network accessline 136
    # Accessibility snapshot node scripts/camofox/camofox.mjs snapshot "https://example.com"
  • Network accessline 137
    node scripts/camofox/camofox.mjs snapshot "https://example.com"
  • Network accessline 152
    node scripts/cloak/cloak-fetch.mjs "https://protected-site.com"
  • Network accessline 153
    node scripts/cloak/cloak-fetch.mjs "https://protected-site.com" --proxy socks5://... --geoip
  • Network accessline 155
    # Markdown output (requires: pip install markitdown) node scripts/cloak/cloak-fetch.mjs "https://example.com" --format markdown
  • Network accessline 156
    node scripts/cloak/cloak-fetch.mjs "https://example.com" --format markdown
  • Network accessline 186
    ¹ "Camoufox Vs Playwright Stealth: Complete Comparison & Alternatives (2026)" — [blog.send.win](https://blog.send.win/camoufox-vs-playwright-stealth-complete-comparison-alternatives-2026/)
  • Network accessline 187
    ² CloakBrowser README — [github.com/cloakhq/cloakbrowser](https://github.com/cloakhq/cloakbrowser)
  • Network accessline 188
    ³ camoufox-pi README (cold start comparison) — [github.com/MonsieurBarti/camoufox-pi](https://github.com/MonsieurBarti/camoufox-pi)
  • Network accessline 189
    ⁴ Playwright issue #4345 (launch time variability) — [github.com/microsoft/playwright/issues/4345](https://github.com/microsoft/playwright/issues/4345)
  • Network accessline 221
    git clone https://github.com/Johell1NS/browser-search
  • Network accessline 235
    | Сервис | Как | Ссылка | |---|---|---| | SearXNG | Docker, `:8080` | [docs.searxng.org](https://docs.searxng.org/admin/installation-docker.html) |
  • Network accessline 236
    |---|---|---| | SearXNG | Docker, `:8080` | [docs.searxng.org](https://docs.searxng.org/admin/installation-docker.html) | | Camofox | Docker, `:9377` | [github.com/jo-inc/camofox-browser](https://github.com/jo-inc/camofox-browser) |
  • Network accessline 237
    | SearXNG | Docker, `:8080` | [docs.searxng.org](https://docs.searxng.org/admin/installation-docker.html) | | Camofox | Docker, `:9377` | [github.com/jo-inc/camofox-browser](https://github.com/jo-inc/camofox-browser) | | CloakBrowser | npm 
  • Network accessline 238
    | Camofox | Docker, `:9377` | [github.com/jo-inc/camofox-browser](https://github.com/jo-inc/camofox-browser) |
  • Network accessline 255
    - Держите его локальным: привяжите SearXNG к `127.0.0.1` (`SEARXNG_HOST=127.0.0.1` в `.env`). - Навыку Valkey/Redis **не нужен** (SearXNG использует его только для лимитера, который остаётся выключенным). - Если SearXNG находится не по адре
  • Network accessline 257
    - Если SearXNG находится не по адресу `http://127.0.0.1:8080`, задайте `SEARXNG_URL`.
  • Access to secretsline 275
    [Credential-related source omitted]
  • Access to secretsline 299
    [Credential-related source omitted]

i18n/README.zh-CN.md

  • Network accessline 7
    <p align="center">   <a href="https://github.com/Johell1NS/browser-search/releases"><img src="https://img.shields.io/github/v/release/Johell1NS/browser-search" alt="Release"></a>
  • Network accessline 8
    <a href="https://github.com/Johell1NS/browser-search/releases"><img src="https://img.shields.io/github/v/release/Johell1NS/browser-search" alt="Release"></a>
  • Network accessline 9
    <a href="https://github.com/Johell1NS/browser-search"><img src="https://img.shields.io/github/stars/Johell1NS/browser-search" alt="GitHub stars"></a>
  • Network accessline 10
    <a href="https://github.com/Johell1NS/browser-search/issues"><img src="https://img.shields.io/github/issues/Johell1NS/browser-search" alt="GitHub issues"></a>
  • Network accessline 11
    <a href="../LICENSE"><img src="https://img.shields.io/github/license/Johell1NS/browser-search" alt="License: MIT"></a>
  • Network accessline 12
    <a href="https://nodejs.org"><img src="https://img.shields.io/badge/node-%3E%3D20.19-brightgreen" alt="Node.js >=20.19"></a>
  • Network accessline 13
    <a href="https://github.com/Johell1NS/browser-search/discussions"><img src="https://img.shields.io/badge/Discussions-GitHub-333333?logo=github&logoColor=white" alt="Discussions"></a>
  • Network accessline 14
    <a href="https://x.com/Johell1NS"><img src="https://img.shields.io/badge/-Follow%20updates-333333?logo=x" alt="Follow updates"></a>
  • Network accessline 27
    1. **[SearXNG](https://github.com/searxng/searxng)** — 搜索阶段的元搜索引擎(多源,JSON)
  • Network accessline 28
    2. **[Camofox](https://github.com/jo-inc/camofox-browser)** — 可通过REST API导航的浏览器,适用于标准网站
  • Network accessline 29
    3. **[CloakBrowser](https://github.com/cloakhq/cloakbrowser)** — 用于受反机器人保护网站的隐形浏览器
  • Network accessline 130
    # Single-URL extraction (Readability.js, auto-fallback to snapshot) node scripts/camofox/camofox.mjs readability "https://example.com"
  • Network accessline 131
    node scripts/camofox/camofox.mjs readability "https://example.com"
  • Network accessline 133
    # JavaScript evaluation node scripts/camofox/camofox.mjs evaluate "https://example.com" "document.title"
  • Network accessline 134
    node scripts/camofox/camofox.mjs evaluate "https://example.com" "document.title"
  • Network accessline 136
    # Accessibility snapshot node scripts/camofox/camofox.mjs snapshot "https://example.com"
  • Network accessline 137
    node scripts/camofox/camofox.mjs snapshot "https://example.com"
  • Network accessline 152
    node scripts/cloak/cloak-fetch.mjs "https://protected-site.com"
  • Network accessline 153
    node scripts/cloak/cloak-fetch.mjs "https://protected-site.com" --proxy socks5://... --geoip
  • Network accessline 155
    # Markdown output (requires: pip install markitdown) node scripts/cloak/cloak-fetch.mjs "https://example.com" --format markdown
  • Network accessline 156
    node scripts/cloak/cloak-fetch.mjs "https://example.com" --format markdown
  • Network accessline 186
    ¹ "Camoufox Vs Playwright Stealth: Complete Comparison & Alternatives (2026)" — [blog.send.win](https://blog.send.win/camoufox-vs-playwright-stealth-complete-comparison-alternatives-2026/)
  • Network accessline 187
    ² CloakBrowser README — [github.com/cloakhq/cloakbrowser](https://github.com/cloakhq/cloakbrowser)
  • Network accessline 188
    ³ camoufox-pi README (cold start comparison) — [github.com/MonsieurBarti/camoufox-pi](https://github.com/MonsieurBarti/camoufox-pi)
  • Network accessline 189
    ⁴ Playwright issue #4345 (launch time variability) — [github.com/microsoft/playwright/issues/4345](https://github.com/microsoft/playwright/issues/4345)
  • Network accessline 221
    git clone https://github.com/Johell1NS/browser-search
  • Network accessline 235
    | 服务 | 方式 | 参考 | |---|---|---| | SearXNG | Docker, `:8080` | [docs.searxng.org](https://docs.searxng.org/admin/installation-docker.html) |
  • Network accessline 236
    |---|---|---| | SearXNG | Docker, `:8080` | [docs.searxng.org](https://docs.searxng.org/admin/installation-docker.html) | | Camofox | Docker, `:9377` | [github.com/jo-inc/camofox-browser](https://github.com/jo-inc/camofox-browser) |
  • Network accessline 237
    | SearXNG | Docker, `:8080` | [docs.searxng.org](https://docs.searxng.org/admin/installation-docker.html) | | Camofox | Docker, `:9377` | [github.com/jo-inc/camofox-browser](https://github.com/jo-inc/camofox-browser) | | CloakBrowser | npm 
  • Network accessline 238
    | Camofox | Docker, `:9377` | [github.com/jo-inc/camofox-browser](https://github.com/jo-inc/camofox-browser) |
  • Network accessline 255
    - 保持仅本地访问:将 SearXNG 绑定到 `127.0.0.1`(在 `.env` 中设置 `SEARXNG_HOST=127.0.0.1`)。 - 该技能**不需要** Valkey/Redis(SearXNG 仅将其用于限流器,而限流器保持关闭)。 - 如果 SearXNG 不在 `http://127.0.0.1:8080`,请设置 `SEARXNG_URL`。
  • Network accessline 257
    - 如果 SearXNG 不在 `http://127.0.0.1:8080`,请设置 `SEARXNG_URL`。
  • Access to secretsline 275
    [Credential-related source omitted]
  • Access to secretsline 299
    [Credential-related source omitted]

package-lock.json

  • Network accessline 17
    "node_modules/@isaacs/fs-minipass": {       "version": "4.0.1",       "resolved": "https://registry.npmjs.org/@isaacs/fs-minipass/-/fs-minipass-4.0.1.tgz",
  • Network accessline 18
    "version": "4.0.1",       "resolved": "https://registry.npmjs.org/@isaacs/fs-minipass/-/fs-minipass-4.0.1.tgz",       "integrity": "sha512-wgm9Ehl2jpeqP3zw/7mo3kRHFp5MEDhqAdwy1fTGkHAwnkGOVsgpvQhL8B5n1qlb01jV3n/bI0ZfZp5lWA1k4w==",
  • Network accessline 19
    "resolved": "https://registry.npmjs.org/@isaacs/fs-minipass/-/fs-minipass-4.0.1.tgz",
  • Network accessline 29
    "node_modules/agent-base": {       "version": "9.0.0",       "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-9.0.0.tgz",
  • Network accessline 30
    "version": "9.0.0",       "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-9.0.0.tgz",       "integrity": "sha512-TQf59BsZnytt8GdJKLPfUZ54g/iaUL2OWDSFCCvMOhsHduDQxO8xC4PNeyIkVcA5KwL2phPSv0douC0fgWzmnA==",
  • Network accessline 31
    "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-9.0.0.tgz",
  • Network accessline 38
    "node_modules/chownr": {       "version": "3.0.0",       "resolved": "https://registry.npmjs.org/chownr/-/chownr-3.0.0.tgz",
  • Network accessline 39
    "version": "3.0.0",       "resolved": "https://registry.npmjs.org/chownr/-/chownr-3.0.0.tgz",       "integrity": "sha512-+IxzY9BZOQd/XuYPRmrvEVjF/nqj5kgT4kEq7VofrDoM1MxoRjEWkrCC3EtLi59TVawxTAn+orJwFQcrqEN1+g==",
  • Network accessline 40
    "resolved": "https://registry.npmjs.org/chownr/-/chownr-3.0.0.tgz",
  • Network accessline 47
    "node_modules/cloakbrowser": {       "version": "0.6.3",       "resolved": "https://registry.npmjs.org/cloakbrowser/-/cloakbrowser-0.6.3.tgz",
  • Network accessline 48
    "version": "0.6.3",       "resolved": "https://registry.npmjs.org/cloakbrowser/-/cloakbrowser-0.6.3.tgz",       "integrity": "sha512-mkogz/HHYPsd01rhRyLfU5raXeGbZVv2m5bmVr+6qAqlN8zK6gA5NOaNcaGhj2wCPeJc/xT/Rxglu9MCF8ZqQw==",
  • Network accessline 49
    "resolved": "https://registry.npmjs.org/cloakbrowser/-/cloakbrowser-0.6.3.tgz",
  • Network accessline 82
    "node_modules/debug": {       "version": "4.4.3",       "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.3.tgz",
  • Network accessline 83
    "version": "4.4.3",       "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.3.tgz",       "integrity": "sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==",
  • Network accessline 84
    "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.3.tgz",
  • Network accessline 99
    "node_modules/ip-address": {       "version": "10.7.4",       "resolved": "https://registry.npmjs.org/ip-address/-/ip-address-10.7.4.tgz",
  • Network accessline 100
    "version": "10.7.4",       "resolved": "https://registry.npmjs.org/ip-address/-/ip-address-10.7.4.tgz",       "integrity": "sha512-DWBMKyeM25D70nrIiTkgQth59/G+naKOTep6huF9j+GmeK3DMD60Zvxg5d5qQnz+38AHgou6ean2LECX+lrKDg==",
  • Network accessline 101
    "resolved": "https://registry.npmjs.org/ip-address/-/ip-address-10.7.4.tgz",
  • Network accessline 108
    "node_modules/minipass": {       "version": "7.1.3",       "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.3.tgz",
  • Network accessline 109
    "version": "7.1.3",       "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.3.tgz",       "integrity": "sha512-tEBHqDnIoM/1rXME1zgka9g6Q2lcoCkxHLuc7ODJ5BxbP5d4c2Z5cGgtXAku59200Cx7diuHTOYfSBD8n6mm8A==",
  • Network accessline 110
    "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.3.tgz",
  • Network accessline 117
    "node_modules/minizlib": {       "version": "3.1.0",       "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-3.1.0.tgz",
  • Network accessline 118
    "version": "3.1.0",       "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-3.1.0.tgz",       "integrity": "sha512-KZxYo1BUkWD2TVFLr0MQoM8vUUigWD3LlD83a/75BqC+4qE0Hb1Vo5v1FgcfaNXvfXzr+5EhQ6ing/CaBijTlw==",
  • Network accessline 119
    "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-3.1.0.tgz",
  • Network accessline 129
    "node_modules/mmdb-lib": {       "version": "3.0.3",       "resolved": "https://registry.npmjs.org/mmdb-lib/-/mmdb-lib-3.0.3.tgz",
  • Network accessline 130
    "version": "3.0.3",       "resolved": "https://registry.npmjs.org/mmdb-lib/-/mmdb-lib-3.0.3.tgz",       "integrity": "sha512-xQPoBXcNjjHiOvOraFBKtA++uNWF6aCVHL9dRKFXEov8eI3QJwtgiw3qApsonFT5SpoqsEVISUTg3HIDs2DiXw==",
  • Network accessline 131
    "resolved": "https://registry.npmjs.org/mmdb-lib/-/mmdb-lib-3.0.3.tgz",
  • Network accessline 139
    "node_modules/ms": {       "version": "2.1.3",       "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz",
  • Network accessline 140
    "version": "2.1.3",       "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz",       "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==",
  • Network accessline 141
    "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz",
  • Network accessline 145
    "node_modules/playwright-core": {       "version": "1.64.1",       "resolved": "https://registry.npmjs.org/playwright-core/-/playwright-core-1.64.1.tgz",
  • Network accessline 146
    "version": "1.64.1",       "resolved": "https://registry.npmjs.org/playwright-core/-/playwright-core-1.64.1.tgz",       "integrity": "sha512-BC4s8y6SEVA6Q1rSxZTto8hI1KUI3xXlHGZgvGqP4IqPdI/a6FX9H29IDNz7vKo9l21b6LfYosScPL6M3xxyDQ==",
  • Network accessline 147
    "resolved": "https://registry.npmjs.org/playwright-core/-/playwright-core-1.64.1.tgz",
  • Network accessline 157
    "node_modules/smart-buffer": {       "version": "4.2.0",       "resolved": "https://registry.npmjs.org/smart-buffer/-/smart-buffer-4.2.0.tgz",
  • Network accessline 158
    "version": "4.2.0",       "resolved": "https://registry.npmjs.org/smart-buffer/-/smart-buffer-4.2.0.tgz",       "integrity": "sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg==",
  • Network accessline 159
    "resolved": "https://registry.npmjs.org/smart-buffer/-/smart-buffer-4.2.0.tgz",
  • Network accessline 167
    "node_modules/socks": {       "version": "2.8.9",       "resolved": "https://registry.npmjs.org/socks/-/socks-2.8.9.tgz",
  • Network accessline 168
    "version": "2.8.9",       "resolved": "https://registry.npmjs.org/socks/-/socks-2.8.9.tgz",       "integrity": "sha512-LJhUYUvItdQ0LkJTmPeaEObWXAqFyfmP85x0tch/ez9cahmhlBBLbIqDFnvBnUJGagb0JbIQrkBs1wJ+yRYpEw==",
  • Network accessline 169
    "resolved": "https://registry.npmjs.org/socks/-/socks-2.8.9.tgz",
  • Network accessline 181
    "node_modules/socks-proxy-agent": {       "version": "10.1.0",       "resolved": "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-10.1.0.tgz",
  • Network accessline 182
    "version": "10.1.0",       "resolved": "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-10.1.0.tgz",       "integrity": "sha512-WlMj/67cEJ6MDI1OcsnjuYKDNDoyPCCYZ249kuuXPiMDw9F8PXkVaQ7YWu3siTydfQ/4BEZcvGzu+aYvz7dDCQ==",
  • Network accessline 183
    "resolved": "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-10.1.0.tgz",
  • Network accessline 195
    "node_modules/tar": {       "version": "7.5.22",       "resolved": "https://registry.npmjs.org/tar/-/tar-7.5.22.tgz",
  • Network accessline 196
    "version": "7.5.22",       "resolved": "https://registry.npmjs.org/tar/-/tar-7.5.22.tgz",       "integrity": "sha512-MFO/QzvtAOmJbkhOaCTvbGcFN9L9b+JunIsDwaKljSOdcLMea3NJ1k9Usz/rjdfSXTq4dfzfeS7W4p4YOAAHeA==",
  • Network accessline 197
    "resolved": "https://registry.npmjs.org/tar/-/tar-7.5.22.tgz",
  • Network accessline 211
    "node_modules/yallist": {       "version": "5.0.0",       "resolved": "https://registry.npmjs.org/yallist/-/yallist-5.0.0.tgz",
  • Network accessline 212
    "version": "5.0.0",       "resolved": "https://registry.npmjs.org/yallist/-/yallist-5.0.0.tgz",       "integrity": "sha512-YgvUTfwqyc7UXVMrB+SImsVYSmTS8X/tSrtdNZMImM+n7+QTriRXyXim0mBrTXNeqzVF0KWGgHPeiyViFFrNDw==",
  • Network accessline 213
    "resolved": "https://registry.npmjs.org/yallist/-/yallist-5.0.0.tgz",

package.json

  • Executable scriptline 1
    Executable file

scripts/audit.sh

  • Executable scriptline 1
    #!/bin/bash
  • Network accessline 98
    warn ".npmrc missing strict-ssl=true"   fi   if grep -q "registry=https://registry.npmjs.org/" "$REPO_DIR/.npmrc"; then
  • Network accessline 99
    fi   if grep -q "registry=https://registry.npmjs.org/" "$REPO_DIR/.npmrc"; then     ok ".npmrc has registry pinned"
  • Network accessline 100
    if grep -q "registry=https://registry.npmjs.org/" "$REPO_DIR/.npmrc"; then
  • Access to secretsline 117
    [Credential-related source omitted]
  • Access to secretsline 165
    [Credential-related source omitted]

scripts/camofox/Readability.js

  • Executable scriptline 1
    Executable file
  • Network accessline 6
    * You may obtain a copy of the License at  *  *     http://www.apache.org/licenses/LICENSE-2.0
  • Network accessline 7
    *  *     http://www.apache.org/licenses/LICENSE-2.0  *
  • Network accessline 8
    *     http://www.apache.org/licenses/LICENSE-2.0
  • Network accessline 17
    /*  * This code is heavily based on Arc90's readability.js (1.7.1) script  * available at: http://code.google.com/p/arc90labs-readability
  • Network accessline 18
    * This code is heavily based on Arc90's readability.js (1.7.1) script  * available at: http://code.google.com/p/arc90labs-readability  */
  • Network accessline 19
    * available at: http://code.google.com/p/arc90labs-readability
  • Network accessline 116
    // https://developer.mozilla.org/en-US/docs/Web/API/Node/nodeType
  • Network accessline 164
    // Commas as used in Latin, Sindhi, Chinese and various other scripts.     // see: https://en.wikipedia.org/wiki/Comma#Comma_variants
  • Network accessline 165
    // see: https://en.wikipedia.org/wiki/Comma#Comma_variants
  • Network accessline 167
    // See: https://schema.org/Article
  • Network accessline 1188
    // Sites like http://mobile.slate.com encloses each paragraph with a DIV
  • Network accessline 2027
    /***    * Determine if a node qualifies as phrasing content.    * https://developer.mozilla.org/en-US/docs/Web/Guide/HTML/Content_categories#Phrasing_content
  • Network accessline 2028
    * Determine if a node qualifies as phrasing content.    * https://developer.mozilla.org/en-US/docs/Web/Guide/HTML/Content_categories#Phrasing_content    **/
  • Network accessline 2029
    * https://developer.mozilla.org/en-US/docs/Web/Guide/HTML/Content_categories#Phrasing_content
  • Network accessline 2267
    * Look for 'data' (as opposed to 'layout') tables, for which we use    * similar checks as    * https://searchfox.org/mozilla-central/rev/f82d5c549f046cb64ce5602bfd894b7ae807c8f8/accessible/generic/TableAccessible.cpp#19
  • Network accessline 2268
    * similar checks as    * https://searchfox.org/mozilla-central/rev/f82d5c549f046cb64ce5602bfd894b7ae807c8f8/accessible/generic/TableAccessible.cpp#19    */
  • Network accessline 2269
    * https://searchfox.org/mozilla-central/rev/f82d5c549f046cb64ce5602bfd894b7ae807c8f8/accessible/generic/TableAccessible.cpp#19
  • Network accessline 2371
    // also check for "null" to work around https://github.com/jsdom/jsdom/issues/2580

scripts/camofox/camofox-client.mjs

  • Executable scriptline 1
    Executable file
  • Network accessline 7
    const USER_ID = "opencode-bot"; const SESSION_KEY = "default"; const BASE_URL = "http://localhost:9377";
  • Network accessline 8
    [Credential-related source omitted]
  • Access to secretsline 8
    [Credential-related source omitted]
  • Network accessline 9
    const BASE_URL = "http://localhost:9377";
  • Access to secretsline 10
    [Credential-related source omitted]
  • Access to secretsline 11
    [Credential-related source omitted]
  • Access to secretsline 36
    [Credential-related source omitted]
  • Access to secretsline 37
    [Credential-related source omitted]
  • Access to secretsline 39
    [Credential-related source omitted]
  • Access to secretsline 40
    [Credential-related source omitted]
  • Access to secretsline 42
    [Credential-related source omitted]
  • Access to secretsline 43
    [Credential-related source omitted]
  • Network accessline 56
    const res = await fetch(finalUrl, opts);
  • Access to secretsline 94
    [Credential-related source omitted]
  • Access to secretsline 214
    [Credential-related source omitted]

scripts/camofox/camofox.mjs

  • Executable scriptline 1
    #!/usr/bin/env node
  • Network accessline 181
    client.logStep(`Smoke test browser (attesa ${delay}s)...`);     try {       const tab = await createTrackedTab("http://example.com");
  • Network accessline 182
    try {       const tab = await createTrackedTab("http://example.com");       try {
  • Network accessline 183
    const tab = await createTrackedTab("http://example.com");
  • Network accessline 207
    async function isBrowserStuck() {   try {     const tab = await client.createTab("http://example.com", { timeoutMs: 8000 });
  • Network accessline 208
    try {     const tab = await client.createTab("http://example.com", { timeoutMs: 8000 });     try { await client.closeTab(tab.tabId); } catch {}
  • Network accessline 209
    const tab = await client.createTab("http://example.com", { timeoutMs: 8000 });

scripts/check.sh

  • Executable scriptline 1
    #!/bin/bash
  • Network accessline 22
    PASSED=true SEARXNG_URL="${SEARXNG_URL:-http://127.0.0.1:8080/search}"
  • Network accessline 23
    SEARXNG_URL="${SEARXNG_URL:-http://127.0.0.1:8080/search}"
  • Network accessline 24
    CAMOFOX_URL="${CAMOFOX_URL:-http://127.0.0.1:9377}"
  • Network accessline 45
    searxng_api_ok() {     curl -sf --max-time 10 "${SEARXNG_URL}?format=json&q=health" >/dev/null 2>&1
  • Network accessline 46
    curl -sf --max-time 10 "${SEARXNG_URL}?format=json&q=health" >/dev/null 2>&1
  • Network accessline 49
    camofox_api_ok() {     curl -sf --max-time 5 "${CAMOFOX_URL}/health" >/dev/null 2>&1
  • Network accessline 50
    curl -sf --max-time 5 "${CAMOFOX_URL}/health" >/dev/null 2>&1
  • Network accessline 100
    SEARXNG_NAME=$(docker_running_name 'searxng') if searxng_api_ok; then     HEALTH=$(curl -s --max-time 10 "${SEARXNG_URL}?format=json&q=health" 2>/dev/null || echo "")
  • Network accessline 101
    if searxng_api_ok; then     HEALTH=$(curl -s --max-time 10 "${SEARXNG_URL}?format=json&q=health" 2>/dev/null || echo "")     RESULT_COUNT=$(echo "$HEALTH" | python3 -c "import sys,json; d=json.load(sys.stdin); print(len(d.get('results',[]))
  • Network accessline 102
    HEALTH=$(curl -s --max-time 10 "${SEARXNG_URL}?format=json&q=health" 2>/dev/null || echo "")
  • Network accessline 103
    RESULT_COUNT=$(echo "$HEALTH" | python3 -c "import sys,json; d=json.load(sys.stdin); print(len(d.get('results',[])))" 2>/dev/null || echo "?")     LABEL="${SEARXNG_URL}"     if [ -n "$SEARXNG_NAME" ]; then LABEL="$SEARXNG_NAME ($SEARXNG_URL
  • Network accessline 104
    LABEL="${SEARXNG_URL}"
  • Network accessline 105
    if [ -n "$SEARXNG_NAME" ]; then LABEL="$SEARXNG_NAME ($SEARXNG_URL)"; fi     ok "SearXNG running (${LABEL}, ${RESULT_COUNT} results in test query)" elif [ "$(curl -s -o /dev/null -w '%{http_code}' --max-time 10 "${SEARXNG_URL}?format=json&q
  • Network accessline 106
    ok "SearXNG running (${LABEL}, ${RESULT_COUNT} results in test query)" elif [ "$(curl -s -o /dev/null -w '%{http_code}' --max-time 10 "${SEARXNG_URL}?format=json&q=health" 2>/dev/null)" = "403" ]; then     warn "SearXNG responds but JSON ou
  • Network accessline 107
    elif [ "$(curl -s -o /dev/null -w '%{http_code}' --max-time 10 "${SEARXNG_URL}?format=json&q=health" 2>/dev/null)" = "403" ]; then
  • Network accessline 108
    warn "SearXNG responds but JSON output is disabled (add 'json' to search.formats in settings.yml, see README)" elif [ -n "$SEARXNG_NAME" ]; then     warn "SearXNG container running ($SEARXNG_NAME) but API not responding at ${SEARXNG_URL}"
  • Network accessline 109
    elif [ -n "$SEARXNG_NAME" ]; then     warn "SearXNG container running ($SEARXNG_NAME) but API not responding at ${SEARXNG_URL}" elif docker ps -a --format '{{.Names}}' 2>/dev/null | grep -qE 'searxng'; then
  • Network accessline 110
    warn "SearXNG container running ($SEARXNG_NAME) but API not responding at ${SEARXNG_URL}"
  • Network accessline 113
    else     warn "SearXNG container not found"     info "To install: https://docs.searxng.org/admin/installation-docker.html"
  • Network accessline 114
    warn "SearXNG container not found"     info "To install: https://docs.searxng.org/admin/installation-docker.html"     info "Bind locally: set SEARXNG_HOST=127.0.0.1 in searxng/.env"
  • Network accessline 115
    info "To install: https://docs.searxng.org/admin/installation-docker.html"
  • Access to secretsline 116
    [Credential-related source omitted]
  • Network accessline 121
    CAMOFOX_NAME=$(docker_running_name 'camofox') if camofox_api_ok; then     HEALTH=$(curl -s --max-time 5 "${CAMOFOX_URL}/health" 2>/dev/null || echo "")
  • Network accessline 122
    if camofox_api_ok; then     HEALTH=$(curl -s --max-time 5 "${CAMOFOX_URL}/health" 2>/dev/null || echo "")     BROWSER_OK=$(echo "$HEALTH" | python3 -c "import sys,json; print(json.load(sys.stdin).get('browserConnected','?'))" 2>/dev/null ||
  • Network accessline 123
    HEALTH=$(curl -s --max-time 5 "${CAMOFOX_URL}/health" 2>/dev/null || echo "")
  • Network accessline 125
    TAB_COUNT=$(echo "$HEALTH" | python3 -c "import sys,json; print(json.load(sys.stdin).get('activeTabs','?'))" 2>/dev/null || echo "?")     HEAP_MB=$(echo "$HEALTH" | python3 -c "import sys,json; print(json.load(sys.stdin).get('memory',{}).ge
  • Network accessline 126
    HEAP_MB=$(echo "$HEALTH" | python3 -c "import sys,json; print(json.load(sys.stdin).get('memory',{}).get('heapUsedMb','?'))" 2>/dev/null || echo "?")     LABEL="${CAMOFOX_URL}"     if [ -n "$CAMOFOX_NAME" ]; then LABEL="$CAMOFOX_NAME ($CAMOF
  • Network accessline 127
    LABEL="${CAMOFOX_URL}"
  • Network accessline 128
    if [ -n "$CAMOFOX_NAME" ]; then LABEL="$CAMOFOX_NAME ($CAMOFOX_URL)"; fi
  • Network accessline 129
    ok "Camofox running (${LABEL}, browserConnected: ${BROWSER_OK}, tabs: ${TAB_COUNT}, heap: ${HEAP_MB} MB)"
  • Network accessline 130
    elif [ -n "$CAMOFOX_NAME" ]; then     warn "Camofox container running ($CAMOFOX_NAME) but API not responding at ${CAMOFOX_URL}" elif docker ps -a --format '{{.Names}}' 2>/dev/null | grep -qE 'camofox'; then
  • Network accessline 131
    warn "Camofox container running ($CAMOFOX_NAME) but API not responding at ${CAMOFOX_URL}"

scripts/cloak/challenges.mjs

  • Network accessline 1
    // Adapted from opencode-cloak-fetch (MIT) by PartMent
  • Executable scriptline 1
    Executable file
  • Network accessline 2
    // https://github.com/partment/opencode-cloak-fetch

scripts/cloak/cloak-fetch.mjs

  • Executable scriptline 1
    #!/usr/bin/env node
  • Network accessline 2
    // Fetch any URL through CloakBrowser stealth Chromium. // Adapted from opencode-cloak-fetch (MIT) by PartMent
  • Network accessline 3
    // Adapted from opencode-cloak-fetch (MIT) by PartMent

scripts/cloak/cloak-script.mjs

  • Executable scriptline 1
    #!/usr/bin/env node
  • Network accessline 72
    Script example:   export default async ({ page }) => {     await page.goto('https://example.com');
  • Network accessline 73
    export default async ({ page }) => {     await page.goto('https://example.com');     await page.waitForTimeout(2000);
  • Network accessline 74
    await page.goto('https://example.com');
  • Network accessline 184
    const scriptContent = await import('node:fs').then(fs => fs.default.readFileSync(opts.script, 'utf8'));       const urlMatch = scriptContent.match(/['"]https?:\/\/[^'"]+['"]/);       const sessionUrl = urlMatch ? urlMatch[0].replace(/['"]/g
  • Network accessline 186
    const sessionUrl = urlMatch ? urlMatch[0].replace(/['"]/g, '') : 'https://example.com';

scripts/cloak/guida-fetch.md

  • Network accessline 21
    # Simple (text output) node "<skill_dir>/scripts/cloak/cloak-fetch.mjs" "https://example.com"
  • Network accessline 22
    node "<skill_dir>/scripts/cloak/cloak-fetch.mjs" "https://example.com"
  • Network accessline 24
    # Raw HTML node "<skill_dir>/scripts/cloak/cloak-fetch.mjs" "https://example.com" --format html
  • Network accessline 25
    node "<skill_dir>/scripts/cloak/cloak-fetch.mjs" "https://example.com" --format html
  • Network accessline 27
    # With scroll for lazy loading node "<skill_dir>/scripts/cloak/cloak-fetch.mjs" "https://ebay.com/..." --scroll
  • Network accessline 28
    node "<skill_dir>/scripts/cloak/cloak-fetch.mjs" "https://ebay.com/..." --scroll
  • Network accessline 30
    # With proxy and anti-bot node "<skill_dir>/scripts/cloak/cloak-fetch.mjs" "https://protected-site.com" \
  • Network accessline 31
    node "<skill_dir>/scripts/cloak/cloak-fetch.mjs" "https://protected-site.com" \
  • Network accessline 34
    # Extra wait and timeout node "<skill_dir>/scripts/cloak/cloak-fetch.mjs" "https://..." --wait 5000 --timeout 60000
  • Network accessline 35
    node "<skill_dir>/scripts/cloak/cloak-fetch.mjs" "https://..." --wait 5000 --timeout 60000
  • Network accessline 37
    # Deterministic fingerprint node "<skill_dir>/scripts/cloak/cloak-fetch.mjs" "https://..." --seed 12345 --platform windows
  • Network accessline 38
    node "<skill_dir>/scripts/cloak/cloak-fetch.mjs" "https://..." --seed 12345 --platform windows
  • Network accessline 40
    # Disable humanize (faster) node "<skill_dir>/scripts/cloak/cloak-fetch.mjs" "https://..." --no-humanize
  • Network accessline 41
    node "<skill_dir>/scripts/cloak/cloak-fetch.mjs" "https://..." --no-humanize
  • Network accessline 43
    # Truncate output node "<skill_dir>/scripts/cloak/cloak-fetch.mjs" "https://..." --max-chars 50000
  • Network accessline 44
    node "<skill_dir>/scripts/cloak/cloak-fetch.mjs" "https://..." --max-chars 50000
  • Network accessline 46
    # Persistent profile (cookies) node "<skill_dir>/scripts/cloak/cloak-fetch.mjs" "https://..." --persistent ./profile
  • Network accessline 47
    node "<skill_dir>/scripts/cloak/cloak-fetch.mjs" "https://..." --persistent ./profile
  • Network accessline 63
    export default async ({ page }) => {   await page.goto('https://example.com');
  • Network accessline 64
    await page.goto('https://example.com');
  • Network accessline 109
    - `cloak-fetch.mjs` includes challenge detection (Cloudflare, Akamai, DataDome, Imperva, PerimeterX, DDoS-Guard) adapted from [opencode-cloak-fetch](https://github.com/partment/opencode-cloak-fetch) (MIT)

scripts/cloak/lib/__tests__/sandbox.test.mjs

  • Executable scriptline 1
    Executable file
  • Network accessline 25
    evaluate: () => {},   title: () => 'test',   url: () => 'https://example.com',
  • Network accessline 26
    title: () => 'test',   url: () => 'https://example.com',   $: () => null,
  • Network accessline 27
    url: () => 'https://example.com',

scripts/cloak/lib/__tests__/url-validation.test.mjs

  • Executable scriptline 1
    Executable file
  • Network accessline 34
    test('Valid: https://example.com', () => {
  • Network accessline 35
    const r = validateUrl('https://example.com');
  • Network accessline 39
    test('Valid: http://example.com', () => {
  • Network accessline 40
    const r = validateUrl('http://example.com');
  • Network accessline 44
    test('Valid: https://www.google.com/search?q=test', () => {
  • Network accessline 45
    const r = validateUrl('https://www.google.com/search?q=test');
  • Network accessline 49
    test('Valid: https://sub.domain.example.org/path', () => {
  • Network accessline 50
    const r = validateUrl('https://sub.domain.example.org/path');
  • Network accessline 55
    test('Blocked: localhost', () => {   const r = validateUrl('http://localhost:8080');
  • Network accessline 56
    const r = validateUrl('http://localhost:8080');
  • Network accessline 61
    test('Blocked: 127.0.0.1', () => {   const r = validateUrl('http://127.0.0.1:22');
  • Network accessline 62
    const r = validateUrl('http://127.0.0.1:22');
  • Network accessline 67
    test('Blocked: 127.0.0.255', () => {   const r = validateUrl('http://127.0.0.255/admin');
  • Network accessline 68
    const r = validateUrl('http://127.0.0.255/admin');
  • Network accessline 73
    test('Blocked: 10.0.0.1', () => {   const r = validateUrl('http://10.0.0.1');
  • Network accessline 74
    const r = validateUrl('http://10.0.0.1');
  • Network accessline 78
    test('Blocked: 192.168.1.1', () => {   const r = validateUrl('http://192.168.1.1');
  • Network accessline 79
    const r = validateUrl('http://192.168.1.1');
  • Network accessline 83
    test('Blocked: 172.16.0.1', () => {   const r = validateUrl('http://172.16.0.1');
  • Network accessline 84
    const r = validateUrl('http://172.16.0.1');
  • Network accessline 88
    test('Blocked: 172.31.255.255', () => {   const r = validateUrl('http://172.31.255.255');
  • Network accessline 89
    const r = validateUrl('http://172.31.255.255');
  • Network accessline 94
    test('Blocked: 169.254.169.254 (AWS metadata)', () => {   const r = validateUrl('http://169.254.169.254/latest/meta-data/');
  • Network accessline 95
    const r = validateUrl('http://169.254.169.254/latest/meta-data/');
  • Network accessline 99
    test('Blocked: metadata.google.internal', () => {   const r = validateUrl('http://metadata.google.internal/computeMetadata/v1/');
  • Network accessline 100
    const r = validateUrl('http://metadata.google.internal/computeMetadata/v1/');
  • Network accessline 123
    test('Blocked: .internal TLD', () => {   const r = validateUrl('http://service.internal');
  • Network accessline 124
    const r = validateUrl('http://service.internal');
  • Network accessline 129
    test('Blocked: .local TLD', () => {   const r = validateUrl('http://printer.local');
  • Network accessline 130
    const r = validateUrl('http://printer.local');
  • Network accessline 135
    test('Blocked: IPv6 loopback', () => {   const r = validateUrl('http://[::1]:8080');
  • Network accessline 136
    const r = validateUrl('http://[::1]:8080');
  • Network accessline 140
    test('Blocked: IPv6 link-local', () => {   const r = validateUrl('http://[fe80::1]:8080');
  • Network accessline 141
    const r = validateUrl('http://[fe80::1]:8080');
  • Network accessline 158
    await testAsync('DNS Valid: https://example.com', async () => {
  • Network accessline 159
    const r = await validateUrlWithDns('https://example.com');
  • Network accessline 164
    await testAsync('DNS Blocked: localhost', async () => {     const r = await validateUrlWithDns('http://localhost:8080');
  • Network accessline 165
    const r = await validateUrlWithDns('http://localhost:8080');
  • Network accessline 169
    await testAsync('DNS Blocked: 127.0.0.1', async () => {     const r = await validateUrlWithDns('http://127.0.0.1:22');
  • Network accessline 170
    const r = await validateUrlWithDns('http://127.0.0.1:22');
  • Network accessline 174
    await testAsync('DNS Blocked: 10.0.0.1', async () => {     const r = await validateUrlWithDns('http://10.0.0.1');
  • Network accessline 175
    const r = await validateUrlWithDns('http://10.0.0.1');
  • Network accessline 179
    await testAsync('DNS Blocked: 169.254.169.254', async () => {     const r = await validateUrlWithDns('http://169.254.169.254/');
  • Network accessline 180
    const r = await validateUrlWithDns('http://169.254.169.254/');
  • Network accessline 185
    await testAsync('DNS Graceful: nonexistent-domain-xyz123.invalid', async () => {     const r = await validateUrlWithDns('http://nonexistent-domain-xyz123.invalid');
  • Network accessline 186
    const r = await validateUrlWithDns('http://nonexistent-domain-xyz123.invalid');
  • Network accessline 192
    await testAsync('DNS Blocked: IPv6 loopback [::1]', async () => {     const r = await validateUrlWithDns('http://[::1]:8080');
  • Network accessline 193
    const r = await validateUrlWithDns('http://[::1]:8080');

scripts/cloak/lib/credentials.mjs

  • Executable scriptline 1
    Executable file
  • Access to secretsline 4
    [Credential-related source omitted]
  • Access to secretsline 15
    [Credential-related source omitted]

scripts/cloak/lib/rate-limiter.mjs

  • Executable scriptline 1
    Executable file
  • Network accessline 49
    _cleanupOldRequests(state) {     const oneMinuteAgo = Date.now() - 60000;     state.requests = state.requests.filter(ts => ts > oneMinuteAgo);
  • Network accessline 50
    const oneMinuteAgo = Date.now() - 60000;     state.requests = state.requests.filter(ts => ts > oneMinuteAgo);   }
  • Network accessline 51
    state.requests = state.requests.filter(ts => ts > oneMinuteAgo);
  • Network accessline 74
    state.requests.push(Date.now());

scripts/cloak/lib/sandbox.mjs

  • Executable scriptline 1
    Executable file

scripts/cloak/lib/session.mjs

  • Network accessline 1
    [Credential-related source omitted]
  • Executable scriptline 1
    [Credential-related source omitted]
  • Access to secretsline 1
    [Credential-related source omitted]
  • Network accessline 2
    // Adapted from opencode-cloak-fetch (MIT) by PartMent

scripts/cloak/lib/url-validation.mjs

  • Executable scriptline 1
    Executable file

scripts/cloak/scripts/screenshot.mjs

  • Executable scriptline 1
    Executable file
  • Network accessline 8
    export default async ({ page }) => {   const url = process.argv.find(a => a.startsWith('http')) || 'https://example.com';
  • Network accessline 9
    const url = process.argv.find(a => a.startsWith('http')) || 'https://example.com';

scripts/searxng/searxng.mjs

  • Executable scriptline 1
    #!/usr/bin/env node
  • Network accessline 5
    const SEARXNG_BASE = (process.env.SEARXNG_URL || "http://127.0.0.1:8080")
  • Network accessline 28
    Variabili d'ambiente:   SEARXNG_URL <url>          Indirizzo di SearXNG (default: http://127.0.0.1:8080)
  • Network accessline 29
    SEARXNG_URL <url>          Indirizzo di SearXNG (default: http://127.0.0.1:8080)
  • Network accessline 130
    const get = () => fetch(url, { signal: AbortSignal.timeout(TIMEOUT_MS) });
  • Network accessline 306
    while (Date.now() < deadline) {     try {       const res = await fetch(`${SEARXNG_BASE}/search?format=json&q=health`, {
  • Network accessline 307
    try {       const res = await fetch(`${SEARXNG_BASE}/search?format=json&q=health`, {         signal: AbortSignal.timeout(TIMEOUT_MS),
  • Network accessline 308
    const res = await fetch(`${SEARXNG_BASE}/search?format=json&q=health`, {
  • Network accessline 323
    try {     const url = `${SEARXNG_BASE}/search?format=json&q=health`;     const res = await fetch(url, { signal: AbortSignal.timeout(TIMEOUT_MS) });
  • Network accessline 324
    const url = `${SEARXNG_BASE}/search?format=json&q=health`;     const res = await fetch(url, { signal: AbortSignal.timeout(TIMEOUT_MS) });     const out = { ok: true, status: res.status };
  • Network accessline 325
    const res = await fetch(url, { signal: AbortSignal.timeout(TIMEOUT_MS) });

scripts/setup.sh

  • Executable scriptline 1
    #!/bin/bash

scripts/smart-extract.mjs

  • Executable scriptline 1
    #!/usr/bin/env node

How the signals fit together

Facts from a static read of the files at the pinned commit. They describe what the code does, not why.

Some files could not be read; the facts below still hold.

Declared and executed: 1 fact
  • Contacts registry.npmjs.org, which SKILL.md, the README and the plugin manifest do not mentionscripts/audit.sh:100High confidence
Signal confidence: 499 facts

and 449 more

Only the first 500 facts are listed.

Works with

Agent compatibility, from the files in this repository
AgentStatusEvidenceInstall to
Claude CodeCompatibleStandard SKILL.md SKILL.md.claude/skills/<skill-name>/
CodexCompatibleStandard SKILL.md SKILL.md.agents/skills/<skill-name>/
CursorCompatibleStandard SKILL.md SKILL.md.cursor/skills/<skill-name>/
Gemini CLICompatibleStandard SKILL.md SKILL.md.gemini/skills/<skill-name>/
GitHub CopilotCompatibleStandard SKILL.md SKILL.md.github/skills/<skill-name>/
OpenCodeCompatibleStandard SKILL.md SKILL.md.opencode/skills/<skill-name>/
  • Native The repository ships a manifest, folder or frontmatter field for this agent.
  • Compatible A standard SKILL.md that this agent can read.
  • Unknown No evidence either way.

Derived automatically from paths, manifests and frontmatter. Not tested on each agent.