MIX-Basic
8.000 IPs · 500–900 threads
a partir de $50 por mês
Um projeto: rastreio de até cem mil URLs, coleta de palavras-chave, checagem de links uma vez por semana.
Um crawler percorre o site em centenas de threads, e qualquer servidor acaba respondendo com um 429. Um pool MIX de até 25.000 IPs distribui essas threads por endereços diferentes, então Screaming Frog, Netpeak Spider, A-Parser e Key Collector rodam a toda velocidade em vez de uma thread com pausas. Uma hora de teste custa $1.

Escolha um pacote e mova o período e o número de threads. As threads aqui são as mesmas que você define no crawler: 1.200 threads são 1.200 URLs que a ferramenta baixa ao mesmo tempo. O controle está nesse valor.
MIX-Basic cobre a auditoria de um projeto: um rastreio de 50–100 mil URLs no Screaming Frog ou Netpeak Spider, coleta de palavras-chave no Key Collector, uma checagem pontual de links quebrados. 8.000 endereços tiram os limites do servidor e 500 threads batem com o que normalmente se define num crawler.
MIX-Business foi pensado para um time de SEO e uma agência: vários projetos por semana, Sitebulb e SEO PowerSuite em paralelo, A-Parser para sugestões e resultados, ScrapeBox para checagens em massa. 16.000 endereços e 1.200 threads por padrão: é o que se define quando o rastreio precisa terminar numa noite.
MIX-Elite foi feito para o seu próprio serviço ou um time interno grande: milhões de URLs por rastreio, logs e crawling ao mesmo tempo, verificadores próprios de indexação e paginação. Pool de 25.000 endereços e threads até 9.900: nenhum outro pacote chega a esses números.
Uma thread é uma conexão simultânea. Mais threads — mais feito no mesmo tempo.
$50 por um mêssem custo extra por threads
economia $250 vs. diárioUma thread é uma conexão simultânea. Mais threads — mais feito no mesmo tempo.
$100 por um mês+ $20 por threads
economia $420 vs. diárioUma thread é uma conexão simultânea. Mais threads — mais feito no mesmo tempo.
$150 por um mêssem custo extra por threads
economia $450 vs. diárioO acesso é atrelado ao próprio computador ou servidor, então nas configurações de proxy do Screaming Frog e do Netpeak os campos de login e senha ficam vazios. Você pode registrar até dez dessas máquinas.
Ele devolve um arquivo de texto no formato endereço e porta, um proxy por linha. Screaming Frog e Netpeak esperam a mesma lista, mas como arquivo: salve a resposta em .txt e aponte as configurações para ele.
A-Parser e ScrapeBox releem o link sozinhos e pegam dele todos os endereços. Key Collector, Sitebulb e SEO PowerSuite leem um arquivo com a lista, então atualize-o com um script a cada 10 minutos, exemplo abaixo.
500 no Basic, 1.000 no Business, 1.500 no Elite sem adicional. Cada porta é um proxy separado e uma thread do crawler ocupa uma porta: definir no Screaming Frog mais threads do que portas não traz nada.
SOCKS5 é o que Screaming Frog, A-Parser, ZennoPoster e ScrapeBox usam. Netpeak Spider, Key Collector e SEO PowerSuite vão por HTTP(S). Os dois protocolos estão na mesma porta, a troca é só na ferramenta.
É assim que o pool entra numa auditoria própria. O script lê os endereços de urls.txt, baixa cada página por um proxy aleatório e guarda em audit.csv o código de resposta, o redirecionamento, title, h1, descrição, canonical e robots: o mesmo que um crawler mostra, só nas suas regras. Substitua PROXY_LIST_URL_FROM_DASHBOARD pelo link do seu painel.
# 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 IPs · 500–900 threads
a partir de $50 por mês
Um projeto: rastreio de até cem mil URLs, coleta de palavras-chave, checagem de links uma vez por semana.
16.000 IPs · 1.000–1.400 threads
a partir de $100 por mês
Agência e time de SEO: vários crawlers ao mesmo tempo, sugestões e checagens em massa num só pool.
25.000 IPs · 1.500–9.900 threads
a partir de $150 por mês
Serviço próprio e time interno grande: milhões de URLs por rastreio, threads até 9.900, a qualquer 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}")
O resto sobre o serviço está reunido nas perguntas gerais, todos os pacotes com preços na página inicial.
Rode o seu crawler no pool por uma hora, veja a velocidade do rastreio e depois escolha o período. Em pacotes desde 3 dias o restante volta para o seu saldo.
Testar proxies por $1