diff --git a/browsers/bot-detection/overview.mdx b/browsers/bot-detection/overview.mdx index f14cccc..3859755 100644 --- a/browsers/bot-detection/overview.mdx +++ b/browsers/bot-detection/overview.mdx @@ -24,8 +24,11 @@ Most detection systems look for inconsistencies between how a real user's browse These systems are heuristic and probabilistic — small mismatches can still trigger blocks. The goal isn't to “beat” detection but rather emulate the real-world conditions of a normal browser session. ## Kernel Features That Help +### Anti-detection defaults +Every Kernel browser launches with anti-detection chrome configuration applied. No setup required. + ### [Stealth Mode](/browsers/bot-detection/stealth) -A basic configuration that launches Kernel's browser through a residential proxy and integrates a Google [reCAPTCHA solver](https://www.google.com/recaptcha/api2/demo). +On top of the defaults, stealth mode adds a default residential proxy and an automatic CAPTCHA solver. Both are opt-out so you can BYO proxy and/or CAPTCHA tooling. ### [Configurable Proxies](/proxies/overview) Bring your own proxy network or use Kernel's managed pool (selectable down to ZIP-code level). If needed, use the same IP to reduce detection and allow for regional testing or QA. diff --git a/browsers/bot-detection/stealth.mdx b/browsers/bot-detection/stealth.mdx index 25d8b69..eba54ee 100644 --- a/browsers/bot-detection/stealth.mdx +++ b/browsers/bot-detection/stealth.mdx @@ -2,7 +2,14 @@ title: "Stealth Mode" --- -Kernel browsers can be configured to `stealth` mode, which automatically adds our recommended proxy to your browser instances. It also adds a `reCAPTCHA solver` to the browser, so it automatically solves [reCAPTCHAs](https://www.google.com/recaptcha/api2/demo) on your behalf. +All Kernel browsers ship with anti-detection optimizations by default — you don't need stealth mode for this baseline. + +Enabling `stealth` mode adds two managed services on top: + +1. **Default residential proxy** — traffic routes through Kernel's residential proxy pool. +2. **Automatic CAPTCHA solver** — solves [reCAPTCHAs](https://www.google.com/recaptcha/api2/demo), Cloudflare challenges, and similar tests automatically. + +Both are opt-out so you can [bring your own](#bring-your-own-proxy-or-captcha-solver) where it makes sense. To turn on stealth mode, set its flag when instantiating Kernel browsers: @@ -28,7 +35,15 @@ kernel_browser = kernel.browsers.create( ``` -If you're looking for proxy-level configuration with Kernel browsers, see [Proxies](/proxies/overview). To disable the default proxy on a running stealth browser, see [Disable default proxy](/proxies/overview#disable-default-proxy-on-stealth-browsers). +## Bring your own proxy or CAPTCHA solver + +Anti-detection is the platform default, so you can freely mix in your own networking or CAPTCHA tooling. Common patterns: + +- **BYO proxy, keep CAPTCHA solver** — launch a stealth browser with your own [proxy](/proxies/overview) via `proxy_id`. Replaces the residential default; CAPTCHA solver stays loaded. +- **BYO proxy, no CAPTCHA solver** — launch a non-stealth browser with your own `proxy_id`. Full anti-detection config, no managed proxy or CAPTCHA extension. +- **Disable the default proxy at runtime** — on a running stealth browser, set [`disable_default_proxy`](/proxies/overview#disable-default-proxy-on-stealth-browsers) to route directly while keeping the CAPTCHA solver. + +If you're looking for proxy-level configuration with Kernel browsers, see [Proxies](/proxies/overview). ## CAPTCHA Handling Behavior @@ -46,4 +61,4 @@ When encountering a Cloudflare challenge, our auto-CAPTCHA solver will attempt t After the "Ready" message appears, don't click the Cloudflare CAPTCHA checkbox — this can interfere with the solver. - \ No newline at end of file + diff --git a/changelog.mdx b/changelog.mdx index 80510de..476729f 100644 --- a/changelog.mdx +++ b/changelog.mdx @@ -9,6 +9,17 @@ import { YouTubeVideo } from '/snippets/youtube-video.mdx'; For API library updates, see the [Node SDK](https://github.com/onkernel/kernel-node-sdk/blob/main/CHANGELOG.md), [Python SDK](https://github.com/onkernel/kernel-python-sdk/blob/next/CHANGELOG.md), and [Go SDK](https://github.com/onkernel/kernel-go-sdk/blob/main/CHANGELOG.md) changelogs. + +## Product updates + +- Anti-detection chrome configuration is now applied to **every** Kernel browser by default — previously only stealth browsers. Stealth mode now exclusively manages the default residential proxy and CAPTCHA solver, both of which remain [opt-out](/browsers/bot-detection/stealth#bring-your-own-proxy-or-captcha-solver). + +## Documentation updates + +- Rewrote the [Stealth Mode](/browsers/bot-detection/stealth) page to clarify anti-detection defaults and document BYO proxy / CAPTCHA patterns. +- Added a [Bring your own proxy](/proxies/overview#bring-your-own-proxy) section to the proxies overview. + + ## Product updates diff --git a/proxies/overview.mdx b/proxies/overview.mdx index 333962f..0f9e1f5 100644 --- a/proxies/overview.mdx +++ b/proxies/overview.mdx @@ -251,6 +251,26 @@ The update is synchronous — when the call returns, the proxy swap is fully app If you swap the proxy on a browser acquired from a pool, the browser will be reset back to the pool's default proxy configuration when it is released. Releasing the browser will be delayed by the swap duration (~2-3 seconds) while the proxy is restored to the pool default. +### Bring your own proxy + +Attach a custom `proxy_id` to any browser — stealth or non-stealth — and Kernel's anti-detection config still applies. For full anti-detection without the managed proxy or CAPTCHA solver, launch a non-stealth browser with your own `proxy_id`: + + +```typescript Typescript/Javascript +const browser = await kernel.browsers.create({ + stealth: false, + proxy_id: myProxy.id, +}); +``` + +```python Python +browser = kernel.browsers.create( + stealth=False, + proxy_id=my_proxy.id, +) +``` + + ### Disable default proxy on stealth browsers [Stealth browsers](/browsers/bot-detection/stealth) are automatically assigned a proxy. To disable this on a running stealth browser and route traffic directly, set `disable_default_proxy` to `true`: