Cada proyecto serio de desguace web eventualmente golpea el mismo muro: sus solicitudes comienzan a devolver CAPTCHAs, 403 errores o páginas vacías. Los sitios web se han vuelto notablemente buenos para detectar el tráfico automatizado, y la carrera de armamentos entre raspadores y sistemas antibotes es más intensa que nunca. Ya sea que esté recopilando datos de precios, monitoreando contenido de competidores o construyendo conjuntos de datos para la capacitación de AI, aprendiendo a sitios web sin ser bloqueado ya no es opcional — es fundamental para cualquier oleoducto de datos fiable.
Esta guía cubre las razones técnicas detrás de los bloques, la detección indica los sistemas antibot modernos buscar, y las estrategias probadas para mantener sus raspadores funcionando sin problemas. Incluimos ejemplos de código de trabajo utilizando proxies residenciales mostrar cómo estos conceptos se traducen en implementaciones listas para la producción.
Por qué los sitios web bloquean los rascacielos
Antes de resolver el problema, ayuda a entender en qué se enfrenta. Los sitios web implementan medidas antibot por varias razones legítimas:
- Protección de la infraestructura — El raspado agresivo puede abrumar a los servidores, degradar el rendimiento para los usuarios reales, e inflar los costos de alojamiento.
- Protección del contenido — Los editores, los sitios de comercio electrónico y los proveedores de datos quieren evitar que los competidores copien sus datos a escala.
- Seguridad — Los patrones de tráfico automatizados se superponen con relleno credencial, ataques DDoS y análisis de vulnerabilidad.
- Cumplimiento normativo — Los sitios que manejan datos personales pueden restringir el acceso automatizado para cumplir con las normas de privacidad.
Los sitios web modernos dependen de servicios especializados antibots como Cloudflare Bot Management, Akamai Bot Manager, PerimeterX y DataDome. Estos servicios analizan el tráfico en tiempo real utilizando una combinación de señales, y comparten inteligencia a través de sus redes, lo que significa que un patrón marcado en un sitio puede desencadenar bloques a través de miles de otros.
Signales de detección que te bloquean
Los sistemas antibots rara vez dependen de un solo indicador. Ellos construyen una puntuación de riesgo de múltiples señales y bloquean solicitudes que superan un umbral. Aquí están los vectores de detección clave:
IP Address Reputation
Esta es la señal más fundamental. Los rangos IP del centro de datos están bien documentados y tienen niveles de riesgo inherentemente mayores. Si sus solicitudes se originan de AWS, Google Cloud o cualquier proveedor de alojamiento conocido, muchos sistemas antibots los desafiarán o bloquearán inmediatamente. Incluso con IP residenciales, enviar demasiadas solicitudes de una sola dirección conseguirá que se insignifique. Las bases de datos de reputación IP se actualizan en tiempo real, y un IP quemado puede permanecer en la lista negra durante semanas.
Tasa de solicitud y análisis del patrón
Los humanos no solicitan 50 páginas por segundo con intervalos perfectamente uniformes. Frecuencia de solicitud de sistemas antibots, patrones de tiempo y flujo de navegación. Raspado que sigue un camino perfectamente secuencial a través de resultados paginados —con retrasos idénticos entre solicitudes— se ve mecánico incluso si la tasa es conservadora.
HTTP Fingerprinting
Cada cliente HTTP tiene una huella dactilar distintiva basada en la combinación de encabezados que envía: el orden de los encabezados, características TLS Handhake (JA3/JA4 huellas dactilares), marcos de configuración HTTP/2 y valores de encabezado. Un pitón requests biblioteca tiene una huella completamente diferente que Chrome. Los sistemas antibot mantienen bases de datos de huellas digitales conocidas del navegador y marcan cualquier cosa que no coincida.
Retos de huella de navegador y JavaScript
Los sistemas avanzados antibots sirven desafíos JavaScript que inspeccionan el entorno del navegador: renderización de telas, capacidades WebGL, fuentes instaladas, resolución de pantalla, zona horaria, preferencias de lenguaje y cientos de otras señales. Los navegadores sin cabeza como Puppeteer y Playwright se pueden detectar a través de diferencias sutiles — plugins de navegador perdidos, descriptores de propiedades incorrectas en objetos navegantes, o la ausencia de comportamientos de renderización esperados.
Análisis conductual
Algunos sistemas rastrean los movimientos del ratón, los patrones de desplazamiento y el comportamiento del clic. Una sesión que navega directamente a páginas cargadas de datos sin visitar la página principal primero, o que nunca mueve el ratón, señaliza automatización.
| Signal de detección | Nivel de riesgo | Mitigation Dificultad | Defensa primaria |
|---|---|---|---|
| Gama IP del centro de datos | Crítica | Fácil | Use proxies residenciales |
| Tasa de solicitud elevada | Alto | Fácil | Tasa límite + retrasos aleatorios |
| Cabeceras desaparecidas o incorrectas | Alto | Mediana | Perfiles de cabecera realistas |
| Desigualdad de las huellas dactilares TLS | Alto | Duro | Bibliotecas de análisis de huellas dactilares TLS |
| Error de desafío de JavaScript | Crítica | Duro | Real browser (Playwright/Puppeteer) |
| anomalías conductuales | Mediana | Duro | simulación de interacción similar a la humana |
| Galletas / anomalías de sesión | Mediana | Mediana | Gestión adecuada del período de sesiones |
Estrategias para evitar que se bloqueen
1. Use Proxies Residenciales para la rotación IP
La única defensa más efectiva contra el bloqueo basado en IP está pudrindo sus solicitudes a través de proxies residenciales. Los IPs residentes pertenecen a los ISP reales y tienen la misma reputación que las conexiones regulares de Internet doméstico. Los sistemas antibot no pueden bloquear las zonas residenciales sin afectar a los usuarios legítimos.
La rotación proxy efectiva significa asignar un IP diferente a cada solicitud o lote pequeño de solicitudes. Para el raspado dependiente de sesión (donde usted necesita mantener el estado de inicio de sesión o navegar flujos de varias páginas), utilizar sesiones pegajosas que mantienen el mismo IP durante una duración definida antes de girar.
ProxyHat proporciona rotación automática con control de sesión configurable. Puede apuntar IPs desde países, estados o ciudades específicos para acceder al contenido georrestricto manteniendo los puntajes de confianza de grado residencial.
2. HTTP realista artesanal Headers
Los encabezados por defecto de las bibliotecas de chatarra son un regalo muerto. Una solicitud de Python requests biblioteca envía User-Agent: python-requests/2.31.0 - que inmediatamente lo marca como automatizado. Construir perfiles de encabezado que coincidan exactamente con los navegadores reales:
- Establecer una corriente, completa
User-Agentcadena que coincide con una versión real del navegador - Incluido
Accept,Accept-Language,Accept-Encoding, ySec-CH-UAcabezales - Coincide con la orden del encabezado al navegador que está impersonando
- Girar entre múltiples perfiles del navegador para evitar una sola huella
- Incluir un plausible
Refererheader (por ejemplo, una página de resultados del motor de búsqueda)
3. Implementar la limitación de tarifas inteligentes
Las demoras uniformes son casi tan sospechosas como ninguna demora. Implementar retrasos aleatorizados que sigan una distribución realista:
- Retraso básico de 2-5 segundos entre solicitudes
- Añadir al azar de más o menos 30-50%
- Insertar pausas más largas (15-30 segundos) cada 20-50 solicitudes
- Reducir el concurrencia por dominio — 2-3 solicitudes paralelas máximo
- Implementar retroceso exponencial cuando reciba señales límite de velocidad (429 códigos de estado)
4. Gestionar sesiones y cookies correctamente
Muchos sitios web asignan cookies de seguimiento en la primera visita y las esperan en solicitudes posteriores. Un rascador que nunca envía cookies, o que envía cookies frescas en cada solicitud, activa la detección de anomalías. Mantenga un frasco de cookies por sesión y lleve cookies a través de solicitudes dentro de una sesión de navegación lógica.
5. Maneja el contenido de referencia de JavaScript
Para sitios que requieren ejecución JavaScript, utilice un motor de navegador real a través de Playwright o Puppeteer. Pero ejecutar navegadores sin cabeza sin precauciones se detecta fácilmente. Los pasos clave de endurecimiento incluyen:
- Uso
playwright-extraopuppeteer-extracon plugins de sigilo - Establezca un tamaño de mirador realista (no el valor predeterminado 800x600)
- Activar WebGL e inyectar cadenas de renderizador GPU consistentes
- Establecer la zona horaria y local para que coincida con la ubicación geográfica de su proxy
- Agregar movimientos de ratón aleatorios y acciones de desplazamiento antes de extraer datos
6. Respetar robots.txt e implementar Backoff
Si bien los robots.txt no son jurídicamente vinculantes en todas las jurisdicciones, respetarlo demuestra buena fe. Más prácticamente, los sitios que te ven ignorando robots.txt son más propensos a implementar el bloqueo agresivo. Siempre implemente el retroceso automático cuando reciba 429 (Too Many Request) o 503 (Service Invailable) respuestas: estas son señales explícitas para disminuir.
Ejemplos de Código: Raspado con ProxyHat Proxies Residenciales
Los siguientes ejemplos demuestran cómo configurar la rotación de proxy residencial con encabezados realistas. Cada ejemplo utiliza el SDK ProxyHat para el idioma respectivo. Por completo Documentación de API, vea los docs ProxyHat.
Python Ejemplo
Instala el SDK: pip install proxyhat (G)GitHub)
import time
import random
from proxyhat import ProxyHatClient
client = ProxyHatClient(
api_key="your_api_key",
country="US",
session_type="rotating", # New IP per request
)
headers = {
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/131.0.0.0 Safari/537.36",
"Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8",
"Accept-Language": "en-US,en;q=0.9",
"Accept-Encoding": "gzip, deflate, br",
"Sec-CH-UA": '"Chromium";v="131", "Not_A Brand";v="24"',
"Sec-CH-UA-Mobile": "?0",
"Sec-CH-UA-Platform": '"Windows"',
}
urls = [
"https://example.com/page/1",
"https://example.com/page/2",
"https://example.com/page/3",
]
for url in urls:
response = client.get(url, headers=headers)
print(f"{response.status_code} - {url} via {response.proxy_ip}")
# Randomized delay: 2-5 seconds with jitter
delay = random.uniform(2.0, 5.0)
time.sleep(delay)
Node.js Ejemplo
Instala el SDK: npm install @proxyhat/sdk (G)GitHub)
const { ProxyHatClient } = require("@proxyhat/sdk");
const client = new ProxyHatClient({
apiKey: "your_api_key",
country: "US",
sessionType: "rotating",
});
const headers = {
"User-Agent":
"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/131.0.0.0 Safari/537.36",
Accept:
"text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8",
"Accept-Language": "en-US,en;q=0.9",
};
const urls = [
"https://example.com/page/1",
"https://example.com/page/2",
"https://example.com/page/3",
];
async function scrape() {
for (const url of urls) {
const response = await client.get(url, { headers });
console.log(`${response.status} - ${url} via ${response.proxyIp}`);
// Randomized delay between requests
const delay = 2000 + Math.random() * 3000;
await new Promise((r) => setTimeout(r, delay));
}
}
scrape();
Go Ejemplo
Instala el SDK: go get github.com/ProxyHatCom/go-sdk (G)GitHub)
package main
import (
"fmt"
"math/rand"
"time"
proxyhat "github.com/ProxyHatCom/go-sdk"
)
func main() {
client := proxyhat.NewClient(&proxyhat.Config{
APIKey: "your_api_key",
Country: "US",
SessionType: proxyhat.Rotating,
})
headers := map[string]string{
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/131.0.0.0 Safari/537.36",
"Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8",
"Accept-Language": "en-US,en;q=0.9",
}
urls := []string{
"https://example.com/page/1",
"https://example.com/page/2",
"https://example.com/page/3",
}
for _, url := range urls {
resp, err := client.Get(url, proxyhat.WithHeaders(headers))
if err != nil {
fmt.Printf("Error: %v\n", err)
continue
}
fmt.Printf("%d - %s via %s\n", resp.StatusCode, url, resp.ProxyIP)
// Randomized delay: 2-5 seconds
delay := time.Duration(2000+rand.Intn(3000)) * time.Millisecond
time.Sleep(delay)
}
}
Sesiones pegajosas para flujos multi-pago
Algunas tareas de desguace requieren mantener la misma dirección IP a través de múltiples solicitudes, por ejemplo, navegar por una lista de productos paginados, mantener una sesión registrada o completar una forma de varios pasos. ProxyHat admite sesiones pegajosas que mantienen la misma IP residencial para una duración configurable.
# Python: Sticky session example
from proxyhat import ProxyHatClient
client = ProxyHatClient(
api_key="your_api_key",
country="DE",
session_type="sticky",
session_ttl=300, # Same IP for 5 minutes
)
# All requests within the session use the same IP
response1 = client.get("https://example.com/login", headers=headers)
response2 = client.post("https://example.com/login", data=credentials, headers=headers)
response3 = client.get("https://example.com/dashboard", headers=headers)
print(f"Session IP: {response1.proxy_ip}") # Same IP for all three requests
Errores comunes que desencadenan bloques
Incluso desarrolladores experimentados hacen estos errores. Cada uno puede quemar a través de ancho de banda proxy y conseguir IPs insignia innecesariamente:
- Usando encabezados de biblioteca predeterminados - El
python-requestsLa cadena User-Agent está en cada bloqueador. Siempre configuras cabeceras personalizadas. - Ignorando las huellas dactilares TLS Tus cabeceras podrían decir "Crome" pero tu apretón de manos TLS dice "Python". Usar bibliotecas como
curl_cffiotls-clientque imitan las huellas del navegador real TLS. - Raspado demasiado rápido en el lanzamiento inicial - Empieza despacio. Ampliar las tarifas de solicitud gradualmente durante horas, no minutos.
- No manejar errores con gracia — Retrying blocked requests immediately with the same settings wastes bandwidth and confirms you are a bot. Implementar las sesiones de backoff y switch proxy en errores.
- Reutilizando IPs quemados — Si una solicitud devuelve una página CAPTCHA o bloque, esa IP está comprometida para ese objetivo. Gire a una nueva sesión inmediatamente.
- Ignorar la coherencia geográfica — Envío de solicitudes de una IP estadounidense
Accept-Language: jay una compensación temporal de +9 parece sospechoso. Coincide con los encabezados y la configuración del navegador de su proxy ubicación. - No monitorear las tasas de éxito — Sin rastrear su tasa de bloqueo, no se puede decir si su estrategia está funcionando. Inicie cada estado de respuesta y alerta sobre las caídas de la tasa de éxito.
Técnicas avanzadas para objetivos de alto valor
Fingerprint Randomization
Para sitios fuertemente protegidos, girar no sólo IPs sino perfiles enteros de huellas digitales del navegador. Cada sesión debe tener una combinación consistente de User-Agent, resolución de pantalla, lugar de tiempo, lenguaje y plataforma, y éstas deben coincidir con combinaciones realistas. Un agente de usuario de Windows con una cadena de plataforma Linux es una bandera roja obvia.
Solicitud de simulación de cadena
Los usuarios reales no saltan directamente a las páginas de productos. Llegan desde motores de búsqueda, navegan por páginas de categoría y siguen enlaces internos. Construya su rascador para simular rutas de navegación realistas: cargar la página principal, seguir enlaces a páginas de categoría, y luego acceder a los datos de destino. Esto genera un patrón de sesión creíble.
SERP Scraping Considerations
El raspado del motor de búsqueda tiene desafíos únicos porque Google, Bing y otros tienen una detección de bot particularmente agresiva. Los proxies residenciales son esenciales para la confianza Seguimiento de SERP, y debe distribuir solicitudes a través de múltiples ubicaciones geográficas para evitar los límites de velocidad de activación de cualquier región.
Elegir el tipo Proxy correcto
No todo trabajo de raspado requiere proxies residenciales. La elección correcta depende de las defensas de tu objetivo y de tu presupuesto. Vea nuestro comparación detallada de los tipos proxy para una inmersión profunda. Aquí hay una matriz de decisión rápida:
| Caso de uso | Tipo Proxy recomendado | Razón |
|---|---|---|
| Desguace web general | Rotación residencial | Mejor equilibrio de confianza y costo |
| Supervisión de los precios del comercio electrónico | Rotación residencial | Alta protección antibot en la mayoría de los minoristas |
| Seguimiento de SERP | Geoobjetivo residente | Los motores de búsqueda bloquean IPs centro de datos agresivamente |
| Redes sociales | Proxies móviles | Confianza más alta para plataformas que esperan tráfico móvil |
| Acceso a la API pública | Datacenter | Bajo riesgo anti-bot, opción más barata |
| Sitios de sneaker/ticket | Residencial pegajoso | Persistente en la sesión con confianza residencial |
Para la mayoría de los proyectos de desguace, los proxies giratorios residenciales ofrecen la mejor combinación de fiabilidad y rentabilidad. ProxyHat pricing se basa en el consumo de ancho de banda, por lo que sólo paga por la transferencia de datos exitosa.
Key Takeaways
- Los proxies residenciales son la base — Los IPs del centro de datos se bloquean inmediatamente en la mayoría de los sitios protegidos. Los IPs residenciales tienen confianza natural.
- Los encabezados importan tanto como IPs — Un IP residencial con encabezados por Python predeterminados todavía se bloquea. Construir perfiles completos y realistas.
- Aleatoriamente todo — Relés, combinaciones de encabezados, rutas de navegación. Los patrones predecibles son patrones detectables.
- Monitor y adaptación - Seguimiento de su tasa de éxito. Cuando los bloques aumentan, investigan y ajustan antes de quemar a través de su piscina proxy.
- Coincide con su huella — Cada señal debe contar una historia consistente: El agente de usuario, la huella TLS, la zona horaria, el idioma y la ubicación geográfica deben alinearse.
- Comienza lento, escala gradualmente — Comience con límites de tarifas conservadores y aumente sólo después de confirmar sus trabajos de configuración fiable.
- Use sesiones pegajosas para flujos estatales — Las secuencias de acceso y la navegación multipágina necesitan consistencia IP. Use sesiones pegajosas con TTLs adecuados.
Preguntas frecuentes
¿Cómo sé si mi raspador está siendo bloqueado?
Los signos comunes incluyen recibir códigos de estado HTTP 403 o 429, siendo redirigido a las páginas de CAPTCHA, obteniendo cuerpos de respuesta vacíos donde usted espera contenido HTML, o recibir contenido diferente a lo que usted ve en un navegador regular. Monitoree sus códigos de estado de respuesta y la longitud de contenido — una caída repentina en el tamaño de respuesta promedio a menudo indica bloques suaves donde el sitio devuelve una página de desafío en lugar del contenido real.
¿Son los proxies residenciales suficientes para evitar todos los bloques?
Los proxies residenciales eliminan el bloqueo basado en IP, que es el método de detección más común, pero no son una solución completa por su cuenta. Todavía necesita encabezados realistas, límite de tarifas adecuado y gestión de sesión. Piense en los proxies residenciales como la fundación — resuelven el problema más difícil (reputación IP), pero las otras capas de su pila de raspado también deben ser sólidas. Para los sitios más protegidos, combine proxies residenciales con la impersonación de huellas digitales del navegador utilizando herramientas como curl_cffi o Playwright configurado por robos.
¿Cuántas solicitudes por segundo puedo enviar sin ser bloqueado?
No hay respuesta universal porque depende de las defensas del sitio web objetivo. Como punto de partida conservador, limite a 1 solicitud cada 2-5 segundos por dominio con IPs giratorias. Para sitios menos protegidos, puede aumentar gradualmente a 5-10 solicitudes simultáneas. Para sitios fuertemente protegidos como Google o Amazon, permanezca bajo 1 petición por 3 segundos incluso con proxies residenciales. Siempre aumenta gradualmente y monitorea tu tasa de éxito, si baja por debajo del 95%, vas demasiado rápido.
¿Cuál es la diferencia entre las sesiones de proxy rotativas y pegajosas?
Las sesiones de rotación asignan una nueva dirección IP a cada solicitud, que es ideal para raspar páginas independientes donde ningún Estado necesita persistir entre solicitudes. Las sesiones pegajosas mantienen el mismo IP para una duración configurada (típicamente 1-30 minutos), que es necesario para flujos de inicio de sesión, navegación con paginas, o cualquier proceso de varios pasos donde el servidor rastrea su IP. Utilice las sesiones rotatorias por defecto y cambiar a pegajoso sólo cuando su caso de uso requiere específicamente continuidad de sesión.
¿La web es legal?
La legalidad de chatarra web varía según la jurisdicción, el tipo de datos que se recopilan y cómo se utiliza. En los Estados Unidos, los Laboratorios HiQ 2022 v. Linked En el fallo se estableció que la eliminación de datos públicos no viola la Ley de fraude y abuso informáticos. En la UE, el RGPD se aplica a datos personales independientemente de cómo se recopila. Como regla general: el desguace de datos públicos, los datos no personales para fines empresariales legítimos son ampliamente aceptados. Revisa siempre los Términos de Servicio de un sitio web, respeta robots.txt como cortesía, y consulta con el abogado para su caso de uso específico.






