
Quand les crawlers se heurtent au blocage d'IP ? Essayez cette astuce de Jedi
Qu'est-ce qui vous effraie le plus en tant que crawler ? Ce n'est pas le mécanisme anti-escalade, ce n'est pas le CAPTCHA, le pire c'est l'apparition soudaine duAlerte de blocage IPJ'ai un ami qui compare le commerce électronique ! J'ai un ami qui fait de la comparaison de commerce électronique, pendant trois jours consécutifs une plateforme a bloqué plus de vingt IP, soucieux de glaner des cheveux. Plus tard, il a eu recours à une astuce - la rotation des adresses IP par proxy, ce qui a rendu difficile l'extraction des données.
importation de requêtes
from itertools import cycle
ip_pool = [
'124.124.124.124:9999', ...
... Plus d'IP proxy fournies par ipipgo
]
proxy_cycler = cycle(ip_pool)
for page in range(1, 101) : current_proxy = next(proxy_cycler)
current_proxy = next(proxy_cycler)
proxies = {
'http' : f'http://{current_proxy}',
'https' : f'https://{current_proxy}'
}
response = requests.get(url, proxies=proxies)
Traitement des données JSON renvoyées...
La bonne façon d'ouvrir un proxy IP
Une erreur que de nombreux débutants ont tendance à commettre est la suivanteConsidérez l'agent comme un passe-partout.. Voici une astuce pour la bande :La qualité de la propriété intellectuelle plutôt que la quantitéJe ne suis pas sûr de pouvoir le faire. J'ai déjà utilisé des proxys gratuits, et neuf IP sur dix ont expiré, et l'IP restante a été masquée par le site cible.
Recommandé pour ipipgoAgents résidentiels dynamiquesLe pool d'IP est mis à jour tous les jours, et le taux de réussite mesuré peut aller jusqu'à 95% et plus. La clé est d'apprendreStratégie de commutation intelligenteNe soyez pas stupide et ne changez pas d'adresse IP pour chaque requête, vous devez vous adapter dynamiquement en fonction du code de statut de la réponse.
Les trois grands mystères du traitement des données JSON
Ne vous précipitez pas pour analyser les données dès que vous les recevez, mais examinez d'abord ces trois points :
- Le Content-Type de l'en-tête de la réponse est-il application/json ?
- Si les données ont été compressées par gzip ou non (on a rencontré le fiasco du retour d'un code brouillé).
- Les champs clés sont-ils cryptés de manière dynamique (par exemple, le prix devient encodé en Base64) ?
import json
from json.decoder import JSONDecodeError
try : data = response.json()
data = response.json()
except JSONDecodeError :
Gestion des exceptions
if 'gzip' in response.headers.get('Content-Encoding',''): : data = json.loads(response.content.decode('utf-8'))
data = json.loads(response.content.decode('utf-8'))
Des problèmes sur le terrain
Un exemple concret : l'anti-crawl d'un site de voyage sera détectéSituation géographique de l'IP. Utiliser la fonctionAgents de localisation au niveau de la villeEn faisant correspondre l'IP de la demande avec l'ID de la ville dans le paramètre de la demande, le taux de réussite passe directement de 40% à 90% !
| prendre | Type d'agent recommandé | Fréquence de commutation |
|---|---|---|
| Acquisition générale de données | Agents de centre de données | Toutes les 5 minutes |
| Site web de la haute défense | Agents résidentiels dynamiques | Par demande |
Lignes directrices sur le déminage des problèmes courants
Q : Les adresses IP proxy ne fonctionnent pas lorsque je les utilise ?
R : 80% d'entre eux utilisent des proxies de qualité inférieure, choisissez ceux d'ipipgo.Validation en temps réel des pools d'agentsL'activité IP est automatiquement détectée avant chaque requête.
Q : Les données renvoyées sont toujours incomplètes ?
R : Vérifiez le paramètre Accept-Encoding dans l'en-tête de la requête, car certains sites web renvoient des données de format différent en fonction de ce paramètre.
Q : Les agents sont lents au point d'être sceptiques ?
R : N'utilisez pas de proxies gratuits ! ipipgo'sAccès exclusif au haut débit实测在200ms以内
Un dernier conseil : être un crawler, c'est comme mener une guérilla.Ne le faites pas.Il faut être intelligent. Raisonnablement avec le proxy IP et la stratégie de requête, avec le système de programmation intelligent d'ipipgo, vous découvrirez que beaucoup de murs apparemment en cuivre et en fer du site, en fait, la vulnérabilité est plus qu'une passoire...

