Wenn Crawler auf CAPTCHA treffen? Versuchen Sie dies.
Kürzlich half ich meinem Freund, ein Preisüberwachungsskript zu erstellen, und schrieb einen Crawler in Ruby, aber am nächsten Tag hatte ich eine Pause - die Ziel-Website blockierte unsere IP. Erst dann erinnerte ich mich an die Sache mit der Proxy-IP, wie wenn man einen Eintopf isst und keine Dip-Soße findet und auf der Stelle nach einer Lösung sucht.
Wie funktioniert diese Nokogiri-Sache?
Reden wir nicht über Proxies, sondern über die grundlegenden Tools. Nokogiri ist ein HTML-Parser, der leicht zu installieren ist:
gem install nokogiri
Um eine Kastanie zu geben, wollen den Preis von Waren in einem E-Commerce-Seite zu fangen, ist der Code wahrscheinlich lang wie diese:
erfordern 'nokogiri'
erfordern 'open-uri'
html = URI.open('https://example.com/product').read
doc = Nokogiri::HTML(html)
Preis = doc.css('span.price-class').first.text
puts "Aktueller Preis: {Preis}"
zur Kenntnis nehmenCss-SelektorWenn man es richtig macht, ist es so, als würde man versuchen, einen Schlüssel in ein Zahnrad einzupassen, und wenn man in den Chrome-Entwicklertools mit der rechten Maustaste auf ein Element klickt und "Auswahl kopieren" auswählt, spart man sich eine Menge Arbeit.
Was tun, wenn Ihre IP blockiert ist? Proxy-IP zur Rettung
Der Punkt ist! Ein Single-IP-Hochfrequenzzugang ist so, als würde man mitten in der Nacht ein Dutzend Mal durch die Nachbarschaft schleichen, damit die Wachleute kein Auge auf einen werfen. Zu diesem Zeitpunkt ist es notwendigipipgovon Vertretungsdiensten zu vertuschen.
Hier ist das umgestaltete Skript:
erfordern 'nokogiri'
erfordern 'open-uri'
proxy_list = [
'http://username:password@gateway.ipipgo.com:8080',
'http://username:password@gateway.ipipgo.com:8081'
]
5.times do |i|
beginnen
html = URI.open('https://target-site.com',
:proxy => proxy_list.sample, 'Benutzer-Agent' => 'Mozilla/5.0 (Windows NT 10.0)
'Benutzer-Agent' => 'Mozilla/5.0 (Windows NT 10.0)'
).read
Der Parsing-Code ist derselbe wie oben
Rettung => e
Rettung => e
puts "{i+1}ter Versuch fehlgeschlagen: {e.message}"
end
end
Es wird hier verwendetipipgoEs werden mehrere Exit-IPs bereitgestellt, von denen jedes Mal eine zufällig ausgewählt wird. Es ist wie ein Guerillakrieg, bei dem man einen Schuss abgibt und dann die Plätze wechselt.
Praktischer Leitfaden zur Vermeidung der Grube
Nennen Sie ein paar häufige Fallouts für Neulinge:
Ausgaben | Verschreibung |
---|---|
SSL-Zertifikatsfehler | ssl_verify_mode: OpenSSL::SSL::VERIFY_NONE zur Anfrage hinzufügen |
Zeitüberschreitung beim Laden | Setzen Sie den Parameter read_timeout, empfohlen werden 10-30 Sekunden. |
Versiegeln Sie den User-Agent. | Generierung zufälliger Browser-Fingerabdrücke mit dem Faker-Gem |
Sie können fragen.
F: Kann der freie Mitarbeiter nicht eingesetzt werden?
A: Freie Agenten sind wie öffentliche Toiletten, jeder kann sie benutzen, aber sie können leicht blockiert werden. Kommerzielle Szenarien werden immer noch empfohlenipipgoDieser professionelle Dienst mit einem großen IP-Pool ist ebenfalls stabil.
F: Was sollte ich tun, wenn mein Agent langsam ist?
A: Wählen Sie einen Knoten in der Nähe der geografischen Lage, wie das Klettern der inländischen Website mit dem Ost-China-Server-Raum. ipipgo Hintergrund kann selbst gewählten Export-Bereich, ist dieser Punkt sehr bequem.
F: Wie kann ich feststellen, ob eine Vollmacht in Kraft ist?
A: Ein Skript hinzufügensetzt html[0..100]
Exportieren Sie den Anfang der Webseite und prüfen Sie, ob der Inhalt korrekt ist. Oder verwenden Sie eine Website eines Drittanbieters, um die Export-IP zu überprüfen.
Upgrade-Spiel
Was macht man mit dynamisch geladenen Daten? Sie können mit demselenium-webdriver
um die Proxy-Einstellungen gründlicher zu machen:
erfordern 'selenium-webdriver'
Optionen = Selenium::WebDriver::Chrome::Optionen.new
options.add_argument('--proxy-server=http://gateway.ipipgo.com:8080')
Treiber = Selenium::WebDriver.for :chrome, Optionen: Optionen
driver.navigate.to "https://target-site.com"
Auf diese Weise können sogar JS gerenderte Seiten erfasst werden, was dem Crawler entspricht, der ein Teleskop installiert hat.
Schließlich ist die Verwendung einer Proxy-IP wie das Anlegen eines Sicherheitsgurtes im Auto, der in der Regel lästig ist, aber in kritischen Momenten Ihr Leben retten kann. Vor allem bei kommerziellen Crawlern sollte man nicht an diesem Budget sparen.ipipgovon neuen Nutzern haben Probepakete, die viel weniger kosten, um in die Bresche zu springen.