Vorbei request limit in dem Crawlen einer Website
Arbeite ich an einem web-crawler, dass die Indizes der Seiten, die nicht indiziert werden sollen.
Mein Erster Versuch:
Ich schrieb eine c# - crawler, der geht durch jede Seite und lädt Sie herunter.
Dies führte zu meiner IP geblockt wird von Ihren Servern innerhalb von 10 Minuten.
Zog ich es zu amazon EC2 und schrieb eine verteilte python-Skript, das ausgeführt wird, etwa 50 Instanzen. Dies bleibt nur knapp über der Schwelle von Booten mir. Dies sind auch Kosten über $1900 pro Monat...
Zog ich wieder zu meiner ursprünglichen Idee, und legte es hinter eine verkürzte version des TOR-Netzwerks. Dies funktionierte, war aber sehr langsam.
Ich bin aus Ideen heraus. Wie kann ich an Ihnen vorbei, blockiert mich für die wiederholten Anfragen.
Dem ich sage, "blockieren" Sie sind tatsächlich geben Sie mir eine random 404 nicht gefunden " - Fehler auf Seiten, die definitiv existieren. Es ist zufällig und nur beginnt, die passiert, nachdem ich den pass über 300 Anfragen in einer Stunde.
Du musst angemeldet sein, um einen Kommentar abzugeben.
OK, zuerst mal: wenn ein website doesn T wollen Sie zu kriechen, es zu oft, dann sollten Sie nicht! Es ist grundlegende Höflichkeit, und Sie sollten immer versuchen sich daran zu halten.
Aber ich verstehe, dass es gibt einige websites, wie Google, die verdienen Ihr Geld durch Crawlen Ihrer website den ganzen Tag und wenn Sie versuchen, kriechen Google, dann sperren Sie dich.
Lösung 1: Proxy-Server
In jedem Fall, die alternative zu bekommen einen Haufen EC2-Maschinen ist, um proxy-Servern. Proxy-Server sind VIEL billiger als EC2, Gehäuse und Punkt:
http://5socks.net/en_proxy_socks_tarifs.htm
Natürlich proxy-Server sind nicht so schnell wie die EC2-Bandbreite (wise), aber Sie sollten in der Lage sein, ein Gleichgewicht, wo Sie immer zu ähnlichen oder höheren Durchsatz als Ihre 50 EC2-Instanzen, die für deutlich weniger als das, was Sie jetzt zahlen. Dies beinhaltet Sie auf der Suche nach erschwinglichen proxies und finden diejenigen, die Sie geben ähnliche Ergebnisse. Eine Sache zu beachten ist hier, dass genauso wie du, es kann sein, anderen Menschen mit dem proxy-Dienst zum Crawlen der website, die Sie kriechen, und Sie möglicherweise nicht so schlau zu sein, wie Sie kriechen, so dass das ganze proxy-Dienst kann blockiert werden durch die Aktivität von einigen anderen client der proxy-Dienst (ich persönlich habe es gesehen).
Lösung 2: Du-Da-Proxy!
Dies ist ein wenig verrückt und ich habe es nicht getan, die Mathematik dahinter, aber Sie können beginnen, einen proxy-Dienst selbst und verkaufen proxy-Dienste für andere. Sie können nicht verwenden Sie alle Ihre EC2-Maschine, die Bandbreite sowieso, so dass der beste Weg für Sie, um Kosten zu sparen ist zu tun, was Amazon macht: sub-Leasing der hardware.
Verwenden von Proxys ist bei weitem der häufigste Weg, um dieses problem anzugehen. Es gibt andere höhere-Ebene-Lösungen anzubieten, die eine Art von "Seite" Download as a service" garantiert, bekommen Sie auch "saubere" Seiten (nicht 404, etc). Einer von Ihnen ist als Crawlera (von meiner Firma) aber es könnte auch andere.
Für diesen Fall habe ich in der Regel verwenden https://gimmeproxy.com die prüft proxy-jede Sekunde.
Laufen zu bringen-proxy, müssen Sie nur die folgende Anfrage:
Erhalten Sie JSON-Antwort mit alle proxy-Daten, die Sie später verwenden können, je nach Bedarf:
Immer, wenn ich zum bestehen der Anforderungen begrenzen die Seiten, die ich krabbele ich in der Regel tun Sie es mit proxycrawl, da dies der Schnellste Weg zu gehen.
Sie müssen nicht alles egal, Infrastruktur, IP-Adressen, blockiert usw...
Haben Sie eine einfache API, die Sie aufrufen können, so oft, wie Sie wollen, und Sie werden immer zurückkehren, Sie eine gültige Antwort ein überspringen der Grenzen.
So weit ich benutze es schon seit einigen Monaten und funktioniert Super. Sie haben sogar einen kostenlosen plan.