
Le téléchargement d'images par Python est bloqué ? Essayez cette astuce de proxy IP
Les frères Crawler ont-ils rencontré ce problème ? Lorsque vous utilisez la bibliothèque requests pour télécharger des images, l'IP est soudainement bannie, et vous ne pouvez pas récupérer les données. Aujourd'hui, je vais vous apprendre un joker - mettre une IP proxy sur votre script Python, surtout si vous utilisez la librairieipipgoLe service à domicile a été testé pour contourner le problème de blocage de 90%.
Comment connectez-vous exactement une IP proxy dans le code ?
En clair, il s'agit d'ajouter un paramètre proxies à la requête, pour donner un marronnier :
demandes d'importation
Remplir les proxies fournis par ipipgo ici.
proxies = {
'http' : 'http://用户名:密码@gateway.ipipgo.com:端口', 'https' : 'http://用户名:密码@gateway.ipipgo.com:端口'
'https' : 'http://用户名:密码@gateway.ipipgo.com:端口'
}
response = requests.get('image address', proxies=proxies, timeout=10)
Enregistrer le fichier
avec open('demo.jpg', 'wb') as f.
f.write(response.content)
Remarque : de nombreux sites web vérifient l'en-tête de la requête. De nombreux sites web vérifient l'en-tête de la requête, il est recommandé d'ajouter User-Agent pour se faire passer pour un navigateur :
headers = {
User-Agent' : 'Mozilla/5.0 (Windows NT 10.0 ; Win64 ; x64) ...'
}
response = requests.get(url, headers=headers, proxies=proxies)
Pourquoi recommandez-vous le proxy d'ipipgo ?
Après avoir fait appel à sept ou huit prestataires de services d'agence, celui-ci présente les trois avantages les plus tangibles :
1. les accords sont pleinement actifs
Prise en charge de HTTP/HTTPS/Socks5, trois protocoles courants, en particulier leur ligne transfrontalière, la vitesse de l'image à l'étranger peut monter en flèche jusqu'à 3MB/s + !
2. commutation automatique des pools d'adresses IP
Les paquets résidentiels dynamiques sont livrés avec une rotation d'IP, il n'est pas nécessaire d'écrire votre propre logique de commutation, ce qui est particulièrement adapté aux scénarios de téléchargement par lots.
3. comparaison des prix des forfaits
| Type d'emballage | Scénarios applicables | prix de l'article |
|---|---|---|
| Dynamique résidentielle (standard) | Acquisition d'images pour les petites et moyennes entreprises | 7,67 $/GB |
| Maisons statiques | Services nécessitant un IP fixe | 35RMB/IP |
Guide pour éviter la fosse (Foire aux questions AQ)
Q : Le proxy s'est-il installé avec succès ou a-t-il été interdit ?
R : la probabilité est que la qualité de l'IP n'est pas bonne, changer les paquets résidentiels statiques ipipgo, leur cycle de survie IP est 2 à 3 fois plus long que les homologues.
Q : Que dois-je faire si je suis bloqué au milieu du téléchargement ?
R : ajouter un mécanisme de réessai dans le code et vérifier l'état de la connexion au proxy. Le client ipipgo dispose d'une surveillance du trafic en temps réel, ce qui permet de localiser rapidement le nœud problématique.
Q : Que se passe-t-il si je dois gérer des centaines de tâches de téléchargement en même temps ?
R : Utilisez plusieurs threads ! Mais veillez à ce que le nombre de threads ne dépasse pas la limite de simultanéité du progiciel proxy. Utilisez le paquet Enterprise d'ipipgo, qui prend en charge jusqu'à 500 concurrences !
Conseils avancés : Commutation intelligente des pools de serveurs mandataires
Changeant automatiquement de proxy lorsqu'un téléchargement échoue, ce modèle de script peut être copié directement à partir des devoirs :
from itertools import cycle
Liste des proxies de l'API ipipgo
proxy_list = [
'http://ip1:port',
'http://ip2:port', ...
... Préparer au moins 10 IP
]
proxy_pool = cycle(proxy_list)
retry = 3
for _ in range(retry) : proxy = next(proxy_pool)
proxy = next(proxy_pool)
try.
response = requests.get(url, proxies={'http' : proxy}, timeout=15)
if response.status_code == 200: : response.status_code
if response.status_code == 200 : break
except Exception as e : print(f"{proxy}
print(f"{proxy} accroché, le suivant...")
Enfin, n'utilisez pas de proxy gratuits ! Les nouveaux utilisateurs d'ipipgo bénéficient d'un forfait d'expérience de 5 yuans, essayez-le vous-même pour savoir où se situe l'écart.

