Inicio / Casos de uso / Web scraping
Proxies gratuitos para web scraping
Hacer scraping desde una sola IP te bloquea rápido. Rotar una lista fresca y verificada reparte tus peticiones entre muchas IP — así se hace con una lista gratuita verificada cada hora.
Por qué rotar proxies
La mayoría de los sitios limitan o bloquean una IP que envía demasiadas peticiones. Un pool de proxies hace que cada petición (o cada lote) salga desde una dirección distinta, así ninguna IP dispara el límite. Con proxies gratuitos, cualquiera puede morir en minutos, por lo que el patrón fiable es rotar + reintentar sobre muchos proxies verificados, no depender de uno.
Rotar una lista verificada en Python
Este ejemplo carga la lista JSON (ya ordenada de más rápido a más lento) y rota por ella, reintentando con el siguiente proxy cuando uno falla.
import requests
LIST = "https://raw.githubusercontent.com/xyzs996/free-proxy-health-list/main/proxies/all/data.json"
# 1
pool = requests.get(LIST, timeout=15).json()
def scheme(p):
proto = p["protocol"]; host = p["proxy"]
return f"socks5h://{host}" if proto.startswith("socks5") else \
f"socks4://{host}" if proto.startswith("socks4") else f"http://{host}"
def fetch(url):
for p in pool: # 2
px = scheme(p)
try:
r = requests.get(url, proxies={"http": px, "https": px}, timeout=8)
if r.ok:
return r.text
except requests.RequestException:
continue # 3
raise RuntimeError("all proxies failed")
print(fetch("https://httpbin.org/ip")[:200])
Hazlo con educación
- Añade un retardo con jitter entre peticiones (p. ej. 1-5 s).
- Define un
User-Agentrealista. - Respeta el
robots.txty los términos del sitio. - Haz backoff (espera más) cuando veas
429 Too Many Requests. - Refresca la lista periódicamente — se reverifica cada hora.
Solo extrae datos que tengas permiso de usar. No uses proxies para eludir controles de acceso ni violar los términos de un sitio.
Preguntas frecuentes
¿Los proxies gratuitos sirven para web scraping?
Son ideales para scraping pequeño-mediano de páginas públicas, pruebas y prototipos. Los proxies individuales mueren rápido, así que rota y reintenta sobre muchos.
¿Cómo evito que bloqueen mi IP?
Rota por petición, añade retardos y jitter, usa un User-Agent realista, respeta robots.txt y haz backoff en 429s.
¿HTTP o SOCKS5 para scraping?
Ambos sirven. HTTP es lo más simple; SOCKS5 resuelve el DNS por el proxy.