3

私はこれでかなりの時間を過ごしています...

ログインが必要なWebサイトに接続しようとしています。IEにはログインするためのCookieがあるため、ログインせずにページに直接移動できることは明らかです。

私は自分以外の人が実行するスクリプトを作成しているので、ログイン情報を含むファイルを送信したくありません。理想的には、他の人もその情報を入力する必要はありません。

これがコードの小さくて関連性のある部分です。IEからCookieを読み込んで印刷したいだけです(Cookieがそこに入ると、正しくアクセスされると思います)。

私は何時間も検索し、これがクッキーをロードすると主張する人々を読んだことさえあります。現在Cookieを保存できるようになっていますが、既存のCookieをコンピューターにロードできません。

#!/usr/bin/perl -w
use strict;
use WWW::Mechanize;
use HTTP::Cookies::Microsoft;
use Win32::TieRegistry(Delimiter => "/");

my $cookies_dir = $Registry-> {"CUser/Software/Microsoft/Windows/CurrentVersion/Explorer/Shell Folders/Cookies"};
my $cookie_jar = HTTP::Cookies::Microsoft->new(file => "$cookies_dir\\index.dat",'delayload'=>0,);
my $mech = WWW::Mechanize->new(cookie_jar => $cookie_jar);
print "Set Cookie Jar?\n", $cookie_jar->as_string, "\n";
print "Set Cookie Jar?\n", $mech->cookie_jar->as_string, "\n";

既存のCookieをロードできますか?

HTTP::Cookies::MicrosoftIE9と互換性がありませんか?(WebサイトにはIE6とIE7がリストされていますが、2002年以降更新されていません)。

この例やどの例でも、実際に既存のCookieをロードする場所すらわかりません。互換性の問題だけの場合、IE9にはどのようなオプションがありますか?(この会社のサポートブラウザなので、IE9にこだわる必要があります)

ありがとう!

4

1 に答える 1

2

私の Windows XP システムの IE8 では、Cookie はC:\Documents and Settings\userid\Local Settings\Temporary Internet Files. はありませんindex.dat。Cookie は独自のファイルにあります。

IE9 が Cookie を保存する場所がわかりません。

ただし、ユーザーが IE 経由でログオンし、プログラムを開始するサイトで何かを自動化しようとしている場合は、Win32::IE::Mechanizeを使用するか、 Win32::OLE経由で IE を駆動できます。たとえば、私のブログ記事Using Win32::OLE with events を参照して、Perl で Internet Explorer のスクリーンショットをキャプチャしてください。使用可能なメソッド、プロパティ、およびイベントに関する情報については、InternetExplorer オブジェクトのドキュメントを参照してください。

于 2012-07-26T23:34:14.150 に答える