2010-12-07 11 views
1

私はこれを長時間過ごしています。私はこれがシンプルであるべきだと思うが、明らかに何か根本的な誤りがある。私は読んだ: WWW-Mechanizeの/ libに/ WWW/Mechanizeの/ FAQ.pod のlibwww-perlの-5.837/libに/ LWP/UserAgent.pmPerlのメカニックとプロキシの問題

私はのためのCPANのドキュメントを読みましたそして、私がGoogle上で見つけることができるサンプルコードや記事のすべてのビット。

これは初めてのスタックオーバーフローのヘルプを探しています。あなたの助けを前もってありがとう。ここでは、コードは次のとおりです。

#!/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"; 

ここで出力されます:

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

Apache is functioning normally 
200 

私はここにアイデアを実行しています。このコードはあなたのために機能しますか?同じ結果が得られますか?どうしたの? >。 <

ありがとうございます。

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

助けを:

答えて

1

は言っていますか?

docは、LWPのenv_proxyへの暗黙的な呼び出しを避けるために行う必要があることを示しています。

+0

ご返信いただきありがとうございます。あなたが指摘したように私は修正を加えました。それは出力に影響を与えないようです。奇妙なことに、私が知っているドメインを代用すれば、www.google.comではなく、上手くない、あるいは良いとは限りません。同じ出力が得られます。だから、たとえ$ mech-> uri()が私が本当にプロキシから来るGoogleのコンテンツ()を取得していることを示しているようにも思えます。 – PSCO

+0

@ PSCO:私は式からMechを取り除くことを勧めます。最初にLWP :: UserAgentだけでプロキシ処理ができるかどうかを確認してください。 – ysth

+0

私はそのショットを与えて報告する。 – PSCO

2

問題は、サーバーfetch4.meにあるようです。例えば、代わりに試してください

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

+0

ありがとうございます。今は正しく動作しているようです。 fetch4.meが決してうまくいかないことを除いて、私はすべてのことが正しいように見えます。私はfetch4meと同じように動作する他のプロキシをテストしました。私はしかし、動作するプロキシの代替リストを発見した。私がこの問題を解決するのを手伝ってくれてありがとう、私は本当にイライラしていました。より多くのテストをしたはずのばかだと感じました。私はあなたの答えを評価しようとしたが、私は十分な担当者がいない= \ – PSCO