stealth_ mode
Pintas sistem pengesanan bot dengan teknik anti-pengesanan lanjutan termasuk rawakan cap jari, simulasi gelagat manusia dan konfigurasi pelayar senyap.
Kes Penggunaan
Tapak E-dagang Terlindung
Scrape data produk daripada tapak dengan perlindungan Cloudflare, DataDome atau PerimeterX
Platform Media Sosial
Ekstrak data awam daripada platform dengan pengesanan bot yang canggih
Tapak Data Kewangan
Akses data pasaran, harga saham dan maklumat kewangan daripada sumber terlindung
API Berhad Kadar
Pintas penghadan kadar agresif dengan putaran cap jari
Kandungan Disekat Geografi
Akses kandungan terhad rantau melalui proksi yang anda bekalkan
Pengujian Keselamatan Tinggi
Uji sistem anti-bot anda sendiri dengan teknik pengelakan lanjutan
Endpoint
/api/v1/tools/stealth_modeParameters
| Name | Type | Required | Default | Description |
|---|---|---|---|---|
operation | string | Optional | configure | Operasi senyap untuk dilaksanakan: scrape, configure, create_context, create_page, get_stats, atau cleanup. `scrape` ialah laluan satu panggilan — ia mencipta konteks senyap, menavigasi ke `url`, memulangkan `formats` yang diminta, dan meruntuhkan konteks itu, semuanya dalam satu panggilan yang dicaj. create_context diikuti create_page ialah semakan navigasi dan cabaran: `create_page` memuatkan `urlToTest`, melaporkan status, tajuk dan sebarang halaman cabarannya, dan menutup halaman itu sebelum panggilan kembali, jadi tiada apa-apa padanya dibawa ke panggilan seterusnya. Untuk kerja merentas beberapa panggilan pada satu halaman (log masuk, kemudian baca; klik, kemudian baca), gunakan [browser_session](/docs/api-reference/tools/browser-session) dengan `stealth: true`. `configure` hanya mengesahkan `stealthConfig` dan memulangkannya dengan nilai lalai diisi, bersama satu `note` — ia tidak menyimpan apa-apa, jadi hantar `stealthConfig` pada setiap panggilan `scrape` atau `create_context` yang perlu menggunakannya. Example: create_context |
stealthConfig | object | Optional | - | Pilihan senyap terperinci. Kunci: level (basic | medium | advanced, lalai medium), randomizeFingerprint, hideWebDriver, blockWebRTC, spoofTimezone, randomizeHeaders, useRandomUserAgent, simulateHumanBehavior (semua boolean, lalai true), customUserAgent, customViewport ({ width 800-1920, height 600-1080 }), locale (lalai "en-US"), dan timezone. Konfigurasi ini terpakai pada panggilan yang membawanya sahaja dan tidak diingati antara panggilan. Pada enjin `camoufox`, `customUserAgent` dan `customViewport` tidak digunakan, `locale` ditetapkan semasa pelayar dilancarkan, dan di belakang proksi `locale` serta `timezone` mengikut IP keluar; `scrape` dan `create_context` melaporkan setiap satu daripadanya dalam `warnings`. Example: {"level": "advanced", "blockWebRTC": true} |
engine | string | Optional | playwright | Enjin pelayar: "playwright" (lalai) atau "camoufox" (berasaskan Firefox, anti-pengesanan lebih kukuh; tersedia hanya di tempat ia dipasang pada backend). Example: camoufox |
contextId | string | Optional | - | ID konteks pelayar yang dikembalikan oleh panggilan create_context. Hantar ia ke create_page untuk membuka halaman dalam konteks senyap tersebut. Example: ctx_ab12cd34ef56 |
urlToTest | string | Optional | - | create_page: URL untuk dinavigasi dan disemak. Halaman ditutup sebelum panggilan kembali. Example: https://protected-site.com |
url | string | Optional | - | URL untuk di-scrape. Diperlukan untuk `operation: "scrape"` dan diabaikan oleh operasi lain, yang menggunakan `urlToTest` sebaliknya. Example: https://protected-site.com/product/42 |
formats | array | Optional | ["markdown"] | Format yang dipulangkan oleh `operation: "scrape"`: `markdown`, `html`, `text`, `links`, `metadata`, atau `screenshot`. Tangkapan skrin dipulangkan sebagai URI sumber `crawlforge://screenshot/{id}` dan bukan base64 sebaris, dan titik akhir REST ini menyalurkan URI itu tanpa menyelesaikannya, jadi buat masa ini `screenshot` hanya boleh digunakan daripada pelayan MCP CrawlForge yang mampu membaca sumber tersebut. Example: ["markdown", "links"] |
wait_for | number | Optional | - | Tempoh menunggu tambahan selepas halaman dimuatkan, dalam milisaat (0-30000). Gunakannya untuk kandungan yang dipaparkan selepas DOMContentLoaded — larian senyap sudah pun berhenti seketika seperti manusia, jadi mulakan dengan nilai kecil. Example: 2000 |
verbose | boolean | Optional | false | Pulangkan cap jari penuh yang dijana oleh create_context dan bukan ringkasan. Berguna semasa menyahpepijat sebab sasaran masih mengesan pelayar. Example: false |
respect_robots | boolean | Optional | true | Hormati robots.txt tapak sasaran. Jika ditinggalkan, nilai lalai yang patuh (`true`) terpakai: URL yang dilarang untuk `CrawlForge` ditolak sebelum sebarang pelayar dilancarkan dan titik akhir ini tidak mengenakan sebarang caj untuknya, dan setiap navigasi diperiksa dengan cara yang sama. Peraturan itu dipadankan dengan token produk `CrawlForge` walaupun pelayar senyap memaparkan User-Agent yang dirawakkan, jadi arahan `User-agent: CrawlForge` daripada pemilik tapak turut mengikat trafik senyap. Tetapkan kepada `false` hanya untuk sasaran yang anda mempunyai perjanjian sendiri dengannya — respons kemudiannya membawa entri `warnings` dan tindakan mengatasi itu direkodkan pada API key anda. Example: true |
max_inline_chars | number | Optional | 40000 | Hasil terbesar yang dikembalikan sebaris, dalam aksara JSON-nya (1,000-10,000,000). Melebihinya, respons membawa `preview` (`max_inline_chars` aksara pertama medan teks utama hasil), `result_handle`, `total_chars`, `truncated: true` dan `expires_at`, dan [read_result](/docs/api-reference/tools/read-result) membaca selebihnya dengan 1 credit setiap panggilan. Hasil tersimpan disimpan selama 1 jam. Terpakai pada operasi `scrape`. Example: 40000 |
redact_pii | boolean | object | Optional | false | Buang data peribadi daripada teks yang dikembalikan oleh panggilan ini, sebelum hasilnya disimpan atau dihantar balik. Terpakai pada `operation: "scrape"`, satu-satunya operasi yang mengembalikan halaman; operasi simpan kira tidak mempunyai teks untuk disunting. `true` ialah singkatan bagi `{ mode: "fast" }` — keempat-empat kelas regex, bertag. Setiap kali anda meminta penyuntingan, respons membawa `redaction: { entities, count, mode }` di dalam `data`, walaupun tiada apa-apa yang sepadan (`count: 0`), jadi "tiada apa-apa ditemui" tidak pernah disalah anggap sebagai "parameter itu diabaikan"; kelas tanpa padanan ditinggalkan dan bukan dilaporkan sebagai `0`. Penyuntingan berjalan **sebelum** hasil itu disimpan, jadi hasil besar yang dibaca kemudian dengan [read_result](/docs/api-reference/tools/read-result) sudah pun disunting. Dua batas yang disengajakan: alamat (`url`, `link`, `href`, `canonical_url`) tidak pernah disunting, dan kiraan yang diperoleh daripada teks (`content_length`, `word_count`, `character_count`) menggambarkan teks itu sebagaimana ia diekstrak, sebelum penyuntingan. Example: true |
Operasi dan kosnya
5 credits membayar kerja pelayar; operasi pentadbiran berharga 1 credit setiap satu. Jadi scrape satu panggilan berharga 5 credits, manakala laluan create_context → create_page → cleanup berharga 11.
url, memulangkan formats yang diminta bersama tajuk halaman dan URL akhir, lalu meruntuhkan konteks itu. Mulakan di sini.contextId-nya. Gunakannya apabila beberapa halaman perlu berkongsi satu cap jari dan satu simpanan kuki.urlToTest di dalam contextId sedia ada. Halaman ditutup apabila panggilan selesai; konteks kekal.stealthConfig dan memulangkannya dengan nilai lalai diisi, bersama satu note yang menyatakannya. Tiada apa-apa disimpan dan tiada panggilan seterusnya mengambilnya — hantar stealthConfig pada setiap panggilan scrape atau create_context. Tiada pelayaran berlaku, jadi ini dicaj sebagai kerja pentadbiran.activeContexts, totalFingerprintsSaved, browserRunning, humanBehaviorActive dan proxyStatus (enabled, currentProxy, totalProxies) bagi bahagian belakang. Tiada pelayaran.Apa yang mod senyap tidak lakukan
Mod senyap memaparkan JavaScript dengan cap jari pelayar yang dirawakkan. Ia tidak menyelesaikan CAPTCHA, tidak memalsukan token cabaran, dan tidak memintas log masuk atau dinding bayaran, serta bukan jalan untuk mengelak sekatan yang ditujukan khusus kepada CrawlForge. robots.txt tetap terpakai pada setiap navigasi, dipadankan dengan token produk CrawlForge. Jika sasaran masih menolak, jawapannya ialah API yang berdokumentasi atau kebenaran pemilik tapak, bukan tahap senyap yang lebih tinggi.
Dari mana trafik senyap keluar
API terhos menjalankan stealth_mode dari alamat pusat data. CrawlForge tidak mengendalikan sebarang kumpulan proksi kediaman, dan laman yang menilai rangkaian sebelum menjalankan JavaScript (Cloudflare, DataDome) mungkin masih mencabar pemaparan terhos. Hantar proksi kediaman atau mudah alih anda sendiri dalam stealthConfig.proxyRotation dan setiap konteks senyap akan menggunakannya. Proksi berjalan bagi setiap konteks pada enjin Chromium (playwright) sahaja: proxyRotation bagi setiap panggilan ditolak pada camoufox, yang menggunakan proksinya semasa pelayar dilancarkan dan berkongsi pelayar itu merentas panggilan — jika anda menghos sendiri, berikan Camoufox laluan keluar melalui CRAWLFORGE_STEALTH_PROXIES. Jika anda menghos sendiri pelayan MCP, CRAWLFORGE_STEALTH_PROXIES menetapkan keluar seluruh pelayan, dan CRAWLFORGE_BROWSER_BACKEND=browserbase menyerahkan sesi senyap kepada akaun Browserbase, yang membawa keluar kediaman dan penyelesaian CAPTCHA sendiri di bawah terma akaun itu.
Pemilihan enjin
stealth_mode menyokong dua enjin pelayar asas. Pilih berdasarkan kesukaran pengesanan tapak sasaran anda.
Contoh enjin
curl -X POST https://crawlforge.dev/api/v1/tools/stealth_mode \
-H "X-API-Key: cf_test_YOUR_KEY" \
-H "Content-Type: application/json" \
-d '{
"operation": "create_context",
"engine": "camoufox",
"stealthConfig": {
"level": "advanced"
}
}'Tahap Senyap
Contoh Permintaan
# 1. Create a stealth browser context
curl -X POST https://crawlforge.dev/api/v1/tools/stealth_mode \
-H "X-API-Key: cf_test_YOUR_KEY" \
-H "Content-Type: application/json" \
-d '{
"operation": "create_context",
"engine": "playwright",
"stealthConfig": {
"level": "advanced",
"randomizeFingerprint": true,
"blockWebRTC": true
}
}'
# 2. Open a page in that context (use the contextId from step 1)
curl -X POST https://crawlforge.dev/api/v1/tools/stealth_mode \
-H "X-API-Key: cf_test_YOUR_KEY" \
-H "Content-Type: application/json" \
-d '{
"operation": "create_page",
"contextId": "ctx_ab12cd34ef56",
"urlToTest": "https://protected-site.com"
}'Contoh Respons
{ "success": true, "data": { "operation": "create_context", "contextId": "ctx_ab12cd34ef56", "engine": "playwright", "stealthConfig": { "level": "advanced", "randomizeFingerprint": true, "hideWebDriver": true, "blockWebRTC": true, "spoofTimezone": true, "locale": "en-US" }, "message": "Stealth context created" }, "credits_used": 5, "credits_remaining": 995, "processing_time": 1200}data.contextIdHantar ia ke create_page untuk membuka halaman dalam konteks senyap inidata.operationOperasi senyap yang telah dilaksanakandata.stealthConfigKonfigurasi senyap terlerai yang digunakan pada kontekscredits_used5 credits untuk kerja pelayar (scrape, create_context, create_page); 1 credit untuk operasi pentadbiranprocessing_timeMasa untuk memulakan konteks senyap (ms)Pengendalian Ralat
Runtime pelayar tidak dikonfigurasikan (503 TOOL_NOT_AVAILABLE)
Mod senyap memerlukan runtime pelayar. Apabila bahagian belakang pelaksanaan terhos tidak dikonfigurasikan, panggilan memulangkan 503 serta-merta dan tiada credits dicaj.
Had kadar dilampaui (429 Too Many Requests)
Anda telah melampaui had kadar pelan anda. Tunggu sebentar atau naik taraf pelan anda untuk had yang lebih tinggi.
Operasi Tidak Sah (400 Bad Request)
Operasi mestilah salah satu daripada: scrape, configure, create_context, create_page, get_stats, atau cleanup.
Bahagian belakang pelaksanaan tamat masa (504 MCP_UPSTREAM_TIMEOUT)
Sasaran tidak selesai dimuatkan dalam bajet masa bahagian belakang pelaksanaan. Laman yang dilindungi ketat ialah punca lazim. Kegagalan tidak dicaj.
Disekat oleh robots.txt (502 TOOL_ERROR)
robots.txt sasaran melarang URL ini untuk CrawlForge, jadi tiada pelayar dilancarkan dan tiada apa-apa dicaj. Tetapkan respect_robots: false untuk mengatasinya jika anda mempunyai perjanjian sendiri dengan sasaran — tindakan mengatasi itu direkodkan pada API key anda. Tindakan mengatasi itu tidak sampai kepada hos yang berada dalam senarai penarikan diri kekal CrawlForge, yang ditolak tanpa mengira nilai respect_robots.
Mulakan dengan tahap senyap "medium". Hanya gunakan "advanced" untuk tapak yang menyekat tahap medium. Guna semula satu konteks merentas beberapa panggilan create_page untuk menjimatkan masa persediaan—rancang sewajarnya untuk operasi berkelompok.
Kos Credit
scrape, create_context, atau create_page — tidak kira tahap senyap. Operasi pentadbiran configure, get_stats dan cleanup tidak melayari apa-apa dan berharga 1 credit setiap satu, jadi scrape satu panggilan berharga 5 credits keseluruhannya.Apa yang Disertakan:
Rawakan cap jari (semua tahap)
Simulasi gelagat manusia
Teknik anti-pengesanan
Pengelakan pengesanan WebDriver (medium+)
Penyamaran Canvas/WebGL (medium+)
Pengecaman cap jari TLS lanjutan (advanced)
Cadangan Pelan:
Pelan Free: 1,000 credits percubaan sekali sahaja = 200 permintaan senyap
Pelan Hobby: 5,000 credits = 1,000 permintaan senyap ($19/mo)
Pelan Professional: 100,000 credits = 20,000 permintaan senyap ($99/mo)
Alat Berkaitan
Bersedia untuk mencuba stealth_mode? Daftar percuma dan dapatkan 1,000 credits untuk mula membina.