
Le crawler du site est bloqué IP ?
Récemment, plusieurs amis m'ont demandé ce qu'il fallait faire si mon IP était toujours bloquée par des sites web parce que j'écrivais des crawlers en Python. J'ai trop mon mot à dire dans ce domaine ! L'année dernière, dans le cadre d'un projet de comparaison des prix du commerce électronique, une plateforme a bloqué plus de 20 IP pendant trois jours consécutifs, ce qui m'a mis en colère et m'a presque fait éclater le clavier. Plus tard, j'ai découvert que l'utilisation d'un proxy IP était la bonne solution, et je partage aujourd'hui avec vous l'expérience du combat.
Pourquoi votre crawler ne survit-il pas à trois épisodes ?
De nombreux débutants ont tendance à ignorerDétection de la fréquence d'accèsCette fosse. En tant que marron, votre maison avec l'IP haut débit est fixe, jouez avec la saisie de données comme ceci :
import requests
for i in range(1000): : response = requests.get('')
response = requests.get('https://目标网站')
Traitement des données...
Le feu du site web n'est pas végétarien, le même accès à haute fréquence IP, tirer immédiatement le noir n'est pas négociable.
La bonne façon d'ouvrir un proxy IP
C'est là qu'interviennent les grands tueurs.Service Proxy IPLe principe ressemble à un jeu de "peinture sur visage", où chaque demande change d'adresse IP. Le principe ressemble à un jeu de "peinture sur visage", où l'adresse IP est modifiée à chaque demande. RecommandéipipgoLes proxies dynamiques, son pool d'IP est suffisamment grand pour que mon projet actuel appelle plus de 50 000 fois par jour et qu'il n'ait pas encore fait l'objet d'un roulement.
| Type d'agent | Durée de conservation | Scénarios applicables |
|---|---|---|
| IP résidentielle dynamique | 3-15 minutes | Acquisition de données à haute fréquence |
| IP statique de l'entreprise | 1-30 jours | Besoins de stabilisation à long terme |
Configuration du proxy Python en cinq étapes
Prenez par exemple le proxy API d'ipipgo (n'utilisez pas de proxies gratuits ! 99% sont des pires) :
demandes d'importation
proxies = {
'http' : 'http://用户名:密码@gateway.ipipgo.com:端口',
'https' : 'http://用户名:密码@gateway.ipipgo.com:端口'
}
N'oubliez pas d'ajouter un délai d'attente et un mécanisme de réessai
try.
response = requests.get('destination URL', proxies=proxies, timeout=10)
print(response.text)
except Exception as e.
print(f'Request failed : {str(e)}')
Rappel ciblé :
1) Il est conseillé de changer l'IP du proxy avant chaque requête (ipipgo supporte la rotation automatique).
2. fixer une latence raisonnable, ne pas faire planter le serveur web
3. fonctionne mieux avec un User-Agent aléatoire.
Guide pratique pour éviter la fosse
J'ai rencontré un problème typique lorsque j'ai aidé un ami à déboguer un crawler le mois dernier : il utilisait manifestement un proxy, mais il était toujours reconnu. Plus tard, j'ai découvert qu'il s'agissait d'unLes cookies révèlent l'adresse IP réelleLa solution est simple. La solution est simple, désactiver les cookies dans requests.Session() :
session = requests.Session()
session.trust_env = False key setting !
response = session.get(url, proxies=proxies)
Foire aux questions QA
Q : Dois-je utiliser un proxy payant ?
R : Les proxys gratuits peuvent être utilisés pour des tests à court terme, mais les services professionnels comme ipipgo sont fortement recommandés pour les projets commerciaux. J'ai essayé un proxy gratuit la semaine dernière, et 8 IP sur 10 ont échoué, ce qui a été une perte de temps.
Q : Comment puis-je savoir si une procuration est en vigueur ?
R : Visitez https://www.ipipgo.com/checkip pour voir si l'adresse IP renvoyée a changé.
Q : Que dois-je faire si je rencontre une erreur de certificat SSL ?
R : ajouter le paramètre verify=False à requests.get(), mais il n'est recommandé de l'utiliser qu'à des fins de test.
Enfin, faire un crawl de données pour se conformer à l'accord des robots du site web. L'utilisation d'ipipgo, ce type de proxy à forte réserve, permet également de contrôler la fréquence des requêtes, d'effectuer un crawler moral et de créer un ingénieur ~ !

