Skip to main content

Stealth Routes

BrowserQL's stealth routes provide advanced anti-detection capabilities specifically optimized for GraphQL-based browser automation. These routes combine BrowserQL's powerful automation features with comprehensive browser fingerprint mitigations and entropy injection for maximum effectiveness against bot detection systems.

Available Stealth Routes

  • Stealth Route (Recommended) - /stealth/bql
    Our recommended stealth route for BrowserQL users. This managed stealth environment provides advanced anti-detection and realistic fingerprinting with comprehensive browser fingerprint mitigations and entropy injection for maximum effectiveness against bot detection systems.

  • Chromium Stealth - /chromium/stealth/bql
    Optimized for Chromium, this route applies a comprehensive set of fingerprinting mitigations and entropy injection tailored to Chromium. It modifies browser APIs with subtle, realistic values to closely emulate a real browser and reduce detectability. Chromium's flexibility allows this route to be better tailored for stealthiness.

  • Chrome Stealth - /chrome/stealth/bql
    Designed for the standard Chrome experience, this route delivers anti-detection protections adjusted to preserve Chrome's native behaviors, while also providing enhanced resistance to bot-detection systems. Chrome includes additional codecs for multimedia rendering, making it appear more human-like in certain scenarios.

All routes work seamlessly with BrowserQL's GraphQL API and incorporate advanced stealth mechanisms including WebGL, Canvas, and WebRTC spoofing. We minimize web-compatibility issues as much as possible, though certain automation tasks that depend on spoofed technologies could theoretically see unexpected results.

Using Stealth Routes

To use stealth routes with BrowserQL, simply specify the stealth endpoint in your API calls:

REST API

# Stealth (Recommended)
curl -X POST \
https://production-sfo.browserless.io/stealth/bql?token=YOUR_API_TOKEN_HERE \
-H 'Content-Type: application/json' \
-d '{
"query": "query { goto(url: \"https://example.com\") { status } }"
}'

# Chromium Stealth
curl -X POST \
https://production-sfo.browserless.io/chromium/stealth/bql?token=YOUR_API_TOKEN_HERE \
-H 'Content-Type: application/json' \
-d '{
"query": "query { goto(url: \"https://example.com\") { status } }"
}'

# Chrome Stealth
curl -X POST \
https://production-sfo.browserless.io/chrome/stealth/bql?token=YOUR_API_TOKEN_HERE \
-H 'Content-Type: application/json' \
-d '{
"query": "query { goto(url: \"https://example.com\") { status } }"
}'

JavaScript/TypeScript

const STEALTH_ENDPOINT = 'https://production-sfo.browserless.io/stealth/bql?token=YOUR_API_TOKEN_HERE';

// Using Stealth (Recommended)
const response = await fetch(STEALTH_ENDPOINT, {
method: 'POST',
headers: {
'Content-Type': 'application/json',
},
body: JSON.stringify({
query: `
query {
goto(url: "https://example.com") {
status
}
html
}
`
})
});

const data = await response.json();
console.log(data);

Python

import requests

STEALTH_ENDPOINT = "https://production-sfo.browserless.io/stealth/bql?token=YOUR_API_TOKEN_HERE"

# Using Stealth (Recommended)
query = """
query {
goto(url: "https://example.com") {
status
}
html
}
"""

response = requests.post(
STEALTH_ENDPOINT,
json={"query": query},
headers={"Content-Type": "application/json"}
)

data = response.json()
print(data)

Combining with Other Features

Stealth routes work seamlessly with BrowserQL's other bot detection features:

With Residential Proxies

Combine stealth routes with residential proxies for maximum effectiveness:

const query = `
query {
goto(url: "https://example.com", options: {
proxy: {
type: residential,
country: "us"
}
}) {
status
}
html
}
`;

const response = await fetch(
'https://production-sfo.browserless.io/stealth/bql?token=YOUR_API_TOKEN_HERE',
{
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({ query })
}
);

With CAPTCHA Solving

Stealth routes automatically work with BrowserQL's built-in CAPTCHA solving:

const query = `
query {
goto(url: "https://example.com") {
status
}
solveCaptcha {
success
message
}
html
}
`;

const response = await fetch(
'https://production-sfo.browserless.io/stealth/bql?token=YOUR_API_TOKEN_HERE',
{
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({ query })
}
);

With Human-like Behavior

Enable human-like mouse movements and typing patterns:

const query = `
query {
goto(url: "https://example.com") {
status
}
type(selector: "#search", text: "example query", options: {
humanLike: true
})
click(selector: "#submit", options: {
humanLike: true
})
html
}
`;

const response = await fetch(
'https://production-sfo.browserless.io/stealth/bql?token=YOUR_API_TOKEN_HERE',
{
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({ query })
}
);

Additional Bot Detection Strategies

To further enhance your ability to bypass bot detection with BrowserQL:

  • Use Residential Proxies: Many sites monitor IP addresses and may block data-center IPs or enforce rate limits. BrowserQL supports built-in residential proxies with country selection and proxy reuse options. For setup details, see our Proxies documentation.
  • Enable Human-like Behavior: Configure mouse movements and typing patterns to appear more natural and human-like.
  • Block Ads: Using ad-blocking can make your sessions appear more like real users, as most humans use ad blockers.
  • Advanced Techniques: If standard stealth features aren't enough, contact us at support@browserless.io. We can assist with advanced solutions and specialized infrastructure available on our enterprise plans.

Next Steps

Ready to implement stealth routes in your BrowserQL automation? Explore these key areas:

If you need more help or want to discuss your specific use case, don't hesitate to reach out. We're here to help you succeed with even the toughest bot detection challenges.