使用LWP获取网站时获取加密值

时间:2017-04-25 11:57:00

标签: perl lwp-useragent

我在获取网站内容时收到加密数据。如何克服这个问题?

这是我的剧本。

use LWP::UserAgent;

my $ua = LWP::UserAgent->new;
$ua->agent( "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:31.0) Gecko/20100101 Firefox/31.0" );

my $url = "website url";

my $req = HTTP::Request->new( GET => "$url" );
my $res = $ua->request( $req );

my $content = $res->content;

print $content;

1 个答案:

答案 0 :(得分:3)

您的输出不是加密it's encoded。这是使网络上的消息变小的常用方法。想象一个ZIP文件占用较少的空间放在软盘 1 上。

幸运的是,HTTP::Response提供了decoded_content方法,可以为您完成所有解码魔法。只需将$res->content替换为$res->decoded_content

my $res = $ua->get($url);
my $content = $res->decoded_content;

这只会为您提供已解码的内容。您不需要担心使用何种编码。常见的是 gzip deflate ,但您通常不必担心这一点。

如果您感到好奇,可以dump整个回复,以便在文字表示中查看标题和(已转义的)内容。

$res->dump;

LWP::UserAgent文档的概要实际上也显示了这一点。

use strict;
use warnings;
use LWP::UserAgent ();

my $ua = LWP::UserAgent->new;
$ua->timeout(10);
$ua->env_proxy;

my $response = $ua->get('http://search.cpan.org/');

if ($response->is_success) {
    print $response->decoded_content;  # or whatever
}
else {
    die $response->status_line;
}

1)对于我们这些记得那是什么的人。对于其他人:看起来像另存为图标

的东西