Pegue o link da lista
Depois do pagamento, o painel mostra um link como get.advanced.name/<ID>. Ele devolve linhas ip:port, uma por endereço. HTTP e SOCKS5 ficam na mesma porta.
Um scraper precisa de muitos endereços, rotação rápida e nenhum medidor de tráfego. Um pacote da Advanced.name dá de 5.000 a 50.000 endereços IPv4 num único link, até 5.000 threads em paralelo e um pool em que cerca de um terço dos endereços muda todo dia.
Quatro coisas decidem se uma varredura termina ou morre no primeiro captcha.
Endereços suficientes para um IP não bater no site duas vezes por minuto
De 5.000 (pacote nº 1) a 50.000 (pacote nº 6) endereços numa só lista
Pool renovado: IPs bloqueados precisam sair antes de você chegar neles
Cerca de um terço do pool roda a cada 24 horas, e a lista se atualiza a cada 10 minutos
Conexões paralelas para a varredura inteira
De 500 a 5.000 threads conforme o pacote, todos os protocolos numa porta só
Ninguém contando gigabytes
Sem limite de tráfego em nenhum pacote ilimitado: você paga o pacote e as threads
Região, pacote, prazo. O preço é por um IP autorizado; cada IP extra soma 10%.
Depois do pagamento, o painel mostra um link como get.advanced.name/<ID>. Ele devolve linhas ip:port, uma por endereço. HTTP e SOCKS5 ficam na mesma porta.
A lista só abre a partir dos IPs que você cadastrar no painel. Nada de login e senha na configuração do scraper: o endereço é a chave.
Carregue a lista, percorra em círculo e, quando uma requisição falhar, repita a URL no próximo proxy. O script abaixo faz exatamente isso com a biblioteca padrão.
Aponte CSV_URL para a exportação do painel, defina COUNTRY e MIN_SPEED e coloque as URLs de destino em urls.txt. O script fica só com o país que você precisa, baixa cada URL pelo próximo proxy e tenta de novo por outro endereço quando um falha. Confira antes o pool no 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()
Passe o proxy em cada requisição: monte um opener com ProxyHandler ou dê ao requests proxies={'http': 'http://ip:port', 'https': 'http://ip:port'}. HTTP e SOCKS dividem a porta, então http:// cobre os dois; para SOCKS5 no requests, instale requests[socks] e use socks5h://ip:port para o DNS ser resolvido do lado do proxy.
Leia a lista uma vez, percorra em círculo e pegue o próximo endereço a cada requisição. Repita uma URL que falhou em outro proxy duas ou três vezes antes de descartar; o script acima já faz isso.
No Scrapy, coloque o endereço em request.meta['proxy'] ou use um middleware de rotação de proxies apontado para o arquivo que o gerador grava, e mantenha CONCURRENT_REQUESTS no limite de threads do pacote ou abaixo. Crawlers visuais como Octoparse e ParseHub aceitam a mesma lista ip:port nas configurações de proxy.
Antes de uma varredura longa, filtre o pool uma vez no Socks List Processor, para que endereços mortos não cheguem ao parser. Para um teste rápido do código, a lista de proxies grátis basta.


Varreduras em volume saem mais baratas num pacote ilimitado. Passe pelos sites que bloqueiam endereços de listas com o Resi Core, e puxe dados por cidade com o Resi Prime.
Varredura em volumeMelhor escolha
O tráfego não é contado: gigabytes de HTML e imagens não mudam o preço. Um terço dos endereços muda por dia, e os bloqueados saem da lista.
$700 por mêsou $2.70 por hora
Sites protegidos
Um IP residencial novo a cada requisição. Use para sites onde os endereços de pacote caem em captcha. O país você define na string de conexão.
a partir de $0.49 por GB1 GB por $0.85
Dados por cidade
Cidade, região, provedor e ASN na string de conexão. Você precisa disso quando um site entrega dados diferentes para cidades diferentes.
a partir de $1.39 por GB1 GB por $2.29
Escolha um pacote, use a hora de teste grátis e rode seu scraper no pool real.