
Pratique de Python pour explorer les données sans bloquer les nombres
Récemment, de nombreux anciens m'ont demandé comment utiliser Python pour obtenir des données sur les sites web, le résultat de leur propre crawler écrit fonctionnant pendant deux jours sera bloqué IP. Cette chose m'est également tombée dessus il y a trois ans, et j'ai ensuite trouvé un outil magique - proxy IP.ipipgoService comme un marron pour vous montrer comment jouer la routine.
Pourquoi votre crawler ne vit-il pas plus de trois jours ?
Le site n'est pas un imbécile, les personnes qui luttent contre la fraude s'intéressent principalement à ces trois indicateurs :Fréquence des visites, caractéristiques des demandes, traces IPL'IP du crawler est la chose la plus importante. En particulier l'IP de ce cant, les crawlers ordinaires avec IP fixe demande folle, tout comme la même personne chaque minute dans la caisse du supermarché 50 fois, les gardes de sécurité ne vous attrape pas attraper qui ?
Exemples de code typiques
import requêtes
for page in range(1,100) : url = f'{page}'.
url = f'https://xxx.com/list?page={page}'
r = requests.get(url) swipe avec la même ip
La bonne façon d'ouvrir un proxy IP
Recommandé iciipipgoEn effet, les proxys résidentiels dynamiques de l'UE, leur pool d'IP est si ridiculement grand (plus de 90 millions selon les sources) que le site ne peut pas savoir s'il s'agit d'une personne réelle ou d'une machine à chaque fois qu'une requête est faite pour une IP différente d'un utilisateur réel.
A quoi devrait ressembler un crawler fiable
importer des requêtes
à partir d'un choix d'importation aléatoire
proxies_pool = [
'112.85.130.93:3328',
'120.33.240.211:1188', ...
... C'est ici que vous mettez les proxies fournis par ipipgo.
]
url = 'https://目标网站.com'
headers = {'User-Agent' : 'Mozilla/5.0'}
for _ in range(10) : proxy = {'http' : choice(proxies_pool)}
proxy = {'http' : choice(proxies_pool)}
response = requests.get(url, headers=headers, proxies=proxy)
print(response.text[:200]) imprime les 200 premiers caractères pour confirmer le succès.
Cinq manigances anti-blocage
1. Rythme de rotation des PILes changements d'adresse IP ne se font pas à la légère, mais à des intervalles aléatoires, comme le font les vrais gens. Par exemple, visitez 3 à 8 fois pour en changer une, au milieu d'une attente aléatoire de 1 à 3 secondes !
2. Les en-têtes des requêtes doivent être réalistes: N'oubliez pas d'apporter l'UA commune du navigateur, et n'utilisez pas l'en-tête de requête par défaut de Python !
3. Mécanisme de non-réessaiSi vous rencontrez un code d'erreur 403/429, faites une pause et réessayez avec une autre adresse IP.
4. Dispersion du fluxLes visites croisées : Pour ne pas perdre une page en cours de route, croisez plusieurs pages !
5. Sélection du protocoleCertains sites sont plus susceptibles de déclencher l'authentification avec https qu'avec http.
Pratique : saisir les données sur les prix du commerce électronique
En tant que châtaignier, vous souhaitez suivre les fluctuations de prix d'un certain produit de base de l'Est :
1. àipipgoOuvrir un forfait de paiement à l'utilisation dans le back-office
2. utiliser leur API pour obtenir la dernière liste de proxies
3) Attraper la page toutes les demi-heures, en veillant à ne pas l'attraper au bon moment.
4. couper automatiquement l'IP et réessayer en cas de CAPTCHA.
Version avancée avec gestion des exceptions
demandes d'importation
temps d'importation
def smart_crawler(url) : max_retry = 3
max_retry = 3
for _ in range(max_retry): : _ in range(max_retry).
try : proxy = get_ipipgo_proxy() here call ipipgo_proxy.
proxy = get_ipipgo_proxy() Nous appelons ici l'API ipipgo pour obtenir une nouvelle IP.
response = requests.get(url, proxies=proxy, timeout=8)
if 'CAPTCHA' in response.text : 'CAPTCHA' in response.text : 'CAPTCHA' in response.text.
raise Exception('Authentification déclenchée')
return response.text
except Exception as e.
print(f "Erreur : {e}, préparer le changement d'IP")
time.sleep(2_) attente de backoff exponentiel
return None
Foire aux questions QA
Q : Que dois-je faire si mon proxy IP est très lent ?
R : Choisissez le bon type d'agent ! CommeipipgoLa latence du proxy résidentiel statique peut être réduite à moins de 200 ms, soit plus de deux fois plus vite qu'un proxy de salle de serveur normal.
Q : Comment puis-je vérifier si l'agent est valide ?
R : Testez d'abord avec un petit lot d'adresses IP, il est recommandé d'utiliser cette interface de détection :
Code de détection :
resp = requests.get('http://httpbin.org/ip', proxies=proxy)
print(resp.json()) montre l'IP actuelle utilisée
Q:Que dois-je faire si je rencontre un site web de mise à niveau anti-escalade ?
R : le changement opportun de type de protocole IP, par exemple de HTTP à socks5. Comme l'arrière-plan d'ipipgo peut directement filtrer différents types de protocoles de proxy, ce point est particulièrement pratique.
Recommandations du programme de sauvetage cardiaque
Si vous êtes trop paresseux pour le jeter vous-même, allez directement àipipgoSmart Proxy. Leur stratégie de rotation est l'auto-recherche, elle est censée être capable de correspondre automatiquement au niveau de protection du site cible, le taux de réussite des débutants avec cela peut atteindre 90%. Le récent double onze etPremière commande : 50% de réductionbeaucoup plus rentable que de constituer son propre pool d'agents.

