Geo Proxy
Category: Infrastructure Β· Since: v18.39.0
CBrowser routes browser traffic through residential proxies in 12 regions worldwide. Sites see a real residential IP from the target location instead of the server's IP.
Why This Matters
Many websites serve different content based on the visitor's IP location:
- Language β German vs English product pages
- Pricing β EUR vs USD, regional discounts
- Content β region-locked features, local regulations
- Compliance β GDPR consent banners, cookie walls
- CDN routing β different edge servers, different performance
Without geo-routing, CBrowser's server IP determines what content the site serves β which may not match what your users see.
Available Regions
| Region Code | Location | Country |
|---|---|---|
us-west |
Los Angeles, CA | United States |
us-east |
New York City, NY | United States |
us-central |
Denver, CO | United States |
uk |
London | United Kingdom |
germany |
Berlin | Germany |
france |
Paris | France |
japan |
Tokyo | Japan |
australia |
Sydney | Australia |
canada |
Toronto | Canada |
brazil |
Sao Paulo | Brazil |
india |
Mumbai | India |
singapore |
Singapore | Singapore |
Usage
Simple: geoRegion parameter
Pass a region code to any supported tool:
site_cognitive_assessment url="https://example.com" geoRegion="uk" userLanguage="en-GB"
cognitive_effort url="https://example.de" persona="first-timer" geoRegion="germany" userLanguage="de-DE"
The tool automatically routes through a residential proxy in that region.
Advanced: Raw proxy URL
For custom proxies or providers other than IPRoyal:
site_cognitive_assessment url="https://example.com" proxy="http://user:[email protected]:8080"
Supports HTTP and SOCKS5 proxy protocols.
Supported Tools
| Tool | geoRegion |
proxy |
userLanguage |
userLocation |
|---|---|---|---|---|
site_cognitive_assessment |
Yes | Yes | Yes | Yes |
cognitive_effort |
Yes | Yes | Yes | Yes |
empathy_audit |
β | β | Yes | Yes |
agent_ready_audit |
β | β | Yes | β |
cognitive_journey_init |
β | β | β | Yes (via location param) |
Three Layers of Geo-Accuracy
CBrowser applies three layers when geo parameters are set:
Layer 1: Accept-Language Header (Free)
Setting userLanguage="en-US" configures the browser's Accept-Language header. Most well-implemented sites check this header and serve content in the requested language.
Handles: Sites that follow HTTP content negotiation standards.
Layer 2: Browser Locale (Free)
The browser's navigator.language, Intl.DateTimeFormat, and related APIs are set to match the requested locale. This affects how JavaScript-rendered content (dates, numbers, currency) appears.
Handles: Single-page apps, JavaScript-heavy sites, sites that check navigator.language.
Layer 3: Residential Proxy (Requires proxy infrastructure)
The browser routes through a residential IP in the target region. The site's server sees a real home IP address from that location, not the CBrowser server's IP.
Handles: Sites that use IP-based geolocation (GeoIP databases, CDN-level routing, server-side redirects).
Language Mismatch Detection
When userLanguage is set, CBrowser checks the page's <html lang> attribute after loading. If the detected language doesn't match the expected language, a warning is included in the response:
{
"languageWarning": {
"expected": "en-US",
"detected": "de",
"message": "Page language \"de\" does not match expected \"en-US\". The site may be geo-detecting the server's IP rather than the user's locale."
}
}
This helps identify sites where proxy routing (Layer 3) is needed because Accept-Language (Layer 1) isn't sufficient.
Configuration
Server-Side (for self-hosted CBrowser)
Create ~/.cbrowser/geo-proxy.json:
{
"host": "geo.iproyal.com",
"port": 12321,
"username": "your_username",
"basePassword": "your_password",
"regions": {
"us-west": { "country": "us", "city": "losangeles" },
"uk": { "country": "gb", "city": "london" },
"germany": { "country": "de", "city": "berlin" }
}
}
Or set environment variables:
export IPROYAL_USERNAME="your_username"
export IPROYAL_PASSWORD="your_password"
Proxy Providers
CBrowser's geo-proxy system is designed for IPRoyal Residential Proxies but works with any HTTP/SOCKS5 proxy via the proxy parameter.
Requirements for residential proxies:
- HTTP or SOCKS5 protocol
- Username/password authentication
- Country and city targeting (for
geoRegionto work) - Sticky sessions (30-minute minimum recommended)
Performance Notes
- Residential proxies add 5-15 seconds of latency per request
- When
geoRegionorproxyis set, navigation timeouts automatically increase from 30s to 60s - Agent-ready audit timeouts increase from 60s to 120s when proxied
- First request through a new session may be slower (proxy handshake)
Related
site_cognitive_assessmentβ Three-gate pipeline with geo supportcognitive_effortβ Per-persona cognitive analysiscognitive_journey_initβ Journey with location settings- MCP Servers β Server endpoints and connection info