Skip to main content

Overview

Websites block automated traffic by examining browser fingerprints, detecting automation frameworks, and checking IP reputation. Intuned provides four features to help your automations avoid detection: proxies, headful mode, stealth mode, and CAPTCHA solving.
Before you start:
  • Stealth mode and CAPTCHA solving are experimental—let us know if you encounter issues
  • Check the site’s terms of service and robots.txt to ensure responsible automation
  • Stealth mode and CAPTCHA solving only work on the Intuned platform, not with local intuned run commands
Want to understand how bot detection systems work under the hood? Check out our blog post on bot detection.

Which features do you need?

Start simple and add features as needed. Each addresses a different blocking mechanism:
If you’re seeing…Enable…
IP-based blocking, rate limitingProxies
Headless browser detectionHeadful mode
Fingerprint/automation detectionStealth mode + Headful mode
CAPTCHAs blocking your flowCAPTCHA solving (requires Headful)
For heavily protected sites, combine all four. For lighter protection, start with proxies or headful mode alone.

Proxies

Proxies route traffic through different IP addresses, making your requests appear to come from different locations. Use them to bypass IP-based blocking and rate limiting.

Proxy types

TypeDescriptionCostBest for
ResidentialIPs from real ISP usersPer GB (expensive)Heavily protected sites that block datacenter IPs
DatacenterIPs from cloud data centersPer IP/monthGeneral scraping where IP rotation is sufficient
ISPDatacenter-hosted but ISP-registeredPer IP/monthBalance of reliability and cost
Residential proxies bill per GB of traffic. Monitor usage carefully to avoid unexpected charges.

Configure proxies

Configure proxies at three levels: Run level—Use the proxy parameter when creating a Run:
const run = await intuned.runs.create({
  projectId: "project-id",
  api: "scrape-data",
  proxy: {
    host: "proxy.example.com",
    port: 8080,
    username: "user",     // Optional
    password: "pass",     // Optional
  },
});
AuthSession level—Use for authenticated sessions that need consistent IPs:
const authSession = await intuned.authSessions.create({
  projectId: "project-id",
  credentials: { username: "user", password: "pass" },
  proxy: {
    host: "proxy.example.com",
    port: 8080,
  },
});
Job level—Use the proxy field in job settings. See Job Settings.
Configure proxies at the AuthSession level when you need consistent IP addresses to maintain login state.

Best practices

  • Test without proxies first—Use datacenter proxies or your own IP before purchasing residential proxies
  • Use residential selectively—Only for sites that actively block datacenter IPs. Monitor traffic usage due to per-GB billing
  • Rotate proxies—Distribute requests across multiple proxies to avoid rate limiting
  • Test before committing—Some proxies are slow or unreliable. Verify performance with your target sites before production use
  • Combine with other features—Proxies work best alongside stealth mode and headful mode

Headful mode

Headful mode runs the browser with a visible GUI instead of headless. This produces a more realistic browser fingerprint and avoids headless-specific detection.

Enable headful mode

{
  "headful": true
}
Headful mode is required for CAPTCHA solving and recommended with stealth mode.

Stealth mode

Stealth mode patches automation framework leaks and improves browser fingerprint spoofing, making your browser less likely to be flagged as a bot.

Requirements

Enable stealth mode

{
  "stealthMode": {
    "enabled": true
  }
}
For best results, combine with headful mode:
{
  "headful": true,
  "stealthMode": {
    "enabled": true
  }
}

CAPTCHA solving

When you enable CAPTCHA solving, Intuned automatically detects and solves CAPTCHAs during your automation.
CAPTCHA solving can take time. The duration depends on the CAPTCHA type and the difficulty settings configured on the target website. Simple checkbox challenges may resolve in seconds, while more complex challenges can take longer.

Requirements

  • Headful mode required—Set headful to true
  • Stealth mode recommended—Set stealthMode.enabled to true
  • Intuned IDE or deployed project—Doesn’t work with local CLI execution

