#!/usr/bin/env python3
"""
Simple test of anti-bot strategy functionality
"""
import asyncio
import sys
import os
# Add the project root to Python path
sys.path.insert(0, os.getcwd())
async def test_antibot_strategies():
"""Test different anti-bot strategies"""
print("๐งช Testing Anti-Bot Strategies with AsyncWebCrawler")
print("=" * 60)
try:
from crawl4ai import AsyncWebCrawler, BrowserConfig, CrawlerRunConfig
from crawl4ai.browser_adapter import PlaywrightAdapter
# Test HTML content
test_html = """
This page tests different browser adapters.
User-Agent detection test
"""
# Save test HTML
with open('/tmp/antibot_test.html', 'w') as f:
f.write(test_html)
test_url = 'file:///tmp/antibot_test.html'
strategies = [
('default', 'Default Playwright'),
('stealth', 'Stealth Mode'),
]
for strategy, description in strategies:
print(f"\n๐ Testing: {description} (strategy: {strategy})")
print("-" * 40)
try:
# Import adapter based on strategy
if strategy == 'stealth':
try:
from crawl4ai import StealthAdapter
adapter = StealthAdapter()
print(f"โ
Using StealthAdapter")
except ImportError:
print(f"โ ๏ธ StealthAdapter not available, using PlaywrightAdapter")
adapter = PlaywrightAdapter()
else:
adapter = PlaywrightAdapter()
print(f"โ
Using PlaywrightAdapter")
# Configure browser
browser_config = BrowserConfig(
headless=True,
browser_type="chromium"
)
# Configure crawler
crawler_config = CrawlerRunConfig(
cache_mode="bypass"
)
# Run crawler
async with AsyncWebCrawler(
config=browser_config,
browser_adapter=adapter
) as crawler:
result = await crawler.arun(
url=test_url,
config=crawler_config
)
if result.success:
print(f"โ
Crawl successful")
print(f" ๐ Title: {result.metadata.get('title', 'N/A')}")
print(f" ๐ Content length: {len(result.markdown)} chars")
# Check if user agent info is in content
if 'User-Agent' in result.markdown or 'Browser:' in result.markdown:
print(f" ๐ User-agent info detected in content")
else:
print(f" โน๏ธ No user-agent info in content")
else:
print(f"โ Crawl failed: {result.error_message}")
except Exception as e:
print(f"โ Error testing {strategy}: {e}")
import traceback
traceback.print_exc()
print(f"\n๐ Anti-bot strategy testing completed!")
except Exception as e:
print(f"โ Setup error: {e}")
import traceback
traceback.print_exc()
if __name__ == "__main__":
asyncio.run(test_antibot_strategies())