Consigue el enlace de la lista
Tras el pago, el panel muestra un enlace del tipo get.advanced.name/<ID>. Devuelve líneas ip:port, una por dirección. HTTP y SOCKS5 van por el mismo puerto.
Un scraper necesita muchas direcciones, rotación rápida y ningún contador de tráfico. Un paquete de Advanced.name te da de 5.000 a 50.000 direcciones IPv4 en un solo enlace, hasta 5.000 hilos en paralelo y un pool en el que cada día cambia más o menos un tercio de las direcciones.
Cuatro cosas deciden si un rastreo termina o muere en el primer captcha.
Direcciones de sobra para que una IP no pise el sitio dos veces por minuto
De 5.000 (paquete n.º 1) a 50.000 (paquete n.º 6) direcciones en una sola lista
Pool fresco: las IP bloqueadas deben salir antes de que llegues a ellas
Cerca de un tercio del pool rota cada 24 horas y la lista se actualiza cada 10 minutos
Conexiones en paralelo para todo el rastreo
De 500 a 5.000 hilos según el paquete, todos los protocolos en un mismo puerto
Nadie cuenta gigabytes
Sin límite de tráfico en ningún paquete ilimitado: pagas el paquete y los hilos
Región, paquete, plazo. El precio es por una IP autorizada; cada IP extra suma un 10 %.
Tras el pago, el panel muestra un enlace del tipo get.advanced.name/<ID>. Devuelve líneas ip:port, una por dirección. HTTP y SOCKS5 van por el mismo puerto.
La lista solo se abre desde las IP que añadas en el panel. Nada de usuario y contraseña en la configuración del scraper: la dirección es la llave.
Carga la lista, recórrela en círculo y, si una petición falla, repite la URL con el siguiente proxy. El script de abajo hace justo eso con la biblioteca estándar.
Apunta CSV_URL a la exportación de tu panel, fija COUNTRY y MIN_SPEED y pon las URL de destino en urls.txt. El script se queda solo con el país que necesitas, descarga cada URL por el siguiente proxy y reintenta con otra dirección cuando una falla. Revisa antes el pool con el Socks List Processor.
#!/usr/bin/env python3
"""Multithreaded scraper for Advanced.name proxies.
Reads the CSV proxy export, keeps the country and speed you need, then fetches a
list of target URLs through rotating proxies with automatic retries. Standard
library only, no pip. Edit the CONFIG block and run: python3 scrape.py
"""
# ================================ CONFIG ====================================
CSV_URL = "https://get.advanced.name/YOUR_LIST_ID.csv" # CSV export link from your dashboard
COUNTRY = "DE" # ISO 3166-1 alpha-2 (e.g. DE, NL, US), or "" for the whole pool
MIN_SPEED = 3 # keep proxies with speed >= this value (higher is better)
THREADS = 50 # parallel requests
TIMEOUT = 15 # seconds per request
RETRIES = 3 # proxies to try before a URL is marked failed
URLS_FILE = "urls.txt" # one target URL per line
OUT_DIR = "pages" # fetched HTML is written here as 1.html, 2.html, ...
# ============================================================================
import csv
import io
import itertools
import os
import sys
import threading
import urllib.request
from concurrent.futures import ThreadPoolExecutor, as_completed
# CSV columns from the dashboard export, ';' separated:
# ip ; port ; country ; speed ; uptime ; exit_ip
COL_IP, COL_PORT, COL_COUNTRY, COL_SPEED, COL_UPTIME = 0, 1, 2, 3, 4
UA = "Mozilla/5.0 (compatible; scraper/1.0)"
def load_proxies():
"""Download the CSV list, keep the wanted country and speed, fastest first."""
raw = urllib.request.urlopen(CSV_URL, timeout=30).read().decode("utf-8", "replace")
pool = []
for row in csv.reader(io.StringIO(raw), delimiter=";"):
if len(row) <= COL_SPEED or not row[COL_PORT].strip().isdigit():
continue
country = row[COL_COUNTRY].strip().upper()
speed = int(row[COL_SPEED] or 0)
if COUNTRY and country != COUNTRY.upper():
continue
if speed < MIN_SPEED:
continue
pool.append((row[COL_IP].strip() + ":" + row[COL_PORT].strip(), speed))
pool.sort(key=lambda item: -item[1])
return [addr for addr, _ in pool]
def opener_for(proxy):
handler = urllib.request.ProxyHandler({"http": "http://" + proxy, "https": "http://" + proxy})
return urllib.request.build_opener(handler)
def main():
proxies = load_proxies()
if not proxies:
sys.exit("No proxies match COUNTRY=%r and MIN_SPEED=%d." % (COUNTRY, MIN_SPEED))
with open(URLS_FILE, encoding="utf-8") as fh:
urls = [u for u in map(str.strip, fh) if u and not u.startswith("#")]
os.makedirs(OUT_DIR, exist_ok=True)
print("proxies: %d (%s), urls: %d, threads: %d" % (len(proxies), COUNTRY or "any", len(urls), THREADS))
rotation = itertools.cycle(proxies)
lock = threading.Lock()
done = {"ok": 0, "fail": 0}
def fetch(index, url):
for _ in range(RETRIES):
with lock:
proxy = next(rotation)
req = urllib.request.Request(url, headers={"User-Agent": UA})
try:
body = opener_for(proxy).open(req, timeout=TIMEOUT).read()
except Exception:
continue
with open(os.path.join(OUT_DIR, "%d.html" % index), "wb") as out:
out.write(body)
return True
return False
with ThreadPoolExecutor(max_workers=THREADS) as pool:
futures = {pool.submit(fetch, i, u): u for i, u in enumerate(urls, 1)}
for fut in as_completed(futures):
ok = fut.result()
with lock:
done["ok" if ok else "fail"] += 1
total = done["ok"] + done["fail"]
sys.stderr.write("\r%d/%d ok %d fail %d" % (total, len(urls), done["ok"], done["fail"]))
sys.stderr.flush()
print("\nsaved %d pages to %s/ (%d failed)" % (done["ok"], OUT_DIR, done["fail"]))
if __name__ == "__main__":
main()
Pasa el proxy en cada petición: crea un opener con ProxyHandler o dale a requests proxies={'http': 'http://ip:port', 'https': 'http://ip:port'}. HTTP y SOCKS comparten puerto, así que http:// cubre ambos; para SOCKS5 en requests instala requests[socks] y usa socks5h://ip:port para que el DNS se resuelva en el lado del proxy.
Lee la lista una vez, recórrela en círculo y toma la siguiente dirección en cada petición. Reintenta una URL fallida con otro proxy dos o tres veces antes de descartarla; el script de arriba ya lo hace.
En Scrapy pon la dirección en request.meta['proxy'] o usa un middleware de rotación de proxies que lea el archivo que escribe el generador, y deja CONCURRENT_REQUESTS en el límite de hilos de tu paquete o por debajo. Los crawlers visuales como Octoparse y ParseHub aceptan la misma lista ip:port en su configuración de proxies.
Antes de un rastreo largo, filtra el pool una vez con el Socks List Processor para que ninguna dirección muerta llegue al parser. Para una prueba rápida del código basta con la lista de proxies gratis.


El rastreo en volumen sale más barato con un paquete ilimitado. Pasa por los sitios que bloquean las direcciones de las listas con Resi Core, y saca datos por ciudad con Resi Prime.
Rastreo en volumenLa mejor opción
El tráfico no se cuenta: los gigabytes de HTML e imágenes no cambian el precio. Un tercio de las direcciones cambia cada día, y las bloqueadas salen de la lista.
$700 al meso $2.70 por hora
Sitios protegidos
Una IP doméstica nueva en cada petición. Tómalo para sitios donde las direcciones de paquete topan con captcha. El país lo fijas en la cadena de conexión.
desde $0.49 por GB1 GB por $0.85
Datos por ciudad
Ciudad, región, ISP y ASN en la cadena de conexión. Lo necesitas cuando un sitio da datos distintos a ciudades distintas.
desde $1.39 por GB1 GB por $2.29
Elige un paquete, usa la hora de prueba gratis y lanza tu scraper sobre el pool real.