
Quand les robots d'indexation rencontrent les CAPTCHA ? Essayez ceci.
Récemment, j'ai aidé mon ami à créer un script de surveillance des prix et j'ai écrit un crawler en Ruby, mais le lendemain, j'ai eu un problème : le site web cible a bloqué notre IP. Ce n'est qu'à ce moment-là que je me suis souvenu de cette histoire d'IP proxy, un peu comme si je mangeais un plat chaud et que je ne trouvais pas de sauce, et que je cherchais une solution sur le champ.
Comment fonctionne cette histoire de Nokogiri ?
Ne parlons pas des proxys, il faut comprendre les outils de base, Nokogiri est un analyseur HTML, facile à installer :
gem install nokogiri
Pour donner un exemple, si l'on veut saisir le prix des marchandises dans une page de commerce électronique, le code est probablement long comme ceci :
nécessite 'nokogiri'
nécessite 'open-uri'
html = URI.open('https://example.com/product').read
doc = Nokogiri::HTML(html)
price = doc.css('span.price-class').first.text
puts "Prix actuel : {prix}"
prendre notesélecteur cssC'est comme essayer d'insérer une clé dans un engrenage, et un clic droit sur un élément dans Chrome Developer Tools et l'option Copy selector (Copier le sélecteur) vous épargnent beaucoup de travail.
Que faire si votre IP est bloquée ? Proxy IP à la rescousse
L'essentiel est là ! L'accès à haute fréquence par IP unique revient à se faufiler dans le quartier une douzaine de fois au milieu de la nuit pour que les agents de sécurité ne vous surveillent pas. À ce stade, il est nécessaire deipipgodes services de procuration pour se couvrir.
Voici le scénario remanié :
nécessite 'nokogiri'
nécessite 'open-uri'
proxy_list = [
'http://username:password@gateway.ipipgo.com:8080',
'http://username:password@gateway.ipipgo.com:8081'
]
5.times do |i|
begin
html = URI.open('https://target-site.com',
:proxy => proxy_list.sample, 'User-Agent' => 'Mozilla/5.0 (Windows NT 10.0)', 'User-Agent' => 'Mozilla/5.0 (Windows NT 10.0)'.
User-Agent' => 'Mozilla/5.0 (Windows NT 10.0)'
).read
Le code d'analyse est le même que ci-dessus
rescue => e
rescue => e
puts "Échec de {i+1}ème tentative : {e.message}"
end
fin
Il est utilisé iciipipgoPlusieurs adresses IP de sortie sont fournies, l'une d'entre elles étant sélectionnée au hasard à chaque fois. C'est comme mener une guérilla, tirer un coup et changer de place.
Guide pratique pour éviter la fosse
Citez quelques conséquences courantes pour les débutants :
| questions | prescription |
|---|---|
| Erreur de certificat SSL | Ajouter ssl_verify_mode : OpenSSL::SSL::VERIFY_NONE à la requête |
| Délai de chargement | Définissez le paramètre read_timeout, 10 à 30 secondes étant recommandées. |
| Sceau User-Agent | Générer des empreintes de navigateurs aléatoires avec la gemme Faker |
Vous pouvez poser la question.
Q : L'agent libre ne peut-il pas être utilisé ?
R : Les agents libres sont comme les toilettes publiques, tout le monde peut les utiliser mais elles sont facilement obstruées. Les scénarios commerciaux sont toujours recommandésipipgoCe service professionnel, qui dispose d'une vaste réserve d'adresses IP, est également stable.
Q : Que dois-je faire si mon agent est lent ?
R : Choisir un nœud proche de la situation géographique, par exemple escalader le site web national avec la salle des serveurs de la Chine orientale.
Q : Comment puis-je savoir si une procuration est en vigueur ?
A : Ajouter un scriptmet html[0..100]Exportez le début de la page web et vérifiez si le contenu est correct. Vous pouvez également utiliser un site web tiers pour vérifier la propriété intellectuelle de l'exportation.
Mise à niveau du jeu
Que faire des données chargées dynamiquement ? Vous pouvez utiliser la fonctionselenium-webdriverpour rendre les paramètres du proxy plus complets :
nécessite 'selenium-webdriver'
options = Selenium::WebDriver::Chrome::Options.new
options.add_argument('--proxy-server=http://gateway.ipipgo.com:8080')
driver = Selenium::WebDriver.for :chrome, options : options
driver.navigate.to "https://target-site.com"
De cette manière, même les pages rendues en JS peuvent être capturées, ce qui équivaut à l'installation d'un télescope par le crawler.
Enfin, l'utilisation d'une IP proxy est comme le port d'une ceinture de sécurité dans une voiture, qui est généralement gênante, mais qui peut vous sauver la vie dans des moments critiques. En particulier pour les crawlers commerciaux, n'économisez pas sur ce budget.ipipgodes nouveaux utilisateurs ont des formules d'essai qui coûtent beaucoup moins cher.

