【发布时间】:2012-07-26 17:26:40
【问题描述】:
我玩得很开心......
我正在尝试连接到需要登录的网站。我显然可以不登录直接进入该页面,因为 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,因为它是这家公司的支持浏览器)
谢谢!
【问题讨论】:
-
您使用的是哪个版本的
HTTP::Cookies::Microsoft?我发现 6.00/6.01 列出了 IE 5 和 6,但最后一次更新是在 2011 年。 -
那将是一个很好的问题。我显然正在使用 6.00。我使用 CPAN 安装。
-
我查看了我的 win7 cookie 目录,那里没有
index.dat文件。只有一堆文本文件似乎每个都包含一个或多个 cookie。我几乎从不使用 IE,所以这可能是问题所在。不过,该模块的代码看起来只读取该 .dat 文件。 -
我承认我把
index.dat放在那里是因为我在几个例子中看到了它。我也没有index.dat,事实上也没有.dat文件。该行是我想知道当它引用一个不存在的文件时它如何加载 cookie 的原因之一。此外,引用随机生成的名称似乎也不是一个好主意。 -
我会尝试了解新的 IE 如何保存这些 cookie,并可能在
HTTP::Cookies上自己构建一些东西。您是否尝试仅使用带有 cookies 目录且没有文件名的HTTP::Cookies::Microsoft模块?也许它会自己找出饼干?
标签: perl cookies login internet-explorer-9