【发布时间】:2014-05-08 08:32:26
【问题描述】:
我想通过 perl 脚本登录到http://www.tennisinsight.com/match_previews.htm 并下载该页面。我被困在通过脚本登录网站
1 该网站使用 cookie 来存储登录数据。
2 登录表单是由 javascript 触发的,但这并不重要,因为本地的一个简单网页仅包含:
<form action="http://www.tennisinsight.com/myTI.php" method="POST">
<input name="username" type="text" size="25" />
<input name="password" type="password" size="25" />
<input name="mySubmit" type="submit" value="Submit!" />
</form>
给定正确的用户名和密码将发送所需的数据,网站将重定向到主页,用户登录,并创建 cookie。简而言之,一个包含正确数据的简单帖子就可以在客户端完成所有工作。
3.一旦提供了正确的 cookie,我已经成功尝试并使用 curl 获取了我需要的页面。
我认为发布到 myTI.php,存储返回的 cookie,然后在读取 cookie 时打开正确的页面就可以了,但我在保存 cookie 部分失败了......
这是我尝试获取 cookie 的脚本,它现在将它们打印到标准输出中
use warnings;
use HTML::Tree;
use LWP::Simple;
use WWW::Mechanize;
use HTTP::Request::Common;
use Data::Dumper;
my $username = "user";
my $password = "pass";
my $site_url = 'http://www.tennisinsight.com/myTI.php';
my $mech = WWW::Mechanize->new( autocheck => 1 );
# print $mech->content;
my $response = $mech->post($site_url ,
[
'username' => $username,
'password' => $password,
]) ;
my $cookie_jar = HTTP::Cookies->new;
$cookie_jar->extract_cookies( $response );
print $cookie_jar;
编辑: 我找到了如何存储 cookie 的示例,问题是我得到一个空文件(或空标准输出......似乎调用的 php 将在存储 cookie 之前重定向并且登录将失败
我很抱歉,但总的来说我是 perl 新手,似乎我错过了什么
【问题讨论】:
-
为什么需要使用 PHP (cURL) 来获取页面?使用 Mechanize 从 Perl 获取它非常简单。
-
实际上,我尽量避免这样做。我提到 curl 只是因为我用它作为页面的概念证明。一旦提供了 cookie,就可以下载我需要的内容。我什么 perl 解决方案,但不能让 perl 存储该站点的 cookie,这实际上是我的问题。我设法为无密码站点存储 cookie,但不是为受保护站点存储 cookie
-
WWW::Mechanize 默认为您使用(保存)cookie。
-
问题可能出在 User-Agent: 标头中吗?尝试在
my $mech = WWW::Mechanize->new( autocheck => 1 );行之后添加$mech->agent_alias("Windows IE 6")'。