3

我在这件事上玩得很开心...

我正在尝试连接到需要登录的网站。我显然可以直接进入页面而无需登录,因为 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::Microsoft兼容IE9?(网站列出了 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,cookies 在它们自己的文件中。

我不知道IE9 在哪里存储 cookie

但是,如果您尝试在用户通过 IE 登录的站点上自动执行某些操作并启动程序,则可以使用Win32::IE::Mechanize或通过Win32::OLE驱动 IE 。例如,请参阅我的博客文章Using Win32::OLE with events to capture Internet Explorer screenshots with Perl。有关可用方法、属性和事件的信息,请参阅InternetExplorer 对象文档

于 2012-07-26T23:34:14.150 回答