Autorisez l'IP du checker
Ajoutez l'adresse du serveur dans l'espace client. Plusieurs serveurs peuvent partager un pack, à 10 % par IP supplémentaire.
Un checker est une machine à threads : il ouvre des milliers de connexions et écarte aussitôt les adresses lentes. Le pack n° 6 d'Advanced.name répond avec 50 000 adresses IPv4 et 5 000 threads sur un lien, les deux protocoles sur un port, sans compteur de trafic.
Le checker juge le pool sur deux chiffres : les threads qu'il peut ouvrir et les adresses qu'il peut user en une heure.
Des milliers de connexions parallèles
De 500 à 5 000 threads : le pack n° 6 offre le maximum
Plus d'adresses que de lignes à vérifier
50 000 IP sur le n° 6, 40 000 sur le n° 5, un tiers renouvelé chaque jour
Des réponses rapides, sans adresses mortes
Liste rafraîchie toutes les 10 minutes ; le script de vitesse ci-dessous écarte les lentes avant le passage
Des plaintes qui n'arrêtent pas le passage
Les abus sont traités dans l'ordre habituel, le pack reste actif
Réglez le checker sur la limite de threads du pack ; au-delà, le pool refuse les connexions.
Ajoutez l'adresse du serveur dans l'espace client. Plusieurs serveurs peuvent partager un pack, à 10 % par IP supplémentaire.
Lancez le script ci-dessous ou SLP : il garde les adresses qui répondent dans votre limite et les écrit dans un fichier.
5 000 sur le pack n° 6, 2 000 sur le n° 3. Plus de threads que la limite, c'est des connexions refusées, pas plus de vitesse.
Pour chaque proxy, il ouvre deux services d'écho et détermine si l'adresse vous masque complètement, si elle annonce un proxy ou si elle laisse fuiter votre vraie IP, puis écrit le verdict dans un CSV. Pour des dizaines de milliers d'adresses, utilisez 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()
Tout checker en masse accepte un fichier de proxies ou une URL : collez la liste ip:port, choisissez SOCKS5 ou HTTP (les deux répondent sur un port) et gardez le même type pendant tout le passage. Réglez les threads sur la limite du pack, 5 000 sur le plus gros, car les connexions au-delà sont refusées, pas mises en file.
Un timeout de 10 secondes avec une relance sur une autre adresse gaspille le moins de threads ; les longs timeouts restent bloqués sur des cibles mortes.
Avant le passage, écartez les adresses lentes et celles qui laissent fuiter l'IP avec le script d'anonymat ci-dessus ou Socks List Processor. Pendant les longs passages, relisez la liste toutes les 10 minutes pour faire entrer de nouvelles adresses.
Pour un contrôle rapide, la liste de proxies gratuits montre le format qu'attend le checker.
Un checker bute sur les limites de threads et de nombre d'adresses, et c'est le travail des packs illimités. Ajoutez Resi Core pour les cibles qui coupent les adresses des listes.
Le plus de threadsLe meilleur choix
Le plus grand pack : une IP revient rarement sur une cible, même sur une base de centaines de milliers de lignes. Le trafic n'est pas compté.
$1390 par moisou $5.80 de l'heure
Un checker jusqu'à 2500 threads
Assez pour un checker qui tient jusqu'à 2500 connexions, pour presque 30 % de moins que le pack #6.
$990 par moisou $4.20 de l'heure
Cibles strictes
Une nouvelle IP résidentielle à chaque vérification. Une réponse de la cible pèse quelques kilo-octets, donc un gigaoctet couvre des milliers de vérifications.
dès $0.49 le Go1 Go pour $0.85
Choisissez le pack, prenez l'heure gratuite, lancez le checker sur tout le pool.