2012-02-04 32 views
1

Perlの特定のプロジェクトでは、LWP :: UserAgentを使用してWebサイトにアクセスするためのいくつかの「パーサー」を作成しました。しかし、私は1つのウェブサイトに問題があります。ブラウザでサイトにアクセスしてCookieを無効にした場合とまったく同じように動作しますので、私に必要なページを提供するのではなく、私はクッキーをオンにする必要があります。私のスクリプトのコード全体は以下の通りです。何か案は?前もって感謝します。Perlでサイトを解析するLWP :: UserAgent - クッキーが必要です

(私は私の質問に対処しているようだ次のURL、を見て、残念ながら、私はその提案に基づいて、作業スクリプトを取得することができなかったことに注意してください:。Cookies in perl lwp

use strict; 
use warnings; 
use LWP::UserAgent; 
use HTTP::Cookies; 
my $useragent = LWP::UserAgent->new; 
$useragent->cookie_jar(HTTP::Cookies->new); 
my $request = HTTP::Request->new(GET => "http://www.the-site-im-trying-to-parse.com"); 
my $response = $useragent->request($request); 
print "Content-type: text/html\n\n"; 
print $response->as_string; 

答えて

1

はあなたを持っていますWWW :: Mechanizeモジュールを使って考えていますか?デフォルトで自動的にクッキーを収集します。非常に便利な方法がたくさん含まれているので、少し使いやすくなっています。

-1

(空のハッシュリファレンスをそれを与える)一時的な記憶にcookie_jarを設定してみてください。

$useragent->cookie_jar({}); 
1

あなたがやっているすべては、HTTP経由でHTMLデータをダウンロードするので、あなたは結果を表示することを決定するまでは、ブラウザの相互作用はありません1つでつまり、HTTPサーバーは、クッキーが有効になっているクライアントからの要求かどうかを知る方法がありません。そうすることで、実際に結果を変更することはありません。

WWW:Mechanizeモジュールは、Webサイトを簡単に通過するのに便利ですが、直面している問題は解決しません。だから、実際にあなたが持っている問題を解決するのに役立つわけではありません。

もっと現実的には、ファイルをダウンロードしてブラウザに表示すると正しく動作しないクライアントサイドのJavaScriptコードがあります。これは、javascriptコードで実装されたクロスドメインポリシーを破るなど、いくつでも可能です。あなたがアクセスしているURLを提供することなく、言うことは不可能です。

+0

webbug(img)でもcookieが設定されています - firefox livehttpheadersを使用すると表示されます – obmib

+0

私は同意しますが、結果のHTMLファイルを表示しているときあなたがブラウザで見るものは何らかのJavaScript計算の結果でしょう。 – GoldenNewby

関連する問題