Stealth Mode
Browse the web with reduced fingerprinting and bot-detection evasion.
Overview
Stealth Mode refers to Yukkai Browser's built-in ability to navigate and interact with websites while reducing the signals that anti-bot systems use to detect automated traffic. Because Yukkai Browser is powered by Apple's native WebKit engine — the same engine that drives Safari — it produces a genuine browser fingerprint out of the box, without requiring third-party patches or headless-browser workarounds.
Unlike traditional automation tools that rely on headless Chromium or Puppeteer (which are trivially detected by modern bot-protection services), Yukkai Browser runs as a real, visible WKWebView instance with a legitimate Safari User-Agent string, full JavaScript support, and native rendering. This makes its baseline fingerprint indistinguishable from a human using Safari on macOS.
On top of this natural advantage, Yukkai provides a suite of human-like interaction actions that add behavioural stealth — simulating organic mouse movements, variable typing speeds, and natural scroll patterns — so that your automated browsing sessions are far less likely to trigger CAPTCHAs, rate limits, or IP bans.
How it works
Stealth Mode is not a single toggle; it is the combined effect of several layers working together:
1. Native WebKit fingerprint
Yukkai Browser is built on WKWebView, Apple's native web view component. This means:
- Real Safari User-Agent — The browser identifies itself as genuine Safari, not as a headless or automation framework.
- Full JavaScript engine — Modern SPAs (React, Vue, Angular) render exactly as they would for a human visitor.
- Native canvas and WebGL rendering — Canvas fingerprinting queries return real, hardware-accelerated results consistent with a Mac.
- Standard TLS stack — Network requests use Apple's native networking stack, producing TLS fingerprints that match Safari, not Go or Node.js HTTP clients.
2. Human-like interaction actions
Three dedicated actions simulate human behaviour at the DOM-interaction level:
| Action | What it does | Why it helps |
|---|---|---|
human_click |
Moves the cursor to the element with natural easing, then clicks with a small random delay. | Many bot detectors monitor click coordinates, timing, and whether mousedown/mouseup events arrive in natural sequence. |
human_type |
Types text character by character with variable inter-key delays (40–120 ms range). | Form fillers that paste text instantly are flagged instantly; human typing has natural rhythm and occasional typos. |
human_scroll |
Scrolls the page with variable speed, direction changes, and pauses. | Bots scroll in fixed increments; humans scroll irregularly and sometimes pause to read. |
3. Session persistence
Yukkai can save and restore browser sessions (cookies, local storage) via the save_session and load_session actions. This means you can:
- Log in once as a human (handling CAPTCHAs, 2FA, passkeys yourself).
- Save that authenticated session.
- Reuse it in future automated tasks without re-triggering login-based bot detection.
4. Request interception
The start_interceptor action captures network requests (fetch/XHR) made by the page. This is useful for understanding what tracking endpoints a site calls, so you can identify fingerprinting scripts and data-collection APIs.
How to use it
Stealth Mode techniques are available through the Yukkai Browser tool. Here is how to activate each layer:
Basic stealth (just browse)
Simply navigating with Yukkai Browser already gives you a Safari-grade fingerprint. No special configuration is needed:
web_browse(action: "navigate", url: "https://example.com")
Human-like clicking
Instead of a regular click, use human_click for elements that may be monitored:
web_browse(action: "human_click", index: 5)
Human-like typing
Replace input_text with human_type when filling forms, search boxes, or login fields:
web_browse(action: "human_type", index: 4, text: "your search query")
Human-like scrolling
Use human_scroll instead of the standard scroll action:
web_browse(action: "human_scroll", direction: "down")
Save and reuse authenticated sessions
# Step 1: Open the browser visibly and log in yourself
web_browse(action: "show", url: "https://example.com/login")
# ... complete login, 2FA, CAPTCHA manually ...
# Step 2: Save the session
web_browse(action: "save_session", session_name: "my-account")
# Step 3: In a future task, restore it
web_browse(action: "load_session", session_name: "my-account")
Inspect tracking requests
# Start capturing network calls
web_browse(action: "start_interceptor", url_pattern: "*track*")
# ... navigate and interact ...
# Retrieve captured requests
web_browse(action: "get_intercepted", clear: true)
# Stop capturing
web_browse(action: "stop_interceptor")
Examples
Example 1: Search a site without triggering bot protection
# Navigate to a search-heavy site
web_browse(action: "navigate", url: "https://news-site.com")
# Type a search query like a human
web_browse(action: "human_type", index: 4, text: "AI regulation 2025")
# Click the search button naturally
web_browse(action: "human_click", index: 5)
# Scroll through results organically
web_browse(action: "human_scroll", direction: "down")
Example 2: Collect data from an infinite-scroll page
# Use scroll_and_collect with human-like scroll pauses
web_browse(
action: "scroll_and_collect",
selector: ".article-card",
max_items: 50,
scroll_pause: 2000,
extract_js: "el => ({ title: el.querySelector('h2').innerText, link: el.href })"
)
Example 3: Log in once, then automate
# First time: visible browser, manual login
web_browse(action: "show", url: "https://portal.example.com")
# User completes login + 2FA in the visible window
web_browse(action: "save_session", session_name: "portal-auth")
# Later automation runs: invisible, fast, authenticated
web_browse(action: "load_session", session_name: "portal-auth")
web_browse(action: "navigate", url: "https://portal.example.com/dashboard")
web_browse(action: "extract")
Tips
Do's
- Use
human_clickandhuman_typefor sensitive interactions. Standardclickandinput_textare fine for simple page reads, but login forms, search boxes, and rate-limited endpoints benefit from human-like timing. - Save sessions after manual logins. This avoids repeated CAPTCHA solving and reduces the number of authentication events that could flag your account.
- Add delays between actions. Bots operate in milliseconds; humans take seconds. Insert
web_browse(action: "wait", timeout: 2000)between steps on high-security sites. - Use
scroll_and_collectwith generousscroll_pause. A 1.5–3 second pause between scrolls mimics reading behaviour and reduces the chance of triggering lazy-load-based bot traps. - Monitor intercepted requests. Use
start_interceptorto learn which endpoints a site calls for fingerprinting. This helps you understand what data is being collected.
Don'ts
- Don't use Stealth Mode to bypass paywalls or terms of service. Yukkai's stealth features are designed for legitimate automation — research, data collection from public pages, and authenticated workflows where you have the right to access the content.
- Don't rely solely on stealth for high-security sites. Some sites (banking, ticketing) use behavioural analysis that goes beyond simple fingerprinting. For those, open the browser visibly (
show) and take manual control. - Don't share session files. Saved sessions contain authentication cookies. Treat them like passwords — they grant access to the accounts they represent.
- Don't set unrealistic
scroll_pausevalues. A 0 ms pause defeats the purpose of human-like scrolling. Keep it above 1000 ms for believable behaviour.
When stealth matters most
| Scenario | Stealth benefit |
|---|---|
| Research scraping on news / blog sites | Avoids soft IP bans and CAPTCHA walls |
| Social media monitoring | Reduces the chance of account flagging for automation |
| Price comparison and e-commerce | Prevents being served different (bot-targeted) content |
| SEO and ranking checks | Ensures you see the same results a human would |
| Authenticated portal automation | Session reuse avoids repeated 2FA prompts |
Limitations
Stealth Mode significantly reduces detection risk but does not make you invisible. Sophisticated bot-protection services (Cloudflare Turnstile, DataDome, PerimeterX) may still detect automation through:
- Deep behavioural analysis (mouse trajectory entropy, click distribution).
- TLS JA3/JA4 fingerprinting (though WebKit's native stack is harder to distinguish).
- IP reputation (datacenter IPs are flagged regardless of browser fingerprint).