Evadr
Anti-bot detection and bypass
2 min read
Evadr detects and bypasses anti-bot systems using a 5-tier escalation strategy.
fetch
result = client.evadr.fetch("https://example.com", max_tier=5)
print(result.html, result.tier_used, result.artifact_id)
const result = await client.evadr.fetch('https://example.com', { maxTier: 5 });
console.log(result.html, result.artifactId);
result, _ := client.Evadr.Fetch("https://example.com", nil)
fmt.Println(result.Html, result.ArtifactId)
FetchResult result = client.evadr().fetch("https://example.com");
System.out.println(result.html() + " " + result.artifactId());
fetchStream (SSE)
for event in client.evadr.fetch_stream("https://example.com"):
print(event.type, event.tier)
for await (const event of client.evadr.fetchStream('https://example.com')) {
console.log(event.type, event.tier);
}
analyze
result = client.evadr.analyze("https://example.com")
print(result.blocked, result.vendor, result.confidence)
5-Tier escalation
| Tier | Method | Use case | |------|--------|----------| | 1 | Plain HTTP | No protection | | 2 | HTTP + browser headers | Basic bot detection | | 3 | Headless Chrome (CDP) | JS challenges | | 4 | Headless Chrome + proxy | IP-based blocking | | 5 | Headed Chrome (Xvfb) | TLS fingerprint detection |
Response fields
| Field | Type | Description | |-------|------|-------------| | success | boolean | Whether fetch succeeded | | url | string | Resolved URL | | status_code | integer | HTTP status | | tier_used | integer | Tier that succeeded (1-5) | | html | string | Page HTML | | vendor_detected | string or null | Anti-bot vendor | | anti_bot_bypassed | boolean | Bypass needed and succeeded | | artifact_id | string | ID for reuse in other modules |