Proxies para herramientas SEO

Un crawler recorre el sitio en cientos de hilos, y cualquier servidor acaba respondiéndole con un 429. Un pool MIX de hasta 25.000 IP reparte esos hilos entre direcciones distintas, así que Screaming Frog, Netpeak Spider, A-Parser y Key Collector van a toda velocidad en lugar de un hilo con pausas. Una hora de prueba cuesta $1.

  • El tráfico no se cobra
  • SOCKS5 y HTTP en un puerto
  • Reembolso en paquetes desde 3 días
Ver precios
Las herramientas de auditoría SEO confluyen en un nodo proxy del que salen enlaces a páginas de sitios

El precio para tu volumen

Elige un paquete y mueve el periodo y el número de hilos. Los hilos aquí son los mismos threads que pones en el crawler: 1.200 hilos son 1.200 URL que la herramienta baja a la vez. El control está en ese valor.

MIX-Business está pensado para un departamento SEO y una agencia: varios proyectos por semana, Sitebulb y SEO PowerSuite en paralelo, A-Parser para sugerencias y resultados, ScrapeBox para comprobaciones masivas. 16.000 direcciones y 1.200 hilos por defecto: eso es lo que se pone cuando el rastreo debe acabar en una tarde.

1 mes
1.200+20%

Un hilo es una conexión simultánea. Más hilos: más trabajo hecho en el mismo tiempo.

$120
≈ $4 / díapor 30 días

$100 por un mes+ $20 por hilos

ahorro $420 vs. diario
reembolso del resto
  • 1 hora — $1
  • 1 día — $15
  • 3 días — $35
  • 1 semana — $50
  • 2 semanas — $75
  • 1 mes — $100
  • 3 meses — $255
  • 6 meses — $475
Comprar proxies — MIX-Business

Cómo conectar los proxies a las herramientas SEO

  1. 1
    Compra una hora por $1 e indica la IP de la máquina donde corren las herramientas.

    El acceso se ata al propio ordenador o servidor, así que en los ajustes de proxy de Screaming Frog y Netpeak los campos de usuario y contraseña quedan vacíos. Puedes registrar hasta diez máquinas.

  2. 2
    Toma en tu panel el enlace a la lista de proxies.

    Devuelve un archivo de texto con dirección y puerto, un proxy por línea. Screaming Frog y Netpeak esperan la misma lista pero como archivo: guarda la respuesta en .txt e indícalo en los ajustes.

  3. 3
    Reparte el pool entre las herramientas.

    A-Parser y ScrapeBox releen el enlace solos y toman de él todas las direcciones. Key Collector, Sitebulb y SEO PowerSuite leen un archivo con la lista, así que refréscalo con un script cada 10 minutos, ejemplo abajo.

  4. 4
    Pon los hilos sin superar los puertos del paquete.

    500 en Basic, 1.000 en Business, 1.500 en Elite sin ampliar. Cada puerto es un proxy distinto y un hilo del crawler ocupa un puerto: poner en Screaming Frog más hilos que puertos no aporta nada.

  5. 5
    Elige el protocolo según la herramienta.

    SOCKS5 lo toman Screaming Frog, A-Parser, ZennoPoster y ScrapeBox. Netpeak Spider, Key Collector y SEO PowerSuite van por HTTP(S). Ambos protocolos están en el mismo puerto, solo se cambia en la herramienta.

Así se enchufa el pool a una auditoría propia. El script lee las direcciones de urls.txt, baja cada página por un proxy aleatorio y guarda en audit.csv el código de respuesta, la redirección, title, h1, descripción, canonical y robots: lo mismo que muestra un crawler, pero con tus reglas. Sustituye PROXY_LIST_URL_FROM_DASHBOARD por el enlace de tu panel.

# pip install requests[socks]
import csv, random, re, time, requests
from concurrent.futures import ThreadPoolExecutor

PROXY_LIST_URL = "PROXY_LIST_URL_FROM_DASHBOARD"
REFRESH_SEC = 600
THREADS = 1200
HEADERS = {"User-Agent": "Mozilla/5.0 (compatible; SeoAudit/1.0)", "Accept-Language": "en-US,en;q=0.9"}

_pool, _loaded = [], 0

def pool():
    global _pool, _loaded
    if time.time() - _loaded > REFRESH_SEC:
        text = requests.get(PROXY_LIST_URL, timeout=15).text
        _pool = [line.strip() for line in text.splitlines() if ":" in line]
        _loaded = time.time()
    return _pool

def first(pattern, html):
    match = re.search(pattern, html, re.S | re.I)
    return re.sub(r"\s+", " ", re.sub(r"<[^>]+>", " ", match.group(1))).strip() if match else ""

def audit(url, tries=3):
    for _ in range(tries):
        proxy = random.choice(pool())
        try:
            r = requests.get(url, headers=HEADERS, timeout=20, allow_redirects=False,
                             proxies={"http": f"socks5h://{proxy}", "https": f"socks5h://{proxy}"})
        except requests.RequestException:
            continue
        html = r.text if "html" in r.headers.get("Content-Type", "") else ""
        return {
            "url": url,
            "status": r.status_code,
            "redirect": r.headers.get("Location", ""),
            "title": first(r"<title[^>]*>(.*?)</title>", html),
            "h1": first(r"<h1[^>]*>(.*?)</h1>", html),
            "description": first(r'<meta[^>]+name="description"[^>]+content="([^"]*)"', html),
            "canonical": first(r'<link[^>]+rel="canonical"[^>]+href="([^"]*)"', html),
            "robots": first(r'<meta[^>]+name="robots"[^>]+content="([^"]*)"', html),
        }
    return {"url": url, "status": 0, "redirect": "", "title": "", "h1": "",
            "description": "", "canonical": "", "robots": ""}

