
Quand les chenilles frappent les anti-chenilles, les agents de graissage viennent à la rescousse
Si vous êtes un crawler, vous savez que Nokogiri est le meilleur parseur de pages web de la communauté Ruby, mais dernièrement, j'ai reçu beaucoup de plaintes de gens qui disent que dans les deux jours qui suivent l'écriture d'un script, le site cible est banni. Mais récemment, j'ai reçu beaucoup de plaintes de personnes qui disent qu'elles viennent d'écrire un script de crawler qui fonctionne pendant quelques jours puis est banni du site cible. C'est comme manger un hot pot sans sauce - c'est presque amusant.
La semaine dernière, un ami a mis en place un système de comparaison des prix. Lors de la saisie des prix d'une certaine plate-forme de commerce électronique, trois changements consécutifs d'adresse IP du serveur ont été bloqués. Je l'ai alors laissé essayerProxy résidentiel dynamique pour ipipgoLes gentils, eux, reviennent à la vie au même endroit. L'astuce est en fait simple :Avec une adresse IP au niveau de l'utilisateur réel, le site ne peut pas savoir s'il s'agit d'une machine ou d'une personne réelle..
Le gilet de Nokogiri à l'œuvre.
Commençons par examiner un modèle de configuration de base (n'oubliez pas de remplacer votre_api_key par le jeton réel que le backend ipipgo reçoit) :
nécessite 'nokogiri'
nécessite 'net/http'
Récupérer le proxy dynamique ipipgo
def fetch_proxy
api_url = "https://api.ipipgo.com/v1/proxy?key=your_api_key&type=rotating"
response = Net::HTTP.get(URI(api_url))
JSON.parse(response)['proxies'].sample
fin
proxy = fetch_proxy
uri = URI('https://target-site.com')
Net::HTTP.start(uri.host, uri.port, proxy_addr : proxy['ip'], proxy_addr.
proxy_addr : proxy['ip'],
proxy_port : proxy['port'],
proxy_user : proxy['username'],
proxy_pass : proxy['password']) do |http|
doc = Nokogiri::HTML(http.get(uri.path).body)
Opérations d'analyse subséquentes...
fin
En voici quelques-unsGuide pour éviter la fosse: :
- Il est préférable de créer un nouveau proxy pour chaque demande (la fonction d'auto-rotation d'ipipgo est très utile).
- Faites attention au type de contrat d'agence, les sites de commerce électronique ayant un taux de réussite plus élevé pour les agents résidentiels.
- Ne fixez pas le délai d'attente à plus de 15 secondes, sous peine d'affecter l'efficacité de la collecte.
Exemples d'opérations douteuses dans le monde réel
Scénario 1 : Dépassement de la limite de fréquence
Je fais de la veille d'opinion pour un client qui a besoin d'explorer un certain forum à la recherche de nouveaux messages toutes les heures. Utiliser la fonctionforfait de facturation basé sur la quantitéDans l'en-tête de la requête, le changement aléatoire de User-Agent, avec un pool d'IP proxy, a gelé le taux de réussite de la collecte de 37% à 92%.
Scénario 2 : Déjouer le géo-blocage
Dans le cadre d'un projet de service de vie locale, il est nécessaire de collecter des données sur les commerçants de différentes villes. Grâce à l'ipipgoAgents de localisation au niveau de la villeIl peut obtenir avec précision l'adresse IP de la région spécifiée et contourner avec succès le mécanisme de filtrage géographique du site web.
| Type anti-crawl | Programme de réponse | Type d'agent recommandé |
|---|---|---|
| Limitation de la fréquence IP | Rotation dynamique + intervalle de demande | Agents de centre de données |
| le blindage géographique | IP statique de longue durée | Agent résidentiel |
Cinq questions à poser absolument
Q : Le proxy IP ralentira-t-il la vitesse de collecte ?
R : Les lignes premium d'ipipgo répondent en moyenne en 800 ms, ce qui est beaucoup plus rapide que de réessayer après avoir été bloquées !
Q : À quelle fréquence convient-il de changer d'adresse IP ?
R : Il est recommandé de modifier les sites Web à fort impact sur l'escalade à chaque demande. Les sites Web ordinaires peuvent être modifiés en 5 minutes.
Q : Que dois-je faire si je rencontre un site web HTTPS ?
R : Le proxy d'ipipgo prend entièrement en charge les connexions SSL, n'oubliez pas d'utiliser https://开头 dans le code.
Q : Comment gérer les agents avec plusieurs fils d'indexation ouverts en même temps ?
R : Utilisez l'API d'ipipgo pour obtenir des pools de proxy en vrac, chaque thread étant assigné individuellement.
Q : Quelle est la différence entre un agent libre et un agent rémunéré ?
R : Les serveurs mandataires gratuits sont comme des toilettes publiques : tout le monde peut les utiliser, mais au moment de les utiliser, vous risquez de ne pas pouvoir trouver d'arrêt. Les serveurs mandataires exclusifs d'ipipgo sont l'équivalent de toilettes privées, à la fois propres et stables.
Dites quelque chose qui vient du cœur.
En fait, avec le proxy IP avec le jeu pour ouvrir le plug-in comme, la clé pour agir naturellement. Il ne faut pas que tout le script soit cliqué et saisi, le résultat est d'utiliser l'IP de la chambre IP, ce qui n'est pas évident pour dire aux gens que vous êtes un robot. ipipipgopool d'agents de sélection mixtesLe fait de pouvoir mélanger l'IP résidentiel, l'IP des centres de données et l'IP mobile est un jeu de haut niveau.
Un dernier conseil : ne soyez pas paresseux sur le User-Agent ! J'ai vu des gens utiliser Nokogiri pour récupérer des données, et tous les User-Agents de toutes les requêtes montrent Ruby/nethttp, donc cela ne demande qu'à être banni. Avec l'utilisation de l'agent ipipgo, n'oubliez pas d'ajouter un tableau de User-Agent aléatoire dans le code, c'est la qualité de base des joueurs professionnels.

