
Quand le crawler rencontre l'anti-climbing - proxy ip rescue posture
Les gens utilisent Python pour s'engager dans le crawling de données, en contournant sûrement Requests et Scrapy, ces deux vieux compagnons. Ces deux produits ressemblent au travail des crawlers, mais l'utilisation réelle de la différence peut être beaucoup. Aujourd'hui, nous allons parler d'eux et de proxy ip avec l'utilisation, en particulier notreipipgoComment le service mandataire de la maison joue-t-il du côté de ces deux bibliothèques.
Guerre de groupe contre guerre de guerre
Les requêtes sont comme un couteau suisse, si vous voulez récupérer une page web temporairement, vous pouvez le faire en trois lignes de code. Mais lorsque vous rencontrez un scénario dans lequel vous devez changer un grand nombre d'ips, vous devez écrire votre propre logique de rotation :
import requests
from ipipgo import get_proxy Notre propre interface proxy.
def grab_data(url) : proxy = get_proxy()
proxy = get_proxy() Récupération aléatoire d'un proxy de haute qualité
try : resp = requests.get(url) : proxy = get_proxy()
resp = requests.get(url, proxies={"http" : proxy, "https" : proxy}, timeout=10)
return resp.text
except.
print("This ip may be banned, automatically switching to the next one.")
return grab_data(url) recursive retry
Scrapy est une usine d'automatisation, avec son propre mécanisme de middleware qui rend la rotation de proxy très pénible. Configurez-le dans settings.py.ipipgoet toute la force du crawler est automatiquement habillée :
DOWNLOADER_MIDDLEWARES = {
'scrapy.downloadermiddlewares.httpproxy.HttpProxyMiddleware' : 100,
}
IPIPGO_API = "https://api.ipipgo.com/rotate" interface de pool d'ip dynamique
def process_request(self, request, spider).
request.meta['proxy'] = self.get_proxy() Accroche automatiquement le proxy pour chaque requête.
Fiche d'information sur la comparaison de la consommation par procuration
| prendre | Demande de consommation | Consommation de ferraille |
|---|---|---|
| Saisir 1000 pages | Environ 30-50 ip | Contrôlable dans un délai de 10 |
| Rencontrer le CAPTCHA | Remplacement manuel nécessaire | Commutation automatique des fusibles |
| l'exploration distribuée | État de synchronisation difficile | Groupes de soutien naturel |
Guide pratique de sélection
Il est conseillé aux frères qui débutent d'utiliser d'abord Requests+.ipipgod'un paquet proxy statique qui fixe l'utilisation de l'ip d'une région comme ceci :
proxies = {
"http" : "121.36.84.149:8008", canal exclusif copié depuis le backend ipipgo
"https" : "121.36.84.149:8008"
}
Quand vient le temps d'un gros projet, n'oubliez pas de passer à Scrapy + dynamic agent pooling. Nous allonsipipgoL'interface de planification intelligente peut automatiquement faire correspondre l'adresse IP résidentielle ou l'adresse IP de la salle de serveurs en fonction de la force d'anti-escalade du site web cible, ce qui est beaucoup plus fiable que de s'en tenir à un seul type d'adresse IP.
Ancien conducteur QA Time
Q : Que dois-je faire si mon adresse IP est toujours bloquée ?
R : Vérifiez trois choses : 1. si l'anonymat du proxy est suffisamment élevé (avec le paquet Extreme Stash d'ipipgo) 2. si l'en-tête de la requête comporte une empreinte digitale du navigateur 3. si la fréquence des visites est comparable à celle d'une personne réelle
Q : Comment définir la fréquence de changement d'ip dans Scrapy ?
R : Ajoutez un compteur dans l'intergiciel de téléchargement, par exemple, changez l'adresse IP toutes les 5 requêtes. Lorsque vous utilisez le paquet concurrentiel d'ipipgo, il est recommandé de fixer la fréquence de changement à 200 fois ou moins en 1 minute.
Q : Est-il possible d'utiliser une procuration gratuite ?
R : Mon frère, tu es en train de te creuser un trou ! Les Free Agents 90% sont des pots de miel, et s'ils sont légers, ils perdront des données, et s'ils sont lourds, ils seront marqués par l'anti-escalade. NousipipgoPourquoi en utiliser un qui n'est pas fiable alors qu'il existe un forfait expérience à 5 $ pour les nouveaux abonnés.
Enfin dit une leçon en larmes : l'année dernière avec Requests pour attraper un site de commerce électronique, n'a pas accroché l'agent dur juste, les résultats d'une demi-heure a été bloqué l'ensemble de la salle de serveur sortie ip. plus tard remplacé par Scrapy + ipipgo agent résidentiel dynamique, accroché en cours d'exécution pendant trois jours et trois nuits n'a pas retourné la voiture. Donc ah, l'outil pour choisir le bon agent en place, c'est le roi des reptiles ne pas retourner la voiture !

