
Utilisation de Python pour ajuster la réponse IP d'un proxy
Beaucoup de vieux fer dans les données de crawl ont rencontré l'embarras de l'IP est bloqué, cette fois l'IP proxy est une paille de sauvetage. Aujourd'hui, nous prenons ipipgo home proxy service comme exemple, et nous vous enseignons comment utiliser Python pour jouer habilement avec l'IP proxy.
La bonne façon d'obtenir une IP proxy
Commençons par la marche à blanc, voici comment fonctionne l'API d'ipipgo (attention à remplacer votre clé de compte) :
demandes d'importation
def gripproxy().
api_url = "https://api.ipipgo.com/get?format=json"
params = {
"key" : "Votre clé de compte",
"count" : 5, combien d'IPs
"protocol" : "socks5" Choisissez un protocole qui fonctionne.
}
resp = requests.get(api_url, params=params)
return [ip['proxy address'] for ip in resp.json()['data']]]
C'est là que le bât blesse :N'oubliez pas d'envelopper ce code dans un try-except, car les problèmes de réseau sont fréquents. Lorsque vous obtenez la liste des adresses IP, il est préférable de tester d'abord la vitesse, ne vous précipitez pas pour travailler directement.
Traitement des réponses triple axe
Il est facile de se débarrasser des IP proxy ? Ces trois astuces vous sauvent la vie :
| symptomatique | antidote |
|---|---|
| décrochage | Définir un délai d'attente de 10 secondes, changer d'adresse IP à l'expiration du délai d'attente. |
| Retourne les codes d'état étranges | Si vous rencontrez 403/429, notez l'IP et utilisez-la à nouveau après une pause. |
| Retour incomplet des données | Vérifiez que la longueur du contenu de l'en-tête de la réponse est correcte. |
Code réel avec commentaires
Voir l'exemple complet avec la gestion des exceptions :
from random import choice
demandes d'importation
Proxy Pool = WeedProxy() avec la fonction écrite précédemment
def secure_request(url).
for _ in range(3) : donner 3 chances
proxy actuel = {'https' : choice(proxy pool)}
try.
resp = requests.get(url,
proxies=current proxy, timeout=15)
timeout=15)
if resp.status_code == 200: : Si resp.status_code == 200.
Ici, vous pouvez ajouter la validation du contenu
return resp.text
except Exception as Mothmaids.
print(f"{current agent} is pumping, reason : {str(moth)[:30]}...")
Proxy pool.remove(current proxy['https']) supprimer les mauvaises IP
if len(proxy pool) < 2 : reconstituer les munitions à temps
proxy pool.extend(gripproxy())
return None
Scène de renversement courante AQ
Q : Les adresses IP proxy ne fonctionnent pas lorsque je les utilise ?
R : Phénomène normal ! Les IP dynamiques sont censées changer, il est donc recommandé de sélectionner des IP au hasard pour chaque demande et de bouleverser l'ordre d'utilisation comme on mélange un jeu de cartes.
Q : Un temps de réponse digne d'un escargot ?
A : Essayez ipipgo'sLigne TKL'entreprise est optimisée pour l'accès domestique. Si le budget est suffisant, il est possible d'utiliser directement l'IP résidentielle statique, à raison de 35 yuans par mois.
Q : Que faire si je dois traiter un grand nombre de demandes ?
R : sur la version entreprise du package résidentiel dynamique d'ipipgo, plus de 9 yuans de trafic 1G, prise en charge de l'extraction simultanée d'IP. n'oubliez pas d'ajouter l'intervalle de requête dans le code, pour ne pas faire exploser leurs serveurs.
Un petit arbre à pouces pour le choix des forfaits
Les trois paquets, ipipgo, sont les plus utilisés :
- Version standard dynamique : convient aux praticiens novices, plus de 7 yuans de trafic 1G
- Dynamic Enterprise Edition : un must pour le travail en équipe, supporte une concurrence élevée
- IP résidentielles statiques : essentielles pour les tâches à long terme, longue durée de survie de l'IP
La dernière chose à faire est de mélanger des IP proxy avec des IP locales pour réduire efficacement la probabilité d'être bloqué. Si vous utilisez ipipgo, rappelez-vous que leur API prend en charge la facturation horaire, n'achetez pas de forfaits mensuels pour des tâches de courte durée, et économisez de l'argent pour acheter des côtes.

