获取" 500内部服务器错误"使用LWP :: UserAgent检索页面

时间:2017-06-21 19:56:26

标签: perl lwp lwp-useragent

我尝试使用LWP :: UserAgent检索页面,但我一直收到" 500内部服务器错误"作为回应。在Firefox中检索完全相同的页面(使用新的"私有窗口" - 所以没有设置任何cookie)成功没有问题。

我完全按照Firefox发送的方式复制了标题,但这仍然没有什么区别。这是我的完整代码:

use strict;
use LWP::UserAgent;

my $browserObj = LWP::UserAgent->new();
$browserObj->cookie_jar( {} );
$browserObj->timeout(600);

my @header = (
  'Host' => 'www.somedomain.com',
  'User-Agent' => 'Mozilla/5.0 (Windows NT 6.1; WOW64; rv:53.0) Gecko/20100101 Firefox/53.0',
  'Accept-Language' => 'en-US,en;q=0.5',
  'Accept' => 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8',
  'Accept-Encoding' => 'gzip, deflate, br',
  'DNT' => '1',
  'Connection' => 'keep-alive',
  'Upgrade-Insecure-Requests' => '1'
);

my $URL = "https://www.somedomain.com";

my $response = $browserObj->get( $URL, @header );
if( $response->is_success ) {
  print "Success!\n";
} else {
  print "Error: " . $response->status_line . ".\n" );
}

真正的网址不是" www.somedomain.com"。事实上,它是一个在线赌场的URL,但我不希望我的问题被视为垃圾邮件。

但任何人都知道可能出现什么问题?

1 个答案:

答案 0 :(得分:1)

在我们的公司网络上有一个代理(以及过时的perl版本 - 在新版本中可能有更好的选项)我们倾向于为一次性添加以下内容:

BEGIN {
    $ENV{HTTPS_DEBUG} = 1; # optional but can help if you get a response
    $ENV{HTTPS_PROXY} = 'https://proxy.server.here.net:8080';
}

如果我们不这样做,脚本就无法连接而没有其他信息。

如果要检查消息,您可能还想添加类似的内容:

$browserObj->add_handler("request_send",  sub { shift->dump; return });
$browserObj->add_handler("response_done", sub { shift->dump; return });