2016-06-21 9 views
0

So habe ich eine Nokogiri Web kratzen läuft perfekt auf meinem lokalen Rechner.mit einem Proxy mit einer Schiene URL-Link

Wenn ich jedoch versuche, das Web-Scrape in meiner Produktionsumgebung auszuführen, wird ein 403-Fehlercode angezeigt.

Ich glaube, dies ist bis auf die Webseite meine IP meines Servers blockiert (wahrscheinlich, weil frühere Menschen, dass die IP verwenden, haben es blockiert)

Ist es möglich, die nokogiri Anfrage von meinem Web-Server über einen Proxy-Server zu routen ? Wenn ja, wie würde ich darüber gehen?

Dies ist der Code, den ich im Moment habe.

doc = Nokogiri::HTML(open(URL HERE, 'User-Agent' => 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_7_0) AppleWebKit/535.2 (KHTML, like Gecko) Chrome/15.0.854.0 Safari/535.2')) 
+0

Woher bekommen Sie den 403? Von den Websites versuchen Sie zu kratzen? – thesecretmaster

+0

In der Tat bin ich, habe ich den Eindruck, dass sie die Server-IP-Adresse blockiert haben, Deshalb habe ich an einen Proxy gedacht –

+0

Können Sie Mechanise und Proxy dafür verwenden? Schauen Sie [hier] (http://stackoverflow.com/questions/18348673/how-do-i-configure-a-ruby-mechanize-agent-to-work-through-the-charles-web-proxy) oder [hier ] (https://gist.github.com/emergent/3983870) –

Antwort

0

Eigentlich kann man einfach die :proxy Parameter der open Methode openURI verwenden.

open(*rest, &block) 
#open provides `open' for URI::HTTP and URI::FTP. 

... 

The hash may include other options, where keys are symbols: 
:proxy 

Synopsis:  
:proxy => "http://proxy.foo.com:8000/" 
:proxy => URI.parse("http://proxy.foo.com:8000/") 

If :proxy option is specified, the value should be String, URI, boolean or nil. 

Auch als allgemeine Überlegung (langweilig jetzt ist), sollten Sie nach Alternativen um Verschrottung Inhalt zu suchen, vor allem, wenn es auf einer regelmäßigen Basis getan hat. Dinge wie unterstützte API oder alternative Quellen. Wenn Ihre aktuelle Server-IP blockiert wurde, kann das dem Proxy passieren.

+0

Irgendwelche Ideen von irgendwelchen guten Proxies? –

+1

Wahrscheinlich werden Sie keine guten _und_ freien Proxies erhalten. Freie Proxies arbeiten nach dem Zufallsprinzip, hören gelegentlich auf zu arbeiten und so weiter. Sie können mit ihnen arbeiten, aber nicht für etwas, das zuverlässig sein sollte. Für zuverlässige Proxies sollten Sie nach kostenpflichtigen Diensten suchen, es gibt viele (Horde von) und ich kann nicht beurteilen, welche gut oder schlecht sind. –

+1

Als generelle Überlegung (die jetzt mühsam ist) solltest du nach Alternativen zum Verschrotten von Inhalten suchen, besonders wenn es regelmäßig gemacht wird. Dinge wie unterstützte API oder alternative Quellen. Wenn Ihre aktuelle Server-IP blockiert wurde, kann dies dem Proxy passieren. –