Técnicas de Scraping Sigiloso
Evada los sistemas de detección anti-bots con huellas digitales avanzadas del navegador, rotación de IP, suplantación de user-agent y estrategias de gestión de CAPTCHA.
Respete siempre robots.txt y los términos de servicio del sitio web. Use las técnicas de sigilo de forma responsable y solo con fines legítimos. Violar los términos de servicio o hacer scraping de contenido protegido puede tener consecuencias legales.
1. Uso de la herramienta stealth_mode
La herramienta stealth_mode aplica automáticamente técnicas anti-detección que incluyen la aleatorización de huellas digitales, la suplantación de WebRTC y el ruido de canvas.
Úselo para: sitios con poca protección, scrapers sencillos
Úselo para: la mayoría de sitios comerciales, protección moderada
Úselo para: sitios con alta protección, Cloudflare, Akamai
Scraping sigiloso básico
3 credits
curl -X POST https://crawlforge.dev/api/v1/tools/stealth_mode \
-H "X-API-Key: cf_test_YOUR_KEY" \
-H "Content-Type: application/json" \
-d '{
"url": "https://protected-site.com",
"level": "medium",
"randomizeFingerprint": true
}'Avanzado: sigilo + proxy + encabezados personalizados
const response = await fetch('https://crawlforge.dev/api/v1/tools/stealth_mode', {
method: 'POST',
headers: {
'X-API-Key': process.env.CRAWLFORGE_API_KEY!,
'Content-Type': 'application/json',
},
body: JSON.stringify({
url: 'https://highly-protected-site.com',
level: 'advanced',
randomizeFingerprint: true,
proxy: {
server: 'http://proxy.example.com:8080',
username: 'proxy_user',
password: 'proxy_pass'
},
customHeaders: {
'Accept-Language': 'en-US,en;q=0.9',
'Accept-Encoding': 'gzip, deflate, br',
'Referer': 'https://google.com',
'Sec-Fetch-Dest': 'document',
'Sec-Fetch-Mode': 'navigate',
'Sec-Fetch-Site': 'none'
},
geolocation: {
latitude: 40.7128,
longitude: -74.0060,
accuracy: 100
},
timezone: 'America/New_York',
locale: 'en-US'
}),
});
const data = await response.json();
console.log('Successfully bypassed protection');2. Huellas digitales del navegador
Los sistemas anti-bots usan las huellas digitales del navegador para detectar navegadores automatizados. Aleatorice las huellas digitales para evitar la detección.
La herramienta stealth_mode aleatoriza automáticamente todas estas señales de huellas digitales, haciendo que cada solicitud parezca provenir de un navegador real único.
3. Rotación de IP y proxies
Use proxies rotativos para distribuir las solicitudes entre distintas direcciones IP.
- Proxies de centro de datos
- ✅ Rápidos (latencia de 50-150 ms)
- ✅ Económicos ($1-5/GB)
- ❌ Fáciles de detectar
- ❌ Mayor tasa de bloqueo
- Ideales para: sitios con poca protección, scraping de alto volumen
- Proxies residenciales (recomendados)
- ✅ IP de usuarios reales (difíciles de detectar)
- ✅ Baja tasa de bloqueo
- ⚠️ Más lentos (latencia de 200-500 ms)
- ⚠️ Costosos ($5-15/GB)
- Ideales para: sitios con alta protección, comercio electrónico, redes sociales
- Proxies móviles
- ✅ Mayor tasa de éxito (IP 4G/5G)
- ✅ Casi indetectables
- ❌ Muy costosos ($50-100/GB)
- ❌ Los más lentos (latencia de 300-1000 ms)
- Ideales para: sigilo máximo, objetivos premium
Estrategia de rotación de IP
// Rotating proxy pool
const proxyPool = [
'http://user:pass@proxy1.example.com:8080',
'http://user:pass@proxy2.example.com:8080',
'http://user:pass@proxy3.example.com:8080',
'http://user:pass@proxy4.example.com:8080',
'http://user:pass@proxy5.example.com:8080'
];
let currentProxyIndex = 0;
function getNextProxy() {
const proxy = proxyPool[currentProxyIndex];
currentProxyIndex = (currentProxyIndex + 1) % proxyPool.length;
return proxy;
}
// Scrape with rotating proxies
async function scrapeWithRotatingProxy(url: string) {
const proxy = getNextProxy();
const response = await fetch('https://crawlforge.dev/api/v1/tools/stealth_mode', {
method: 'POST',
headers: {
'X-API-Key': process.env.CRAWLFORGE_API_KEY!,
'Content-Type': 'application/json',
},
body: JSON.stringify({
url,
level: 'medium',
proxy: { server: proxy }
}),
});
return await response.json();
}
// Scrape multiple URLs with different proxies
const urls = ['https://example.com/1', 'https://example.com/2', 'https://example.com/3'];
const results = await Promise.all(urls.map(scrapeWithRotatingProxy));4. Gestión de CAPTCHA
Estrategias para lidiar con los desafíos de CAPTCHA.
- Evite que se activen los CAPTCHA
- Use el modo sigiloso, rote las IP, respete los límites de tasa y añada retrasos aleatorios (2-5 segundos entre solicitudes)
- ✅ La mejor estrategia: prevenir es más fácil que resolver
- Use servicios de resolución de CAPTCHA
- Integre con 2Captcha, Anti-Captcha o DeathByCaptcha ($1-3 por cada 1,000 CAPTCHA)
- ⚠️ Añade costo y latencia (10-30 segundos)
- Busque fuentes de datos alternativas
- Busque APIs, fuentes RSS, mapas de sitio o sitios asociados sin CAPTCHA
- ✅ La solución más fiable a largo plazo
- Intervención manual
- Ponga los desafíos de CAPTCHA en una cola para que los resuelvan operadores humanos
- ❌ Solo viable para scraping de bajo volumen
Si se encuentra con CAPTCHA de forma constante, está haciendo scraping de manera demasiado agresiva. Reduzca el ritmo, rote las IP con mayor frecuencia y use niveles de sigilo más altos antes de recurrir a servicios de resolución de CAPTCHA.
Resumen de mejores prácticas
- Comience siempre con el nivel "medium" de
stealth_mode - Use proxies residenciales para sitios con alta protección
- Rote los proxies cada 10-20 solicitudes
- Añada retrasos aleatorios entre solicitudes (2-5 segundos)
- Haga coincidir la geolocalización con la ubicación del proxy (use la herramienta
localization) - Respete robots.txt y los límites de tasa
- Supervise las tasas de bloqueo y ajuste la estrategia en consecuencia
Próximos pasos
Continúe aprendiendo con más guías