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.
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.

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-Basic cubre la auditoría de un proyecto: un rastreo de 50–100 mil URL en Screaming Frog o Netpeak Spider, recogida de palabras clave en Key Collector, una revisión puntual de enlaces rotos. 8.000 direcciones quitan los límites del servidor y 500 hilos se parecen a lo que se suele poner en un crawler.
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.
MIX-Elite está hecho para tu propio servicio o un equipo interno grande: millones de URL por rastreo, logs y crawling a la vez, verificadores propios de indexación y paginación. Pool de 25.000 direcciones e hilos hasta 9.900: ningún otro paquete llega a esas cifras.
Un hilo es una conexión simultánea. Más hilos: más trabajo hecho en el mismo tiempo.
$50 por un messin recargo por hilos
ahorro $250 vs. diarioUn hilo es una conexión simultánea. Más hilos: más trabajo hecho en el mismo tiempo.
$100 por un mes+ $20 por hilos
ahorro $420 vs. diarioUn hilo es una conexión simultánea. Más hilos: más trabajo hecho en el mismo tiempo.
$150 por un messin recargo por hilos
ahorro $450 vs. diarioEl 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.
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.
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.
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.
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])
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.
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.
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.
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}")
Lo demás sobre el servicio está reunido en las preguntas generales, todos los paquetes con precios en la página principal.
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