
Quand un crawler se heurte à une interdiction ? Essayez cette routine qui vous sauvera la vie
Les anciens conducteurs qui s'engagent dans le crawling comprennent que le plus grand casse-tête est le site cible qui vous donne soudainement une interdiction d'IP. La semaine dernière, j'ai aidé un ami à traiter un cas : leur entreprise à escalader les informations de l'appel d'offres, trois jours consécutifs sur le temps d'être bloqué, le département technique anxieux a sauté directement aux pieds. C'est le moment d'inviter le protagoniste de l'exposé d'aujourd'hui - l'IP.Utilisation flexible des IP proxy.
L'alphabétisation de type agent à ne pas manquer pour les débutants
Il existe trois grands types d'agents sur le marché, et le choix du bon type d'agent peut entraîner moins de problèmes :
| typologie | Scénarios applicables | Durée de conservation |
|---|---|---|
| Agents de salle de serveurs | Coup d'œil furtif | 2-12 heures |
| Agent résidentiel | Collecte de données sociales | 15-30 minutes |
| Agent mobile | Capture de données APP | demande unique |
Par exemple, à l'instar de la famille ipipgoPool dynamique d'agents résidentielsDans le passé, lors de la collecte d'une plateforme de commerce électronique, le blocage n'était pas déclenché pendant 48 heures d'affilée. Leur cycle de survie IP est contrôlé en environ 20 minutes de commutation automatique, parfaitement adapté au besoin de remplacement fréquent de la scène.
Quatre étapes pour une configuration réelle
Voici un exemple de la bibliothèque de requêtes de Python, mais le principe est général :
1. d'abord dans l'arrière-plan de l'ipipgo pour générer la clé API
2. utiliser leurInterface de routage intelligenteObtenir les derniers proxys
3. configurer le mécanisme de répétition automatique (3 tentatives recommandées)
4) Définir des intervalles de requête aléatoires (ne pas être idiot et faire des requêtes fixes par seconde)
Importation de requêtes
from retrying import retry
def get_proxy() : return ipipgo.get_proxy()
return ipipgo.get_proxy() Ceci remplace l'interface réelle
@retry(stop_max_attempt_number=3)
def crawler(url).
proxy = {"http" : get_proxy(), "https" : get_proxy()}
return requests.get(url, proxies=proxy, timeout=10)
Révélation de la stratégie de transfert dynamique
Ne pensez pas que parce que vous êtes en contact avec un agent, tout va bien se passer, j'ai vu trop de gens se faire piéger par des tactiques de transfert. N'oubliez pas trois points essentiels :
- Concurrence ne dépassant pas 60% de l'ensemble des agents.(par exemple, avoir 100 IP et en utiliser jusqu'à 60 en même temps)
- Élimination automatique des IP lentes en fonction de la vitesse de réponse (celles qui dépassent 3 secondes sont directement jetées dans la liste noire)
- Réduire la fréquence des changements de façon appropriée entre 2 et 5 heures du matin (c'est à ce moment-là que le mécanisme anti-escalade se relâche également).
ipipgo en a un.Fonction de programmation intelligenteTrès pratique, en fonction de la réponse du site cible, la stratégie est automatiquement ajustée. La dernière fois que j'ai collecté un site d'actualités, l'efficacité de la collecte a été directement doublée après l'ouverture de cette fonction.
Questions fréquemment posées Trousse de premiers secours
Q : Que dois-je faire si les serveurs mandataires tombent soudainement en panne en masse ?
R : Vérifiez d'abord si l'en-tête de la requête contient l'adresse IP réelle, puis vérifiez les paramètres de vérification du certificat. Il est recommandé d'utiliser celui fourni par ipipgo.Modèle de proxy tunnelLa question du certificat SSL peut être traitée automatiquement.
Q : Comment puis-je juger de la qualité d'un agent ?
R : Concentrez-vous sur trois indicateurs : le taux de réussite des réponses (>95%), la latence moyenne (<2 secondes) et le nombre de distributions géographiques. Le panneau de données d'ipipgo en arrière-plan permet de visualiser directement ces indicateurs.
Q : Comment faire correspondre plusieurs fils pour qu'ils ne soient pas en conflit ?
A : Se souvenirun fil, un agentEn principe, il ne faut jamais partager la même adresse IP avec plusieurs threads.agent détenteur de sessionqui permet de lier automatiquement les threads à des adresses IP.
Le nec plus ultra de l'anti-bannissement
Une dernière astuce :Mélange de plusieurs types d'agents. Par exemple, l'agent de la salle des serveurs est utilisé pour gérer les téléchargements d'images, l'agent résidentiel est utilisé pour gérer les demandes d'API, puis l'agent mobile est utilisé pour gérer le lien d'authentification de la clé. Sous ces multiples déguisements, le mécanisme de blocage devient essentiellement une pose.
Il est essentiel de choisir un prestataire de services fiable. Un prestataire de services comme ipipgo qui peutAdapter les politiques des agents aux scénarios de l'entreprisequi sont bien meilleurs que ceux qui ne vendent que des forfaits fixes. Ils ont récemment mis en ligneDemande de fonction de déguisementMême si les empreintes digitales de TCP peuvent être simulées, il s'agit d'une sorte d'anti-blocage jusqu'à l'os.
En fin de compte, l'anti-blocage des crawlers est un jeu d'attaque et de défense. Tant que vous maîtrisez le couteau suisse de l'agent, ainsi qu'une stratégie raisonnable, vous pouvez en principe régler le problème de l'interdiction des 90%. Les autres 10% devront peut-être changer de position pour se battre à nouveau dans le jianghu.

