diff --git a/browsers/proxies.mdx b/browsers/proxies.mdx deleted file mode 100644 index bc6bbac..0000000 --- a/browsers/proxies.mdx +++ /dev/null @@ -1,94 +0,0 @@ ---- -title: "Proxies" ---- - -Kernel browsers can be configured to route traffic through proxies for enhanced privacy, geographic targeting, and bot detection avoidance. You can either create reusable proxy configurations or use them directly with browsers. - -## Using proxies with browsers - -To use a proxy with a browser, specify the `proxy_id` parameter when creating the browser session: - - - -```typescript Typescript/Javascript -import { Kernel } from '@onkernel/sdk'; -const kernel = new Kernel(); - -// First, create a proxy configuration -const proxy = await kernel.proxies.create({ - type: 'residential', - name: 'US Residential', - config: { - country: 'US' - } -}); - -// Then use it with a browser -const browser = await kernel.browsers.create({ - proxy_id: proxy.id, - stealth: true // Recommended when using proxies -}); -``` - -```Python Python -import kernel -client = kernel.Kernel() - -# First, create a proxy configuration -proxy = client.proxies.create( - type='residential', - name='US Residential', - config={ - 'country': 'US' - } -) - -# Then use it with a browser -browser = client.browsers.create( - proxy_id=proxy.id, - stealth=True # Recommended when using proxies -) -``` - - - -## Reusing proxy configurations - -Once created, proxy configurations can be reused across multiple browser sessions: - - - -```typescript Typescript/Javascript -// Get existing proxies -const proxies = await kernel.proxies.list(); -const usProxy = proxies.find(p => p.name === 'US Residential'); - -// Create multiple browsers with the same proxy -const browsers = []; -for (let i = 0; i < 5; i++) { - const browser = await kernel.browsers.create({ - proxy_id: usProxy.id - }); - browsers.push(browser); -} -``` - -```Python Python -# Get existing proxies -proxies = client.proxies.list() -us_proxy = next(p for p in proxies if p.name == 'US Residential') - -# Create multiple browsers with the same proxy -browsers = [] -for i in range(5): - browser = client.browsers.create( - proxy_id=us_proxy.id - ) - browsers.append(browser) -``` - - - ---- - -For more information, see the [Proxies](/proxies/overview) section. \ No newline at end of file diff --git a/browsers/stealth.mdx b/browsers/stealth.mdx index ebb2aea..b7cef53 100644 --- a/browsers/stealth.mdx +++ b/browsers/stealth.mdx @@ -2,9 +2,9 @@ title: "Stealth Mode" --- -Kernel browsers can be configured to `stealth` mode, which adds a high performant residential proxy and auto-CAPTCHA solver to your instances. +Kernel browsers can be configured to `stealth` mode, which adds our recommended proxy configuration 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. -To turn on stealth mode, set its flag in your app code when instantiating Kernel: +To turn on stealth mode, set its flag when instantiating Kernel browsers: ```typescript Typescript/Javascript @@ -23,4 +23,6 @@ kernel_browser = client.browsers.create(invocation_id=ctx.invocation_id, stealth [Anthropic Computer Use](/quickstart#sample-apps-reference) stops when it runs into a CAPTCHA. Use Kernel's auto-captcha solver by adding this to your prompt: `"If you see a CAPTCHA or similar test, just wait for it to get solved automatically by the browser."` - \ No newline at end of file + + +If you're looking for proxy-level configuration with Kernel browsers, see [Proxies](/proxies/overview). diff --git a/docs.json b/docs.json index 55c1b25..b7c0b19 100644 --- a/docs.json +++ b/docs.json @@ -56,26 +56,30 @@ "pages": [ "browsers/create-a-browser", "browsers/headless", - "browsers/stealth", "browsers/standby", "browsers/persistence", "browsers/profiles", - "browsers/proxies", "browsers/termination", "browsers/file-io", "browsers/live-view", - "browsers/replays" - ] - }, - { - "group": "Proxies", - "pages": [ - "proxies/overview", - "proxies/datacenter", - "proxies/isp", - "proxies/residential", - "proxies/mobile", - "proxies/custom" + "browsers/replays", + { + "group": "Bot Anti-Detection", + "pages": [ + "browsers/stealth", + { + "group": "Proxies", + "pages": [ + "proxies/overview", + "proxies/custom", + "proxies/mobile", + "proxies/residential", + "proxies/isp", + "proxies/datacenter" + ] + } + ] + } ] }, { diff --git a/proxies/custom.mdx b/proxies/custom.mdx index 2913419..d4e204d 100644 --- a/proxies/custom.mdx +++ b/proxies/custom.mdx @@ -6,9 +6,9 @@ Custom proxies allow you to use your own proxy servers with Kernel browsers. Thi ## Configuration - + Currently, only HTTPS proxies are supported for custom proxy configurations. - + Specify the host, port, and optional authentication credentials for your proxy server: @@ -63,6 +63,6 @@ browser = client.browsers.create( - **`username`** - Username for proxy authentication - **`password`** - Password for proxy authentication (minimum 5 characters) - + When creating a proxy with authentication, provide the password. The API response will only indicate if a password exists (`has_password: true`) but won't return the actual password for security reasons. - \ No newline at end of file + \ No newline at end of file diff --git a/proxies/isp.mdx b/proxies/isp.mdx index 2c2912f..5670d6d 100644 --- a/proxies/isp.mdx +++ b/proxies/isp.mdx @@ -2,7 +2,7 @@ title: "ISP Proxies" --- -ISP (Internet Service Provider) proxies combine the speed of datacenter proxies with better legitimacy, as they use IP addresses assigned by real ISPs. They offer a good balance between performance and detection avoidance. +ISP (Internet Service Provider) proxies combine the speed of datacenter proxies with better legitimacy, as they use IP addresses assigned by real ISPs. ## Configuration diff --git a/proxies/mobile.mdx b/proxies/mobile.mdx index 07be5e7..d7ab95a 100644 --- a/proxies/mobile.mdx +++ b/proxies/mobile.mdx @@ -55,7 +55,7 @@ browser = client.browsers.create( ## Configuration Parameters - **`country`** - ISO 3166 country code -- **`carrier`** - Mobile carrier name (e.g., `verizon`, `att`, `tmobile`) +- **`carrier`** - Mobile carrier name (see available carriers below) - **`state`** - Two-letter state code. Only supported for US and Australia. Cannot be used with `city` - **`city`** - City name (lowercase, no spaces, e.g., `newyork`, `losangeles`). Required if `zip` is provided - **`zip`** - US ZIP code (5 digits). Requires `city` to be provided @@ -63,7 +63,7 @@ browser = client.browsers.create( ## Supported Carriers -Major carriers worldwide are supported, including: +Major carriers worldwide are supported: **US Carriers:** - `att` - AT&T @@ -81,6 +81,4 @@ Major carriers worldwide are supported, including: - `docomo` - NTT Docomo - `chinamobile` - China Mobile - `airtel` - Bharti Airtel -- `telstra` - Telstra - -[View all supported carriers in the API reference] \ No newline at end of file +- `telstra` - Telstra \ No newline at end of file diff --git a/proxies/overview.mdx b/proxies/overview.mdx index 7328933..c5bded9 100644 --- a/proxies/overview.mdx +++ b/proxies/overview.mdx @@ -1,32 +1,26 @@ --- -title: "Proxies Overview" +title: "Overview" --- import CreateProxySnippet from '/snippets/openapi/post-proxies.mdx'; import ListProxiesSnippet from '/snippets/openapi/get-proxies.mdx'; import DeleteProxySnippet from '/snippets/openapi/delete-proxies-id.mdx'; -Kernel proxies enable you to route browser traffic through different types of proxy servers, providing enhanced privacy, geographic flexibility, and bot detection avoidance. Proxies can be created once and reused across multiple browser sessions. +Kernel proxies enable you to route browser traffic through different types of proxy servers, providing enhanced privacy, flexibility, and bot detection avoidance. Proxies can be created once and reused across multiple browser sessions. ## Proxy Types -Kernel supports five types of proxies, ranked by quality for avoiding bot detection (from best to worst): +Kernel supports five types of proxies, ranked by quality (from best to worst): -1. **Mobile** - Traffic routed through mobile carrier networks -2. **Residential** - Traffic routed through residential ISP connections -3. **ISP** - Traffic routed through ISP data centers -4. **Datacenter** - Traffic routed through commercial data centers -5. **Custom** - Your own proxy servers +0. [**Custom**](/proxies/custom) - Your own proxy servers +1. [**Mobile**](/proxies/mobile) - Traffic routed through mobile carrier networks +2. [**Residential**](/proxies/residential) - Traffic routed through residential ISP connections +3. [**ISP**](/proxies/isp) - Traffic routed through ISP data centers +4. [**Datacenter**](/proxies/datacenter) - Traffic routed through commercial data centers ## 1. Create a proxy - -First, install the Kernel SDK: -- Typescript/Javascript: `npm install @onkernel/sdk` -- Python: `pip install kernel` - - -Create a proxy configuration that can be reused across browser sessions: +Create a proxy configuration from the types above that can be reused across browser sessions: @@ -88,6 +82,6 @@ When no longer needed, delete the proxy configuration: - -Deleting a proxy does not affect existing browser sessions that are using it. The proxy configuration is only removed from your organization. - \ No newline at end of file + +Deleting a proxy does not affect existing browser sessions that are currently using it. The configuration is only removed from your organization so it can't be used in future browser sessions. + \ No newline at end of file diff --git a/proxies/residential.mdx b/proxies/residential.mdx index 1a22cce..c8686d4 100644 --- a/proxies/residential.mdx +++ b/proxies/residential.mdx @@ -2,7 +2,7 @@ title: "Residential Proxies" --- -Residential proxies route traffic through real residential IP addresses, making them highly effective at avoiding bot detection. They support advanced targeting options including city, state, and operating system. +Residential proxies route traffic through real residential IP addresses. They support advanced targeting options including city, state, and operating system. ## Configuration