Autonomous Trust Warming
Phase 4 β Background service that warms browser profiles on high-authority sites with human-like interactions while the agent is idle, building organic browsing history to defeat bot detection.
Why Trust Warming?
Bot detection systems like Cloudflare, DataDome, and PerimeterX donβt just check fingerprints β they check behavioral signals. A browser profile with zero history that suddenly navigates to a target site is suspicious. Trust warming builds a realistic browsing history before the agent needs it.
State Machine
STOPPED βββ IDLE βββ WARMING βββ PAUSING βββ IDLE
β² β
βββββββββββββββββββββββββββββββββββββββββββββ- STOPPED β service not running
- IDLE β waiting for the next warm cycle (agent may be busy)
- WARMING β actively visiting a site with human-like interactions
- PAUSING β cooldown between visits
Human-Like Interactions
The warming service performs realistic browsing sequences:
-
Bezier mouse trajectories β JS port of the C++ algorithm from
MouseTrajectories.hpp. Curved paths with slight overshoot and correction, matching human motor patterns. -
Gaussian-randomized timing β dwell times, scroll pauses, and hover durations follow normal distributions, not uniform random.
-
Interaction sequences β Each visit includes a mix of:
- Page scrolling (variable speed and distance)
- Hovering over links and buttons
- Occasional clicks on navigation elements
- Natural dwell time before leaving
Default Sites
Sites are weighted and rate-limited to prevent over-visiting:
| Site | Weight | Purpose |
|---|---|---|
| High | Search engine trust | |
| YouTube | High | Media engagement |
| Wikipedia | Medium | Reference browsing |
| Medium | Social browsing | |
| Amazon | Medium | E-commerce trust |
| Hacker News | Low | Tech browsing |
| GitHub | Low | Developer profile |
Protocol
// Start warming
{
"method": "Browser.startTrustWarming",
"params": {
"browserContextId": "ctx-1",
"sites": ["google.com", "youtube.com"],
"interactionIntensity": 0.7,
"cooldownMinutes": 5
}
}
// Check status
{"method": "Browser.getTrustWarmingStatus"}
// β {"state": "WARMING", "sitesWarmed": 3, "currentSite": "youtube.com"}
// Notify service that agent is busy (pauses warming)
{"method": "Browser.notifyTrustWarmingBusy"}
// Notify service that agent is idle (resumes warming)
{"method": "Browser.notifyTrustWarmingIdle"}Configuration
Trust warming is opt-in (disabled by default) since aggressive warming can itself trigger bot detection:
vulpineos.trustwarm.enabled = false // defaultFiles
additions/juggler/TrustWarmService.jsβ core service module (~350 lines)additions/juggler/protocol/Protocol.jsβ 5 newBrowser.*methods + eventadditions/juggler/protocol/BrowserHandler.jsβ handler wiringsettings/camoufox.cfgβvulpineos.trustwarm.enabledpreference