
Apprentissage pratique de l'utilisation d'un proxy IP pour glaner des données Twitter en toute sécurité
Récemment, plusieurs de mes amis étrangers se sont plaints du fait que l'utilisation de scripts pour capturer des données Twitter entraînerait un blocage de l'adresse IP.ipipgoLe pool d'IP dynamiques est la seule solution complète. Aujourd'hui, je vais vous présenter mon expérience concrète et m'assurer que vous pourrez jouer avec la collecte de données Twitter après avoir lu cet article.
Pourquoi votre crawler est-il toujours bloqué ?
Le mécanisme anti-crawl de Twitter est plus avisé que ses propres patrons, car il s'intéresse à trois paramètres principaux :
| élément de surveillance | champ de mines commun | méthode régler un problème |
|---|---|---|
| Fréquence des demandes d'IP | 10 demandes en 1 seconde | Contrôle 5 secondes/fois |
| Géolocalisation IP | Beijing IP balaie les tweets américains dans une frénésie matinale | Utilisation de l'IP résidentielle locale |
| User-Agent | Toutes les demandes sont identifiées par le même navigateur | Changement aléatoire de modèles de dispositifs |
Le regroupement dynamique d'adresses IP est une véritable affaire
Avant, utiliser une IP proxy fixe, c'était comme prendre une douche dans un mackintosh - il fallait se mouiller. Puis je suis passé àipipgoL'IP dynamique résidentielle, chaque demande change automatiquement l'IP réelle de l'utilisateur. Après 12 heures de capture continue, le taux de réussite est stable à 98% ou plus.
importation de requêtes
from itertools import cycle
L'adresse du proxy pool fourni par ipipgo
proxy_pool = [
'103.21.163.76:8000',
'45.89.123.142:3128', '198.55.112.89:8080', '198.55.112.89:8080'
'198.55.112.89:8080'
]
proxies = cycle(proxy_pool)
for page in range(1, 100) : current_proxy = next(proxies)
current_proxy = next(proxies)
current_proxy = next(proxies)
response = requests.get(
'https://api.twitter.com/xxx', proxies={'http' : current_proxy}, current_proxy = next(proxies)
proxies={'http' : current_proxy},
timeout=10
)
Traitement des données...
except Exception as e.
print(f "Changement d'IP pour continuer : {current_proxy} kneeling")
Un guide pour éviter les pièges (indispensable pour les débutants)
N'utilisez pas l'IP d'un centre de données !Twitter reconnaît désormais les segments IP des salles de serveurs et l'utilisation de ces IP équivaut à se faire exploser. Choix suggérésipipgoLes forfaits IP résidentiels, leurs IP sont tous des IP domestiques à large bande, et leur efficacité a été personnellement testée.
Ne soyez pas trop régulier dans vos intervalles de demande, tous les opérateurs humains ont les mains qui tremblent. Il est recommandé d'utiliser un délai aléatoire :
import random
Importation du temps
Attendre aléatoirement 3 à 8 secondes
time.sleep(random.randint(3,8))
Kit de premiers secours QA
Q : Pourquoi suis-je toujours bloqué avec une adresse IP proxy ?
R : 80 % des IP ne sont pas de bonne qualité ou la fréquence des demandes est trop élevée. Remplacer paripipgod'un pool d'adresses IP de qualité, tout en augmentant l'intervalle entre les requêtes à 5 secondes ou plus.
Q : Combien de PI sont nécessaires pour être suffisants ?
R : 50 adresses IP tournantes suffisent si vous collectez 10 000 données par jour. Ne soyez pas trop gourmand.ipipgoL'offre de base est parfaitement adéquate.
Q : Que dois-je faire si je rencontre un CAPTCHA ?
R : Désactivez immédiatement l'IP actuelle, changez la nouvelle IP pour réduire la vitesse de collecte. Si vous n'y arrivez vraiment pas, vous pouvez m'envoyer un message privé pour que je vous donne une opération sordide d'anti-CAPTCHA.
Dites la vérité.
Ne croyez pas à ces proxys gratuits, soit la vitesse est lente, soit le temps de survie est court. J'ai utilisé une IP gratuite au début, mais je n'ai pas obtenu beaucoup de données, mais j'ai été implanté avec des scripts de minage. Maintenant j'utiliseipipgoLe forfait mensuel, 1G de bande passante + IP exclusive, revenait à seulement deux dollars par jour, bien moins cher que l'achat d'un café.