Supported CAPTCHA types

  • Google reCAPTCHA v2 (checkbox and invisible)
  • hCaptcha
  • AWS CAPTCHA
  • Cloudflare managed challenge
  • GeeTest
  • Lemin
  • Custom image CAPTCHAs (with selectors)
  • Text CAPTCHAs (with selectors)

Configure CAPTCHA solving

{
  "headful": true,
  "stealthMode": {
    "enabled": true
  },
  "captchaSolving": {
    "cloudflare": {
      "enabled": true
    },
    "settings": {
      "autoSolve": true,
      "solveDelay": 2000,
      "maxRetries": 6,
      "timeout": 30000
    }
  }
}

Settings reference

SettingDefaultDescription
autoSolvetrueAutomatically solve detected CAPTCHAs
solveDelay2000Milliseconds to wait before solving (more human-like)
maxRetries3Number of solve attempts before failing
timeout30000Maximum time (ms) to wait for solve
Increase solveDelay if websites detect bot-like behavior. A small delay makes automation appear more human.

Helper methods

Use helper methods to wait for CAPTCHA resolution before proceeding:
from intuned_runtime.captcha import wait_for_captcha_solve

# As decorator
@wait_for_captcha_solve(timeout=120000, wait_for_network_settled=False)
async def go_to(page: Page, url: str):
    await page.goto(url=url)

# As function
async def main(page: Page):
    await page.goto(url="https://example.com")
    await wait_for_captcha_solve(page, timeout=120000, wait_for_network_settled=False)

Important considerations

  • Selector accuracy—For custom and text CAPTCHAs, test selectors in browser console before deploying
  • Timeout settings—Complex CAPTCHAs need higher timeouts
  • Service limits—Some sites limit CAPTCHA attempts. Monitor solve rates to avoid additional blocks

Best practices

  • Start simple: Enable features incrementally. First test your automation without protection, then add features as needed.
  • Monitor effectiveness: Track success rates with different feature combinations to determine which features your use case requires.
  • Keep dependencies updated: Keep Playwright updated. Stealth mode works better with newer versions.
  • Use residential proxies sparingly: Due to traffic-based billing, reserve residential proxies for websites that definitely block datacenter proxies.
  • Test in production-like conditions: Enable all protection features during testing to catch issues before they reach production.
  • Combine with other strategies: These features work best alongside other automation best practices like rate limiting and respectful request patterns.

Limitations

Stealth mode

  • Platform only—doesn’t work with local CLI
  • Requires Playwright v1.55+
  • New detection methods may emerge that stealth mode doesn’t handle yet
  • In rare cases, JavaScript execution changes may cause compatibility issues

CAPTCHA solving

  • Platform only—doesn’t work with local CLI
  • Must complete within configured timeout
  • Some CAPTCHA types aren’t supported—contact us if you encounter one

Proxies

  • Residential proxies have traffic-based billing
  • Some sites block known proxy IP ranges
  • Proxy speed varies by provider

FAQs

No. Each addresses different blocking mechanisms. Start with the simplest configuration and add features as needed. For most protected sites, headful + stealth mode is a good starting point.
These features require the full Intuned platform environment to properly modify browser behavior. Use Intuned IDE to develop and test stealth-related features.
Stealth mode is included in Intuned platform plans at no additional cost. See Plans and billing for details.
Websites vary widely in what they check. Some:
  • Use novel CAPTCHA types not yet supported
  • Check for multiple factors beyond fingerprint and IP
  • Have aggressive rate limiting
  • Require additional headers or request patterns
Try combining stealth mode with proxies and headful mode. If you’re still blocked, you might need to adjust your request patterns, add delays, or use a different proxy provider. We’re continuously improving stealth mode to address new detection methods. Let us know if you encounter issues.
No significant impact. Startup time may increase slightly, but runtime performance is comparable to standard Playwright.
Yes, but it’s less effective. Many detection methods specifically target headless browsers. Headful + stealth mode together provide the best results.
Start with datacenter proxies—they’re cheaper. Only upgrade to residential if your target site actively blocks datacenter IPs. Monitor residential usage carefully due to per-GB billing.