为什么在使用Mechanize进行文件获取时出现内部服务器错误?

时间:2010-08-05 05:58:08

标签: perl mechanize

我在使用WWW :: Mechanize下载mp4文件时遇到问题。像Firefox一样的普通浏览器可以在没有启用Javascript的情况下进行文件获取而没有任何问题。所以在我看来,通常的嫌疑人Javascript并没有真正解决我的问题。我还在我的脚本中添加了Firefox在执行提取时向文件服务器发送的相同标头,以便服务器可以将Mechanize视为普通浏览器,但问题仍然存在。而Win32 :: IE :: Mechanize也可以很好地完成这项工作,但为什么Mechanize不能呢?

有什么想法吗?在此先感谢:)

这是我的剧本:

use strict;
use warnings;
use WWW::Mechanize;


my $browser = WWW::Mechanize->new();
$browser->cookie_jar(HTTP::Cookies->new()); 
$browser->add_header('User-Agent' => 'Mozilla/5.0 (Windows; U; Windows NT 5.1; zh-CN; rv:1.9.1.11) Gecko/20100701 Firefox/3.5.11');
$browser->add_header('Accept' => 'text/xml,application/xml,application/xhtml+xml;q=0.9,*/*;q=0.8');
$browser->add_header('Accept-Language' => 'zh-cn,zh;q=0.5');
$browser->add_header('Accept-Encoding' => 'gzip,deflate');
$browser->add_header('Accept-Charset' => 'GB2312,utf-8;q=0.7,*;q=0.7');
$browser->add_header('Keep-Alive' => 300);
$browser->add_header('Connection' => 'keep-alive');

my $url = 'http://119.167.217.206:19765/ppvaplaybyopen?url=http://119.167.217.206/%d3%e9%c0%d6%b0%d9%b7%d6%b0%d9-100803-%d0%a1%d6%ed%bd%dc%c2%d7%b7%d6%d7%e9%d0%e3%c7%f2%bc%bc.mp4/segno=0%26&rid=A8F1F5DFEB1B11F1D90B40AD1BB75D69&filelength=21293994&blocksize=2097152&blocknum=11&blockmd5=E210862B3F92935D0883E00AA2A38F08@D793599727C6DA4ACDB1CBF2235004AC@D5E9C9245C9A1BB63BC5EDA862A32604@51B5FDF91356B2B4E943EF72648EB0AD@6F2400488B04EBF66A60336B795EA142@8E51B8DCF87A7A02B84A2CAA5FFCA3CF@89080D683268481694DBA6D1E22A2EFF@8F56225C76854A434385A09C319BF9C3@9AB0A3F199183F479F8887D1C3341B1B@845FE0D711086CC2D086546CD26B35C1@9D93A9BE1D2EDE216AA9EBF26BF414BE';

$browser->get($url);

我收到以下错误消息:

Error GETing http://119.167.217.206:19765/ppvaplaybyopen?url=http://119.167.217.206/%d3%e9%c0%d6%b0%d9%b7%d6%b0%d9-100803-%d0%a1%d6%ed%bd%dc%c2%d7%b7%d6%d7%e9%d
0%e3%c7%f2%bc%bc.mp4/segno=0%26&rid=A8F1F5DFEB1B11F1D90B40AD1BB75D69&filelength=21293994&blocksize=2097152&blocknum=11&blockmd5=E210862B3F92935D0883E00AA2A38F08
@D793599727C6DA4ACDB1CBF2235004AC@D5E9C9245C9A1BB63BC5EDA862A32604@51B5FDF91356B2B4E943EF72648EB0AD@6F2400488B04EBF66A60336B795EA142@8E51B8DCF87A7A02B84A2CAA5FF
CA3CF@89080D683268481694DBA6D1E22A2EFF@8F56225C76854A434385A09C319BF9C3@9AB0A3F199183F479F8887D1C3341B1B@845FE0D711086CC2D086546CD26B35C1@9D93A9BE1D2EDE216AA9EB
F26BF414BE: Internal Server Error at E:\pp2.pl line 17

2 个答案:

答案 0 :(得分:1)

当我转到相同的网址时,我得到相同的“内部服务器错误”。可能的原因:

  1. 您没有正确设置引用。

  2. 您在浏览器中执行了一些身份验证,或者存储在Cookie中的任何其他数据。

  3. 一般情况下,在其他浏览器中打开URL,是检查此类内容的好方法。 “实时HTTP标题”Firefox扩展是检查此类内容的好方法。

答案 1 :(得分:0)

“内部服务器错误”错误的另一种可能性是您的连接已重置