perl - 将 IE Cookie 加载到 Perl 的 WWW::Mechanize 中

标签 perl cookies authentication internet-explorer-9

我正在经历这个……

我正在尝试连接到需要登录的网站。显然我可以直接进入该页面而无需登录,因为 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,因为它是该公司支持的浏览器)

谢谢!

最佳答案

在我的 Windows XP 系统上使用 IE8,cookie 位于 C:\Documents and Settings\userid\Local Settings\Temporary Internet Files 中。没有 index.dat,cookie 位于它们自己的文件中。

我不知道where IE9 stores cookies .

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

关于perl - 将 IE Cookie 加载到 Perl 的 WWW::Mechanize 中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11674711/

相关文章:

php - 如何在 wordpress 中使用外部类

authentication - 为什么不允许密码认证?

python - 如果 user.is_authenticated for Django,模板无法正确呈现

perl - 使用从另一个模块继承的方法

perl - 给定一个 Perl DateTime 对象,我如何输出 "1st, 2nd, 3rd, 4th of the month"

perl - 在多核 cpu 上使用最大线程数

javascript - 尝试使用 js-cookies 设置表单输入值

node.js - 如何禁止通过 Express-session 存储的 session 的 TTL 刷新?

javascript - 通过 AJAX 处理身份验证?

perl - "Connecting"带有哈希的 Moo 对象