Comment créer un vérificateur de proxy IPRoyal pour HTTP, SOCKS5 et Shadowsocks
Apprenez à vérifier les proxies IPRoyal avec un script Python personnalisé. Vérifiez les points de terminaison HTTP, SOCKS5 et Shadowsocks pour la connectivité, la latence et l'anonymat IP.
Aperçu
IPRoyal fournit des proxies résidentiels, de centre de données et ISP avec prise en charge des protocoles HTTP, SOCKS5 et Shadowsocks. Que vous fassiez du scraping, de la surveillance des résultats de recherche ou de la navigation privée, vous devez savoir que vos proxies sont actifs, rapides et ne divulguent pas votre véritable IP. Une vérification manuelle de chaque point de terminaison ne passe pas à l'échelle. Ce tutoriel vous montre comment créer un vérificateur de proxy réutilisable en Python qui teste la connectivité, mesure la latence et vérifie l'anonymat pour tout point de terminaison IPRoyal.
Prérequis
- Python 3.8 ou version ultérieure installé sur votre système.
- Gestionnaire de paquets
pip. - Identifiants de proxy IPRoyal (hôte, port, nom d'utilisateur, mot de passe). Vous pouvez les copier depuis le tableau de bord IPRoyal.
- Pour tester Shadowsocks : un client Shadowsocks tel que
shadowsocks-libev(Linux/macOS) oushadowsocks-rust. - Connaissance de base de la ligne de commande et de Python.
Comprendre ce qu'il faut vérifier
Un vérificateur de proxy utile doit répondre à quatre questions :
- Connectivité : Le proxy peut-il atteindre l'internet public ?
- Anonymat : L'IP de sortie renvoyée par un service correspond-elle à l'IP du proxy (et non à votre véritable IP) ?
- Latence : Combien de temps prend une requête du début à la fin ?
- Comportement DNS : Les requêtes DNS sont-elles résolues via le proxy ou localement ? (Une fuite révèle votre emplacement réel.)
Les différents protocoles nécessitent une gestion légèrement différente. Le tableau ci-dessous résume l'approche pour chaque protocole IPRoyal.
| Protocole | Schéma Python | Gestion DNS | Authentification |
|---|---|---|---|
| HTTP | http:// |
Local ou proxy | Nom d'utilisateur/mot de passe dans l'URL ou l'en-tête |
| HTTPS | http:// (CONNECT) |
Local ou proxy | Nom d'utilisateur/mot de passe dans l'URL ou l'en-tête |
| SOCKS5 | socks5h:// |
Distant (proxy) | Nom d'utilisateur/mot de passe dans l'URL |
| Shadowsocks | SOCKS5 local après ss-local |
Distant | Mot de passe dans la configuration |
Étapes
1. Installer les dépendances Python
La bibliothèque requests gère les proxies HTTP et HTTPS. Pour SOCKS5, vous avez également besoin de requests[socks] et pysocks.
pip install requests requests[socks] pysocks
2. Collectez vos points de terminaison de proxy IPRoyal
Connectez-vous au tableau de bord IPRoyal et copiez la liste de proxies. La plupart des listes incluent des lignes au format :
host:port:username:password
Enregistrez la liste dans un fichier texte brut, par exemple proxies.txt. Si vous utilisez un format différent, ajustez le code d'analyse dans les étapes suivantes.
3. Écrivez un vérificateur de proxy HTTP de base
Créez un fichier nommé checker.py. L'extrait suivant teste un seul proxy HTTP et affiche l'IP renvoyée.
import requests
from requests.exceptions import ProxyError, ConnectTimeout
proxy_url = "http://username:password@host:port"
proxies = {
"http": proxy_url,
"https": proxy_url,
}
try:
response = requests.get("https://httpbin.org/ip", proxies=proxies, timeout=10)
response.raise_for_status()
print("Proxy works. Your IP appears as:", response.json()["origin"])
except (ProxyError, ConnectTimeout) as e:
print("Proxy failed:", e)
Remplacez username, password, host et port par vos identifiants IPRoyal.
4. Étendez le vérificateur à SOCKS5
Pour SOCKS5, changez le schéma en socks5h://. Le h indique à requests de résoudre le DNS via le proxy, ce qui évite les fuites DNS.
proxy_url = "socks5h://username:password@host:port"
proxies = {
"http": proxy_url,
"https": proxy_url,
}
Exécutez le même bloc de requête. Si vous voyez une erreur Missing dependencies for SOCKS support, réinstallez requests[socks].
5. Ajoutez la mesure de latence et la vérification de l'IP
Modifiez le script pour chronométrer la requête et comparer l'IP renvoyée avec l'IP attendue du proxy. Vous pouvez stocker l'IP attendue dans votre liste de proxies ou la récupérer séparément.
import time
start = time.time()
response = requests.get("https://httpbin.org/ip", proxies=proxies, timeout=10)
elapsed = time.time() - start
returned_ip = response.json()["origin"]
print(f"Latency: {elapsed:.2f}s, Returned IP: {returned_ip}")
Si l'IP renvoyée correspond à votre véritable IP, le proxy n'anonymise pas votre trafic. Vérifiez vos paramètres d'authentification et de protocole.
6. Testez les points de terminaison Shadowsocks
Shadowsocks est un tunnel, et non un protocole proxy direct. Pour vérifier un point de terminaison Shadowsocks IPRoyal, exécutez un client Shadowsocks local qui expose un proxy SOCKS5, puis testez cette adresse SOCKS5 locale.
Installez shadowsocks-libev sur Linux ou macOS (via Homebrew). Créez ensuite un fichier de configuration ss-local.json :
{
"server": "your_iproyal_ss_server",
"server_port": 8388,
"local_address": "127.0.0.1",
"local_port": 1080,
"password": "your_password",
"method": "aes-256-gcm"
}
Démarrez le client :
ss-local -c ss-local.json
Maintenant, traitez socks5h://127.0.0.1:1080 comme votre proxy dans le script de vérification. Si la connexion fonctionne, le tunnel Shadowsocks fonctionne.
7. Créez un vérificateur par lots avec rotation et journalisation
Pour plusieurs proxies, analysez votre fichier proxies.txt, parcourez chaque point de terminaison et enregistrez les résultats dans un fichier CSV. Cela vous aide à identifier les IP mortes et à suivre les performances au fil du temps.
import csv
with open("proxies.txt") as f:
lines = [line.strip() for line in f if line.strip()]
results = []
for line in lines:
host, port, user, pwd = line.split(":")
proxy_url = f"socks5h://{user}:{pwd}@{host}:{port}"
proxies = {"http": proxy_url, "https": proxy_url}
try:
start = time.time()
r = requests.get("https://httpbin.org/ip", proxies=proxies, timeout=10)
elapsed = time.time() - start
ip = r.json()["origin"]
results.append((host, port, "OK", f"{elapsed:.2f}", ip))
except Exception as e:
results.append((host, port, "FAIL", "", str(e)))
with open("proxy_report.csv", "w", newline="") as f:
writer = csv.writer(f)
writer.writerow(["Host", "Port", "Status", "Latency(s)", "Returned IP/Error"])
writer.writerows(results)
Exécutez le script périodiquement pour maintenir un pool de proxies sain.
Dépannage
- 407 Proxy Authentication Required : Vérifiez le nom d'utilisateur et le mot de passe. Si votre mot de passe contient des caractères spéciaux comme
@ou:, encodez-les en URL (par exemple,@devient%40). - Délai de connexion dépassé : Vérifiez que l'hôte et le port sont corrects et que votre IP est autorisée dans le tableau de bord IPRoyal si votre forfait l'exige.
- Erreurs SOCKS5 : Assurez-vous que
requests[socks]est installé. Utilisezsocks5h://pour la résolution DNS distante ;socks5://résout le DNS localement. - Le client Shadowsocks ne démarre pas : Confirmez que la méthode de chiffrement correspond à votre configuration IPRoyal et que le port du serveur est ouvert. Testez avec
ss-local -c ss-local.json -vpour une sortie détaillée. - Fuites DNS : Utilisez
socks5h://et testez avec un service de test de fuite DNS via le proxy. Si l'emplacement du résolveur diffère de l'emplacement du proxy, le DNS fuit. - Erreurs de certificat HTTPS : Certains proxies interceptent TLS. Pour le scraping, préférez les proxies résidentiels ou ISP qui prennent en charge HTTPS de bout en bout sans interception.
Résumé
Vous avez créé un vérificateur de proxy basé sur Python qui valide les points de terminaison HTTP, SOCKS5 et Shadowsocks d'IPRoyal. Le script mesure la latence, vérifie l'IP de sortie et enregistre les résultats pour une analyse par lots. Des vérifications régulières vous aident à éliminer les proxies morts et à maintenir des flux de scraping ou de confidentialité fiables. La large prise en charge des protocoles d'IPRoyal en fait un choix flexible pour ces tâches, et le vérificateur peut être adapté à n'importe quel fournisseur en modifiant le format de la liste de proxies.