urls = [line.strip() for line in open("urls.txt") if line.strip()]
fields = ["url", "status", "redirect", "title", "h1", "description", "canonical", "robots"]
with open("audit.csv", "w", newline="", encoding="utf-8") as out:
    writer = csv.DictWriter(out, fieldnames=fields, delimiter=";")
    writer.writeheader()
    with ThreadPoolExecutor(THREADS) as executor:
        for row in executor.map(audit, urls):
            writer.writerow(row)
            print(row["status"], row["url"], row["title"][:60])

Qué paquete elegir para herramientas SEO

MIX-Basic

8.000 IP · 500–900 hilos

desde $50 al mes

Un proyecto: rastreo de hasta cien mil URL, recogida de palabras clave, revisión de enlaces una vez por semana.

MIX-Business

16.000 IP · 1.000–1.400 hilos

desde $100 al mes

Agencia y departamento SEO: varios crawlers a la vez, sugerencias y comprobaciones masivas en un solo pool.

MIX-Elite

25.000 IP · 1.500–9.900 hilos

desde $150 al mes

Servicio propio y equipo interno grande: millones de URL por rastreo, hilos hasta 9.900, a cualquier hora.

Cinco ajustes que cuidan el pool

  • Limita el crawler por URL por segundo y dominio, no solo por hilos. El servidor cuenta el ritmo, y 1.200 hilos a un dominio sin límite son un 429 garantizado.
  • Pon en el crawler un timeout de 20 segundos y dos reintentos por otro proxy: en un rastreo grande, las peticiones colgadas comen más tiempo que las páginas omitidas.
  • No bajes imágenes, fuentes ni CSS si compruebas meta etiquetas. En Screaming Frog son casillas en Configuration, y el rastreo se acelera varias veces.
  • Lee robots.txt una vez y guárdalo en caché: un crawler que lo pide antes de cada página gasta medio pool en balde.
  • Antes de un rastreo grande elige las direcciones más rápidas del CSV; el script de abajo ordena la lista por la columna speed.

Preguntas sobre proxies para herramientas SEO

01¿Con qué herramientas funciona?
Con cualquiera que acepte una lista de proxies: Screaming Frog SEO Spider, Netpeak Spider y Checker, Sitebulb, SEO PowerSuite, A-Parser, Key Collector, KeyAssort, ScrapeBox, GSA Search Engine Ranker, ZennoPoster, Xenu's Link Sleuth. Servicios como Ahrefs y Semrush van por su propia infraestructura y no necesitan pool.
02¿Cuántos hilos poner en Screaming Frog?
No más que los puertos del paquete: 500 en Basic, 1.000 en Business, 1.500 en Elite. Y mantén un límite de URL por segundo y dominio, o chocarás con las defensas del sitio que rastreas, no con el pool.
03¿Cómo se autentica el crawler en los proxies?
De ninguna forma: la autorización va por la IP de la máquina que indicaste al pedir. En los ajustes de proxy de Screaming Frog o Netpeak los campos de usuario y contraseña quedan vacíos, y la lista de máquinas se edita en el panel.
04¿Alcanza el pool para un rastreo de un millón de URL?
Sí, el tráfico no se cobra y el número de páginas no afecta al precio. El cuello de botella no es el pool sino el ritmo de peticiones a un dominio: un millón de URL de un mismo sitio se rastrea mejor con límite y en varias pasadas.
05¿Se pueden recoger resultados y sugerencias por regiones?
Sí, para eso cada dirección de la lista lleva su país. Toma la lista en CSV: columnas ip, port, country, speed, uptime, real_ip separadas por punto y coma. El script de abajo ordena el pool por la columna speed y deja las direcciones más rápidas, y el filtro por country se añade en una línea.
import csv, io, requests

CSV_URL = "PROXY_LIST_URL_FROM_DASHBOARD.csv"
TAKE = 1200
OUT_FILE = "proxies_fast.txt"

text = requests.get(CSV_URL, timeout=15).text
rows = list(csv.DictReader(io.StringIO(text), delimiter=";"))
rows.sort(key=lambda r: int(r["speed"]), reverse=True)
picked = [f"{r['ip']}:{r['port']}" for r in rows[:TAKE]]

with open(OUT_FILE, "w") as f:
    f.write("\n".join(picked) + "\n")
print(f"{len(picked)} proxies saved to {OUT_FILE}")
06¿Y si el crawler no rinde en este pool?
Toma una hora por $1 y lanza un rastreo normal: en una hora se ve la velocidad y la proporción de respuestas 429. Los paquetes desde 3 días se cancelan en el panel, el tiempo usado se recalcula a la tarifa normal y el resto vuelve a tu saldo.

Lo demás sobre el servicio está reunido en las preguntas generales, todos los paquetes con precios en la página principal.

Empieza con una hora por $1

Lanza tu crawler en el pool durante una hora, mira la velocidad de rastreo y luego elige el periodo. En paquetes desde 3 días el resto vuelve a tu saldo.

Probar proxies por $1
INICIAR SESIÓN/REGISTRARSE