
Des exercices pratiques pour apprendre à jouer avec le proxy IP avec Python
On me demande souvent comment porter un proxy IP testé avec cURL dans un projet Python. Ce n'est pas difficile, mais il est facile pour les débutants de s'attirer des ennuis. Aujourd'hui, nous allons utiliser la façon la plus pratique de briser les miettes pour comprendre comment porter les requêtes proxy cURL dans le code Python.
Lecture des paramètres de proxy dans cURL
Commençons par une commande cURL typique avec un proxy :
curl -x http://user:pass@proxy.ipipgo.io:8080 https://example.com
VoiciParamètre -xest la clé de la mise en place d'un serveur proxy. Faites attention à la structure de l'adresse :Protocole://nom d'utilisateur:mot de passe@proxy adresse:portJe vais utiliser ce format plus tard. N'oubliez pas ce format, vous en aurez besoin pour convertir en Python plus tard.
La triple hache des requêtes Python
La bibliothèque de requêtes fréquemment utilisée en Python gère les mandataires d'une manière très simple.Format du dictionnaire proxyTransformons le cURL ci-dessus en code. Transformons le cURL ci-dessus en code :
demandes d'importation
proxies = {
'http' : 'http://user:pass@proxy.ipipgo.io:8080',
'https' : 'http://user:pass@proxy.ipipgo.io:8080'
}
response = requests.get('https://example.com', proxies=proxies)
print(response.text)
Notez qu'il y a un piège ici : de nombreuses personnes n'écrivent que des proxies http, et par conséquent, les requêtes https échouent. En conséquence, les requêtes https échouent.Tant http que https doivent être attribués.Deux protocoles.
Un guide pour prévenir les pièges dans le monde réel
Lorsque l'on utilise le proxy d'ipipgo, il est recommandé d'utiliser la fonctionL'API obtient dynamiquement l'adresse du proxy. Donnez-moi une châtaigne :
demandes d'importation
Obtenir le proxy de ipipgo (n'oubliez pas de le remplacer par votre propre API)
proxy_api = "https://api.ipipgo.com/getproxy?key=你的密钥"
proxy_data = requests.get(proxy_api).json()
proxies = {
'http' : f "http://{proxy_data['user']}:{proxy_data['pass']}@{proxy_data['server']}",
'https' : f "http://{proxy_data['user']}:{proxy_data['pass']}@{proxy_data['server']}"
}
Tester si le proxy fonctionne
test_url = "https://httpbin.org/ip"
resp = requests.get(test_url, proxies=proxies)
print(f "IP actuelle : {resp.json()['origin']}")
Il y a un avantage à écrire de cette façon : chaque requête utilise une nouvelle IP, et l'effet anti-blocage est important. Le Dynamic Residential Proxy d'ipipgo est particulièrement adapté à ce type de scénario, et ses pools d'IPMise à jour quotidienne 20% ou plusqui n'est pas facilement reconnaissable par le site cible.
Foire aux questions QA
Q : Que dois-je faire si je ne parviens pas à me connecter à l'adresse IP du proxy en permanence ?
R : Vérifiez d'abord trois points : 1. le nom d'utilisateur et le mot de passe n'ont pas de caractères spéciaux à échapper 2. l'en-tête du protocole n'est pas écrit correctement (http et https) 3. le feu se déclenche ou non. Si cela ne fonctionne pas, il est recommandé de contacter le service clientèle d'ipipgo pour vérifier l'état du proxy.
Q : Comment gérer le pool d'agents en cas de forte concurrence ?
A : Recommandé pour ipipgoAgents dynamiques d'entrepriseLa ligne TK, quant à elle, prend en charge la commutation IP automatique et la mise en attente de la session. Leur ligne TK peut fairePlus de 100 demandes par secondePas d'abandon pour les vétérans des reptiles.
| Type d'emballage | Scénarios applicables | Avantage tarifaire |
|---|---|---|
| Dynamique résidentielle (standard) | Collecte quotidienne de données | 7,67 $/GB |
| Maisons statiques | Services nécessitant un IP fixe | 35RMB/IP |
Conseils pour la mise à niveau du jeu
Les conducteurs âgés l'utilisent.Mécanisme de non-réessaiLe logiciel de gestion des droits d'auteur d'ipipgo permet de changer automatiquement d'adresse IP et de réessayer lorsque le proxy n'est plus en mesure de le faire. Combiné avec l'outilmodèle de paiement à l'utilisationqui est à la fois rentable et stable. Le code peut être écrit comme suit :
from retrying import retry
@retry(stop_max_attempt_number=3)
def request_with_retry(url).
proxy = get_new_proxy() get new proxy from ipipgo
return requests.get(url, proxies=proxy, timeout=10)
Lorsque vous l'utilisez, appelez-le directement
data = request_with_retry('https://target-site.com')
N'oubliez pas d'installer la bibliothèque retrying (pip install retrying) afin que lorsqu'une requête échoue, elle soit automatiquement réessayée 3 fois, à chaque fois avec une nouvelle IP.
Un dernier secret : lesAgents spécialisés transfrontaliersLa latence ne représente qu'un tiers de celle d'un agent ordinaire, ce qui rend la capture de données en temps réel particulièrement agréable. Cependant, les utilisateurs d'entreprise peuvent appliquer ce système, il est nécessaire de trouver directement leur service clientèle pour ouvrir la liste blanche.

