Skip to content

Commit 735a840

Browse files
tembo[bot]sjmiller609juecd
authored
Docs: Add Proxies & Configure Proxy (#58)
* Add SDK documentation for Proxies feature - Create new Proxies documentation section with pages for each proxy type (datacenter, isp, residential, mobile, custom) - Add 'Configure proxy' page under Browsers section explaining how to use proxies with browsers - Update navigation in docs.json to include new Proxies section and Configure proxy page - Include code examples in both TypeScript/JavaScript and Python for all proxy types - Document configuration parameters, use cases, benefits and limitations for each proxy type * Rename file * Simplify proxies doc * further simplify * Clarify configuration parameters * Clean up docs * Fix ISP doc * Update intro datacenter * Update mobile intro * Update residential intro * IA proxies (#59) * IA proxies * Reorder * Document known limitations --------- Co-authored-by: tembo-io[bot] <208362400+tembo-io[bot]@users.noreply.github.com> Co-authored-by: Steven Miller <[email protected]> Co-authored-by: Catherine Jue <[email protected]>
1 parent a33766f commit 735a840

File tree

9 files changed

+434
-6
lines changed

9 files changed

+434
-6
lines changed

.gitignore

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,8 @@
11
*/.DS_Store
22
.DS_Store
33

4-
node_modules/
4+
node_modules/
5+
venv
6+
__pycache__/**
7+
test.py
8+
./kernel/**

browsers/stealth.mdx

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,9 +2,9 @@
22
title: "Stealth Mode"
33
---
44

5-
Kernel browsers can be configured to `stealth` mode, which adds a high performant residential proxy and auto-CAPTCHA solver to your instances.
5+
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.
66

7-
To turn on stealth mode, set its flag in your app code when instantiating Kernel:
7+
To turn on stealth mode, set its flag when instantiating Kernel browsers:
88

99
<CodeGroup>
1010
```typescript Typescript/Javascript
@@ -23,4 +23,6 @@ kernel_browser = client.browsers.create(invocation_id=ctx.invocation_id, stealth
2323
[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:
2424

2525
`"If you see a CAPTCHA or similar test, just wait for it to get solved automatically by the browser."`
26-
</Info>
26+
</Info>
27+
28+
If you're looking for proxy-level configuration with Kernel browsers, see [Proxies](/proxies/overview).

docs.json

Lines changed: 18 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -56,14 +56,30 @@
5656
"pages": [
5757
"browsers/create-a-browser",
5858
"browsers/headless",
59-
"browsers/stealth",
6059
"browsers/standby",
6160
"browsers/persistence",
6261
"browsers/profiles",
6362
"browsers/termination",
6463
"browsers/file-io",
6564
"browsers/live-view",
66-
"browsers/replays"
65+
"browsers/replays",
66+
{
67+
"group": "Bot Anti-Detection",
68+
"pages": [
69+
"browsers/stealth",
70+
{
71+
"group": "Proxies",
72+
"pages": [
73+
"proxies/overview",
74+
"proxies/custom",
75+
"proxies/mobile",
76+
"proxies/residential",
77+
"proxies/isp",
78+
"proxies/datacenter"
79+
]
80+
}
81+
]
82+
}
6783
]
6884
},
6985
{

proxies/custom.mdx

Lines changed: 68 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,68 @@
1+
---
2+
title: "Custom Proxies"
3+
---
4+
5+
Custom proxies allow you to use your own proxy servers with Kernel browsers. This is useful when you have existing proxy infrastructure or specific proxy requirements not covered by Kernel's managed options.
6+
7+
## Configuration
8+
9+
<Tip>
10+
Currently, only HTTPS proxies are supported for custom proxy configurations.
11+
</Tip>
12+
13+
Specify the host, port, and optional authentication credentials for your proxy server:
14+
15+
<CodeGroup>
16+
17+
```typescript Typescript/Javascript
18+
import { Kernel } from '@onkernel/sdk';
19+
const kernel = new Kernel();
20+
21+
const proxy = await kernel.proxies.create({
22+
type: 'custom',
23+
name: 'My Private Proxy',
24+
config: {
25+
host: 'proxy.example.com',
26+
port: 443,
27+
username: 'user123',
28+
password: 'secure_password'
29+
}
30+
});
31+
32+
const browser = await kernel.browsers.create({
33+
proxy_id: proxy.id
34+
});
35+
```
36+
37+
```Python Python
38+
import kernel
39+
client = kernel.Kernel()
40+
41+
proxy = client.proxies.create(
42+
type='custom',
43+
name='My Private Proxy',
44+
config={
45+
'host': 'proxy.example.com',
46+
'port': 443,
47+
'username': 'user123',
48+
'password': 'secure_password'
49+
}
50+
)
51+
52+
browser = client.browsers.create(
53+
proxy_id=proxy.id
54+
)
55+
```
56+
57+
</CodeGroup>
58+
59+
## Configuration Parameters
60+
61+
- **`host`** (required) - Proxy server hostname or IP address
62+
- **`port`** (required) - Proxy server port (1-65535)
63+
- **`username`** - Username for proxy authentication
64+
- **`password`** - Password for proxy authentication (minimum 5 characters)
65+
66+
<Info>
67+
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.
68+
</Info>

proxies/datacenter.mdx

Lines changed: 51 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,51 @@
1+
---
2+
title: "Datacenter Proxies"
3+
---
4+
5+
Datacenter proxies use IP addresses assigned from datacenter servers to route your traffic and access locations around the world. With a shorter journey and simplified architecture, datacenter proxies are both the fastest and most cost-effective proxy option.
6+
7+
## Configuration
8+
9+
Datacenter proxies require a country to route traffic through:
10+
11+
<CodeGroup>
12+
13+
```typescript Typescript/Javascript
14+
import { Kernel } from '@onkernel/sdk';
15+
const kernel = new Kernel();
16+
17+
const proxy = await kernel.proxies.create({
18+
type: 'datacenter',
19+
name: 'US Datacenter',
20+
config: {
21+
country: 'US'
22+
}
23+
});
24+
25+
const browser = await kernel.browsers.create({
26+
proxy_id: proxy.id
27+
});
28+
```
29+
30+
```Python Python
31+
import kernel
32+
client = kernel.Kernel()
33+
34+
proxy = client.proxies.create(
35+
type='datacenter',
36+
name='US Datacenter',
37+
config={
38+
'country': 'US'
39+
}
40+
)
41+
42+
browser = client.browsers.create(
43+
proxy_id=proxy.id
44+
)
45+
```
46+
47+
</CodeGroup>
48+
49+
## Configuration Parameters
50+
51+
- **`country`** (required) - ISO 3166 country code (e.g., `US`, `GB`, `FR`) or `EU` for European Union exit nodes

proxies/isp.mdx

Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,45 @@
1+
---
2+
title: "ISP Proxies"
3+
---
4+
5+
ISP (Internet Service Provider) proxies combine the speed of datacenter proxies with better legitimacy, as they use IP addresses assigned by real ISPs.
6+
7+
## Configuration
8+
9+
Create an ISP proxy with optional targeting:
10+
11+
<CodeGroup>
12+
13+
```typescript Typescript/Javascript
14+
import { Kernel } from '@onkernel/sdk';
15+
const kernel = new Kernel();
16+
17+
const proxy = await kernel.proxies.create({
18+
type: 'isp',
19+
name: 'My ISP Proxy'
20+
});
21+
22+
const browser = await kernel.browsers.create({
23+
proxy_id: proxy.id
24+
});
25+
```
26+
27+
```Python Python
28+
import kernel
29+
client = kernel.Kernel()
30+
31+
proxy = client.proxies.create(
32+
type='isp',
33+
name='My ISP Proxy'
34+
)
35+
36+
browser = client.browsers.create(
37+
proxy_id=proxy.id
38+
)
39+
```
40+
41+
</CodeGroup>
42+
43+
## Configuration Parameters
44+
45+
- **`country`** (required) - ISO 3166 country code. Not many countries are supported for ISP proxies, try to create a proxy in a country to check if it's available.

proxies/mobile.mdx

Lines changed: 86 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,86 @@
1+
---
2+
title: "Mobile Proxies"
3+
---
4+
5+
Mobile proxies use real mobile IPs from devices on cellular networks worldwide. These IPs are distributed by ISPs to mobile devices, where real users opt-in to share their connection.
6+
7+
## Configuration
8+
9+
Mobile proxies support carrier selection and advanced targeting options:
10+
11+
<CodeGroup>
12+
13+
```typescript Typescript/Javascript
14+
import { Kernel } from '@onkernel/sdk';
15+
const kernel = new Kernel();
16+
17+
const proxy = await kernel.proxies.create({
18+
type: 'mobile',
19+
name: 'LA Mobile',
20+
config: {
21+
country: 'US',
22+
city: 'losangeles'
23+
}
24+
});
25+
26+
const browser = await kernel.browsers.create({
27+
proxy_id: proxy.id
28+
});
29+
```
30+
31+
```Python Python
32+
import kernel
33+
client = kernel.Kernel()
34+
35+
proxy = client.proxies.create(
36+
type='mobile',
37+
name='LA Mobile',
38+
config={
39+
'country': 'US',
40+
'city': 'losangeles'
41+
}
42+
)
43+
44+
browser = client.browsers.create(
45+
proxy_id=proxy.id
46+
)
47+
```
48+
49+
</CodeGroup>
50+
51+
## Configuration Parameters
52+
53+
- **`country`** - ISO 3166 country code
54+
- **`carrier`** - Mobile carrier name (see available carriers below)
55+
- **`state`** - Two-letter state code. Only supported for US and Australia. Cannot be used with `city`
56+
- **`city`** - City name (lowercase, no spaces, e.g., `newyork`, `losangeles`). Required if `zip` is provided
57+
- **`zip`** - US ZIP code (5 digits). Requires `city` to be provided
58+
- **`asn`** - Autonomous System Number. Mutually exclusive with geo-location targeting
59+
60+
## Supported Carriers
61+
62+
Major carriers worldwide are supported:
63+
64+
**US Carriers:**
65+
- `att` - AT&T
66+
- `verizon` - Verizon
67+
- `tmobile` - T-Mobile
68+
- `sprint` - Sprint
69+
- `comcast` - Xfinity Mobile
70+
- `cox` - Cox Mobile
71+
72+
**International Carriers:**
73+
- `vodafone` - Vodafone
74+
- `orange` - Orange
75+
- `telefonica` - Telefónica
76+
- `dt` - Deutsche Telekom
77+
- `docomo` - NTT Docomo
78+
- `chinamobile` - China Mobile
79+
- `airtel` - Bharti Airtel
80+
- `telstra` - Telstra
81+
82+
See API reference for complete list of carriers.
83+
84+
## Limitations
85+
86+
Highly specific geotargeting may not have available IP addresses. Try creating a mobile proxy configuration to see if a specific geotargeting combination is available. Use less specific geotargeting where not available, or use residential proxies which are the most flexible option.

0 commit comments

Comments
 (0)