Le crawler Python est bloqué IP crack !
Les personnes engagées dans le crawling du vieux fer ont dû vivre cette scène : le programme fonctionnait bien, puis s'est soudainement bloqué, un coup d'œil à l'écran du journal rempli d'erreurs 429, 503. À ce moment-là, ne vous précipitez pas pour frapper le clavier, quatre-vingt pour cent du site cible pour bloquer votre IP. Aujourd'hui, nous allons voir comment utiliser la bibliothèque de requêtes + proxy IP pour sortir de ce mauvais pas.
Mettre une cape d'invisibilité sur un reptile
Les demandes de bibliothèques avec des agents reviennent à mettre une cape d'invisibilité sur un programme, en mettant l'accent sur l'aspect de la bibliothèque qui est le plus important pour l'utilisateur.objet de la sessionde l'application. Un exemple de châtaigne :
importation de requêtes
from itertools import cycle
Pool de proxy à partir de ipipgo
proxy_pool = cycle([
"http://user:pass@gateway.ipipgo.com:8001",
"http://user:pass@gateway.ipipgo.com:8002"
])
session = requests.Session()
session.proxies = {"http" : next(proxy_pool)}
Envoyez la requête comme d'habitude
response = session.get("https://target-site.com/data")
Voici une opération peu glorieuse : utiliseritertools.cycleJ'ai obtenu un proxy pool polling, beaucoup plus stable qu'un proxy simple. Le proxy d'ipipgo avec les paramètres d'authentification, n'oubliez pas de remplacer user et pass par votre propre compte.
Les mécanismes du pneu de secours sont importants
Même les meilleurs agents peuvent se montrer brusques. Il faut être prêt.double assurance: :
Type d'exception | stratégie de réponse |
---|---|
Erreur de connexion | Changer de proxy maintenant |
Délai d'attente | Temps d'attente prolongé |
HTTPError | Traitement selon le code de statut |
Exemple de code du monde réel :
from requests.adapters import HTTPAdapter
from urllib3.util.retry import Retry
retry_strategy = Retry(
retry_strategy = Retry(
status_forcelist=[429, 500, 502, 503, 504],
allowed_methods=["GET", "POST"]
)
adapter = HTTPAdapter(max_retries=retry_strategy)
session.mount('http://', adaptateur)
session.mount('https://', adaptateur)
Cette combinaison permet de relancer automatiquement les demandes qui ont échoué grâce à la fonctionClusters d'agents hautement disponiblesvous pouvez dire adieu à la gestion manuelle des exceptions.
L'équilibre entre vitesse et stabilité
Certains frères afin de poursuivre la vitesse du délai ajusté très bas, les résultats de l'erreur folle. Il est recommandé d'ajuster les paramètres en fonction du scénario de l'entreprise :
- Comparaison des produits : délai d'attente fixé à 3-5 secondes.
- Surveillance de l'opinion publique : le délai d'attente peut être ramené à 10 secondes.
- Capture d'image : mieux vaut l'associer à des demandes asynchrones
Testé avec ipipgo'sProxies statiques de longue duréeLe taux de réussite peut atteindre 98% ou plus en moins de 5 secondes, ce qui est beaucoup plus fiable que les proxies bon marché.
Guide du débutant pour éviter les pièges
Temps consacré à l'assurance qualité :
Q : Que dois-je faire si la vitesse de l'agent est rapide ou lente ?
R : Vérifiez si vous utilisez un pool de proxy partagé, modifiez le paramètreLignes exclusivesont un effet immédiat
Q : Que dois-je faire si ma connexion est toujours interrompue ?
R : Utilisez d'abord cette commande pour vérifier si le proxy fonctionne correctement :
curl -x http://gateway.ipipgo.com:8001 http://httpbin.org/ip
Q : Comment puis-je optimiser mon travail lorsque je dois traiter un grand nombre de demandes ?
R : Assurance double du pool de fils en ligne + du pool d'agents, n'oubliez pas de régler le paramètre de l'assurance double.limite de vitesseNe faites pas tomber leurs serveurs.
les Grands Tueurs de Mystères (jeu)
Enfin, nous dévoilerons une technologie obscure - l'utilisation deChangement de lieu de travail de l'agentDéjouer les restrictions régionales. Par exemple, certains sites web sont plus indulgents pour l'accès au nord, avec le site ipipgo'sAgents ciblés au niveau de la villeL'accès "localisé" est facile à réaliser.
Spécifier la sortie de la salle de serveurs de Shanghai
custom_proxy = "http://user:pass@sh.node.ipipgo.com:8800"
Cette technique fonctionne particulièrement bien lorsqu'il s'agit de comparer des données régionales, et ceux qui l'utilisent le savent.
En fin de compte, le proxy IP joue 6 ou pas 6, la clé est de regarder le fournisseur de service fiable ou pas. J'utilise ipipgo depuis une demi-année, et j'ai vu leur homeDétection de survie IPrépondre en chantantMécanisme de remplacement automatiqueEn effet, sauver le cœur, qu'avant l'utilisation de ces plates-formes de faisan est trop forte. En particulier pour les projets de crawler à long terme, il n'est vraiment pas nécessaire d'économiser un peu d'argent de proxy, le blocage d'une perte de données IP peut être beaucoup plus coûteux que les frais de proxy.