Get the list link
After payment the dashboard shows a link like get.advanced.name/<ID>. It returns ip:port lines, one per address. HTTP and SOCKS5 sit on the same port.
A scraper needs many addresses, fast rotation and no traffic meter. One Advanced.name package gives you from 5,000 to 50,000 IPv4 addresses on one link, up to 5,000 parallel threads and a pool where about a third of the addresses change every day.
Four things decide whether a crawl finishes or dies on the first captcha.
Enough addresses so one IP does not hit the site twice a minute
From 5,000 (package #1) to 50,000 (package #6) addresses in one list
Fresh pool: banned IPs must leave before you reach them
About a third of the pool rotates every 24 hours, the list refreshes every 10 minutes
Parallel connections for the whole crawl
500 to 5,000 threads depending on the package, all protocols on one port
Nobody counting gigabytes
No traffic limit on any unlimited package: you pay for the package and the threads
Region, package, term. The price is per one authorised IP; each extra IP adds 10%.
After payment the dashboard shows a link like get.advanced.name/<ID>. It returns ip:port lines, one per address. HTTP and SOCKS5 sit on the same port.
The list opens only from IPs you add in the dashboard. No login and password in the scraper config: the address is the key.
Load the list, walk through it in a circle, retry a URL on the next proxy when one fails. The script below does exactly this with the standard library.
Point CSV_URL at your dashboard export, set COUNTRY and MIN_SPEED, put target URLs in urls.txt. The script keeps only the country you need, fetches every URL through the next proxy and retries on another address when one fails. Check the pool first with the 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()
Pass the proxy per request: build an opener with a ProxyHandler, or give requests proxies={'http': 'http://ip:port', 'https': 'http://ip:port'}. HTTP and SOCKS share one port, so http:// covers both; for SOCKS5 in requests install requests[socks] and use socks5h://ip:port so DNS resolves on the proxy side.
Read the list once, walk it in a circle and take the next address on every request. Retry a failed URL through a different proxy two or three times before dropping it; the script above already does exactly that.
In Scrapy put the address in request.meta['proxy'] or use a rotating-proxy middleware pointed at the file the builder writes, and keep CONCURRENT_REQUESTS at or below your package thread limit. GUI crawlers such as Octoparse and ParseHub take the same ip:port list in their proxy settings.
Filter the pool once with the Socks List Processor before a long crawl, so dead addresses never reach the parser. For a quick trial the free proxy list is enough to test the code.


Crawling at volume costs less on an unlimited package. Get through sites that ban list addresses on Resi Core, and pull city data with Resi Prime.
Crawling at volumeBest fit
Traffic is not counted: gigabytes of HTML and images leave the price unchanged. A third of the addresses change daily, and banned ones leave the list.
$700 per monthor $2.70 per hour
Protected sites
A new home IP on every request. Take it for sites where package addresses hit a captcha. You set the country in the connection string.
from $0.49 per GB1 GB for $0.85
City-level data
City, region, ISP and ASN in the connection string. You need it when a site serves different data to different cities.
from $1.39 per GB1 GB for $2.29
Pick a package, take the free test hour, run your scraper on the real pool.