2010-12-07 11 views
1

Ich habe mich selbst frustriert für viel zu viele Stunden. Ich denke, das sollte einfach sein, aber ich habe offensichtlich etwas fundamental falsch. Ich habe gelesen:Probleme mit Perl-Mechanisierung und Proxies

Ich habe die cpan docs lesen für: WWW-Mechanize/lib/WWW/Mechanize/FAQ.pod libwww-perl-5.837/lib/LWP/UserAgent.pm

Und jedes bisschen Beispielcode oder Artikel, den ich bei Google finden konnte.

Dies ist mein erstes Mal auf der Suche nach Hilfe auf Stack Overflow. Danke im Vorraus für deine Hilfe. Hier ist der Code:

#!/usr/bin/perl 

use WWW::Mechanize; 

my $mech = WWW::Mechanize->new (agent => "Mozilla/5.0"); 

my $proxy = 'http://fetch4.me'; 

$mech->no_proxy('localhost'); 
$mech->proxy(['http', 'https', 'gopher'], $proxy) or die $!; 
$mech->get('http://www.google.com'); 

print $mech->uri(),"\n"; 
print $mech->content(),"\n"; 
print $mech->text(),"\n"; 
print $mech->status(),"\n"; 

Hier ist die Ausgabe:

http://www.google.com 
<html>Apache is functioning normally</html> 

Apache is functioning normally 
200 

Ich bin hier die Ideen ausgehen. Funktioniert dieser Code für Sie? Führt es zu denselben Ergebnissen? Was stimmt damit nicht? >. <

Vielen Dank für Ihre Zeit.

Antwort

1

Does sagen:

my $mech = WWW::Mechanize->new (agent => "Mozilla/5.0", noproxy => 1); 

Hilfe?

Das Dokument bedeutet, dass Sie dies tun müssen, um einen impliziten Aufruf von LWPs env_proxy zu vermeiden.

+0

Vielen Dank für Ihre Antwort ysh. Ich habe die Änderung vorgenommen, worauf Sie hingewiesen haben, und es scheint keinen Einfluss auf die Ausgabe zu haben. Seltsamerweise, wenn ich anstelle von www.google.com eine Domain erstelle, die ich nicht gut oder gut finde, bekomme ich die gleiche Ausgabe. Es scheint also so, als ob der $ mech-> uri() angibt, dass ich den Inhalt() von Google bekomme, der wirklich vom Proxy kommt. – PSCO

+0

@PSCO: Ich schlage vor, Mech aus der Gleichung zu nehmen; Prüfen Sie, ob Sie nur mit LWP :: UserAgent arbeiten können. – ysth

+0

Ich gebe das eine Chance und melde mich zurück. – PSCO

2

Das Problem scheint auf dem Server fetch4.me zu sein. Versuchen Sie zum Beispiel stattdessen

mein $ proxy = 'http://124.207.162.87:80';

+0

Vielen Dank für Ihre Eingabe. Es scheint jetzt richtig zu funktionieren. Es sieht so aus, als hätte ich alles richtig außer fetch4.me würde nie funktionieren. Ich habe andere Proxies getestet, die sich alle genauso verhalten wie fetch4me. Ich habe eine alternative Liste von Proxies gefunden, die funktionieren wird. Danke, dass Sie mir bei der Lösung dieses Problems geholfen haben. Ich wurde wirklich frustriert. Ein bisschen albern, hätte jetzt mehr Tests machen sollen. Ich habe versucht, deine Antwort zu bewerten, aber ich habe nicht genug rep = \ – PSCO