Authorise the checker's IP
Add the address of the server in the dashboard. Several servers share a package at 10% per extra IP.
A checker is a thread machine: it opens thousands of connections and drops slow addresses at once. Package #6 on Advanced.name answers with 50,000 IPv4 addresses and 5,000 threads on one link, both protocols on one port, no traffic counter.
The checker measures the pool by two numbers: threads it can open and addresses it can burn through in an hour.
Thousands of parallel connections
500 to 5,000 threads: package #6 holds the maximum
Addresses that outnumber the check list
50,000 IPs on #6, 40,000 on #5, a third replaced daily
Fast responses, dead addresses gone
List refresh every 10 minutes; the speed script below drops slow ones before the run
Complaints that do not stop the run
Abuse handled in the usual order, package stays on
Set the checker to the package thread limit; the pool refuses connections above it.
Add the address of the server in the dashboard. Several servers share a package at 10% per extra IP.
Run the script below or SLP: it keeps addresses that answer within your limit and writes them to a file.
5,000 on package #6, 2,000 on #3. More threads than the limit gives refused connections, not more speed.
For every proxy it opens two echo endpoints and decides whether the address hides you fully, announces a proxy, or leaks your real IP, writing the verdict to a CSV. For tens of thousands of addresses use Socks List Processor.
#!/usr/bin/env python3
"""Proxy anonymity checker for Advanced.name proxies.
For every proxy it opens two small endpoints that echo the request, then decides
whether the proxy is elite (hides you completely), anonymous (announces a proxy
but not your IP) or transparent (leaks your real IP). Standard library only.
Run: python3 anon.py
"""
# ================================ CONFIG ====================================
PROXY_LIST = "proxies.txt" # one ip:port per line, or a CSV export (';' separated)
MY_IP = "" # your real IP; leave empty to detect it once directly
JUDGE_IP = "https://api.ipify.org" # returns the exit IP as plain text
JUDGE_HDR = "https://httpbin.org/get" # echoes the headers the site received
THREADS = 100
TIMEOUT = 12
OUT_FILE = "anon.csv" # proxy;status;anonymity;exit_ip is written here
# HTTP and SOCKS answer on the same Advanced.name port, so the http scheme works for both.
# ============================================================================
import csv
import sys
import threading
import urllib.request
from concurrent.futures import ThreadPoolExecutor, as_completed
LEAK_HEADERS = ("X-Forwarded-For", "Via", "X-Real-Ip", "Forwarded", "X-Proxy-Id")
def load_list(path):
out = []
with open(path, encoding="utf-8", errors="replace") as fh:
for line in fh:
line = line.strip()
if not line or line.startswith("#"):
continue
if ";" in line: # a CSV row: ip;port;...
parts = line.split(";")
if len(parts) >= 2 and parts[1].isdigit():
out.append(parts[0] + ":" + parts[1])
elif ":" in line:
out.append(line)
return out
def opener(proxy):
handler = urllib.request.ProxyHandler({"http": "http://" + proxy, "https": "http://" + proxy})
return urllib.request.build_opener(handler)
def through(proxy, url):
return opener(proxy).open(url, timeout=TIMEOUT).read().decode("utf-8", "replace")
def my_ip():
if MY_IP:
return MY_IP.strip()
return urllib.request.urlopen(JUDGE_IP, timeout=TIMEOUT).read().decode().strip()
def classify(proxy, real_ip):
try:
exit_ip = through(proxy, JUDGE_IP).strip()
except Exception:
return "dead", "", ""
try:
echoed = through(proxy, JUDGE_HDR).lower()
except Exception:
echoed = ""
if real_ip and real_ip in echoed:
anon = "transparent"
elif any(h.lower() in echoed for h in LEAK_HEADERS):
anon = "anonymous"
else:
anon = "elite"
return "live", anon, exit_ip
def main():
proxies = load_list(PROXY_LIST)
if not proxies:
sys.exit("List is empty.")
real_ip = my_ip()
print("real IP: %s, proxies: %d, threads: %d" % (real_ip, len(proxies), THREADS))
counts = {"elite": 0, "anonymous": 0, "transparent": 0, "dead": 0}
lock = threading.Lock()
rows = []
def work(proxy):
status, anon, exit_ip = classify(proxy, real_ip)
key = anon if status == "live" else "dead"
with lock:
counts[key] += 1
return proxy, status, anon, exit_ip
with ThreadPoolExecutor(max_workers=THREADS) as pool:
for fut in as_completed([pool.submit(work, p) for p in proxies]):
rows.append(fut.result())
with open(OUT_FILE, "w", encoding="utf-8", newline="") as out:
writer = csv.writer(out, delimiter=";")
writer.writerow(["proxy", "status", "anonymity", "exit_ip"])
writer.writerows(rows)
print("elite %d anonymous %d transparent %d dead %d -> %s"
% (counts["elite"], counts["anonymous"], counts["transparent"], counts["dead"], OUT_FILE))
if __name__ == "__main__":
main()
Any mass checker takes a proxy file or a URL: paste the ip:port list, choose SOCKS5 or HTTP (both answer on one port) and keep the type consistent for the whole run. Set threads to the package limit — 5,000 on the top package — because connections above it are refused, not queued.
Timeout 10 seconds with one retry on another address wastes the fewest threads; long timeouts sit on dead targets.
Drop slow and leaking addresses before the run with the anonymity script above or Socks List Processor. During long runs re-read the list every 10 minutes so new addresses come in.
For a quick sanity check the free proxy list shows the format the checker expects.
A checker hits limits on threads and address count, and that is the job of unlimited packages. Add Resi Core for targets that cut addresses from lists.
Most threadsBest fit
The largest package: one IP rarely returns to a target, even on a base of hundreds of thousands of lines. Traffic is not counted.
$1390 per monthor $5.80 per hour
A checker up to 2,500 threads
Enough for a checker that holds up to 2,500 connections, at almost 30% less than package #6.
$990 per monthor $4.20 per hour
Strict targets
A new home IP on every check. A target reply weighs kilobytes, so one gigabyte covers thousands of checks.
from $0.49 per GB1 GB for $0.85
Pick the package, take the free hour, run the checker on the full pool.