8

LWP :: UserAgentを使用してWebページをダウンロードし、正規表現を使用して処理するPerlスクリプトがあります。問題は、ブラウザにFlashがインストールされていないことをサイトが認識し、代わりに適切なHTMLの代わりにFlashをダウンロードするように求めるHTMLを返すため、通常のHTMLであるWebページの一部がLWP::UserAgentに返されないことです。解析する必要があります。

LWP :: UserAgentに、ページを要求しているWebサーバーにフラッシュがインストールされているように見せかけるにはどうすればよいですか?次のコードを使用してLWP::UserAgentを初期化します。

use LWP::UserAgent;
my $ua = LWP::UserAgent->new(cookie_jar => { },requests_redirectable => [ ]);
$ua->agent('Mozilla/5.0 (X11; U; FreeBSD i386; en-US; rv:9.9.9.9) Gecko/20079999 Firefox/2.0.0.1');
$ua->timeout(10);

よろしくお願いします!

4

3 に答える 3

1

そのためにFirebugを使用することをお勧めします-FF用の非常に素晴らしく強力なアドオンです。私はマイケルに同意します。サーバーは、クライアントに送信されたヘッダーから、またはクライアント上で実行され、サーバー(JavaScript、Flexなど)と通信できるスクリプトからのみ、クライアントに関するそのような情報を学習できます。JavaScriptの場合、FF一時的に無効にして、ページをリロードしてみてください。サーバーがLWPの場合と同じように応答する場合は、答えがわかります。

于 2010-02-06T12:57:11.807 に答える
0

このサイトはおそらく、JavaScriptを使用してフラッシュがインストールされているかどうかをテストしています。多くの場合、このテストはクライアント側のみであり、ページに影響を与えることはありません。しかし、フラッシュがインストールされていることをサーバーに通知する非同期リクエストを起動している可能性があります。これをテストするには、TamperDataをダウンロードし、ツールメニューからTamperDataウィンドウをロードして、ページを更新する必要があります。ウィンドウには、実行されているすべてのリクエストが表示され、それらを検査できます。http://whatever.com/flash_test.php?flash_installed=trueのようなリクエストがある場合は、LWPを使用してこのリクエストを再生できます。

もう1つのオプションは、フラッシュアプ​​リを逆コンパイルすることです。これは非常に簡単で、コードコメントを含む完全なソースを入手できることがよくあります。これは無料の試用版です。

于 2010-02-05T23:02:22.843 に答える
0

@Michaelと@dma_kの両方が正しかった。サーバーは、LWP::UserAgentにフラッシュがインストールされているかどうかをチェックしていませんでした。代わりに、何らかの理由で、スクリプトをデバッグしようとしたときに、返されたコンテンツが正しくダンプされていませんでした。残念ながら、これを修正する方法はわかりませんでしたが、試行錯誤の末、ページから適切なフィールドを引き出す方法を見つけました。申し訳ありませんが、これに対する正解はありません。

于 2010-02-12T00:27:48.053 に答える