如何使用Perl登录YouTube?

fen*_*nec 3 youtube perl screen-scraping

我正在尝试编写一个Perl脚本来连接我的YouTube帐户,但它似乎无法正常工作.基本上我只想连接到我的帐户,但显然它不起作用.我甚至不知道如何调试这个!也许它与https协议有关?

请赐教!提前致谢.

use HTTP::Request::Common;
use LWP::UserAgent;
use strict;

my $login="test";
my $pass = "test";
my $res = "";
my $ua = "";

# Create user agent, make it look like FireFox and store cookies
$ua = LWP::UserAgent->new;
$ua->agent("Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.7.12) Gecko/20051213 Firefox/1.0.7");
$ua->cookie_jar ( {} );

# Request login page 
$res = $ua->request(GET "https://www.google.com/accounts/ServiceLogin?service=youtube&hl=en_US&passive=true&ltmpl=sso&uilel=3&continue=http%3A//www.youtube.com/signup%3Fhl%3Den_US%26warned%3D%26nomobiletemp%3D1%26next%3D/index");
die("ERROR1: GET http://www.youtube.com/login\n") unless ($res->is_success);


# Now we login with our user/pass
$res = $ua->request(
        POST "https://www.google.com/accounts/ServiceLoginAuth?service=youtube",
        Referer => "http://www.youtube.com/login",
        Content_Type => "application/x-www-form-urlencoded",
        Content => [
                currentform     => "login",
                next            => "/index",
                username        => $login,
                password        => $pass,
                action_login    => "Log+In"
        ]
        );

# YouTube redirects (302) to a new page when login is success
# and returns OK (200) if the login failed.
#die("ERROR: Login Failed\n") unless ($res->is_redirect());


print $res->content;
Run Code Online (Sandbox Code Playgroud)

我正在做的是学习perl的web功能,所以我不想使用除wwwlib或mechanize之外的任何库来完成工作.如何使用perl脚本连接到我的帐户?这是我的目标,现在希望有人可以发布一个脚本或纠正我的.谢谢你们的帮助.我正在测试Webscarab ..

Tre*_*rey 9

你想抓什么数据?为什么不使用像现有的实现WebService::YouTube

关于你的代码的一些评论:我总是避免使用快捷$ua->request(GET/POST)方法,因为我总是需要更多的灵活性,只有使用HTTP::RequestHTTP::Response允许.我总觉得代码也那么干净.

为什么你的代码不起作用?谁知道.确保您的cookiejar正在将Cookie添加到外发HTTP::Request.我建议您在浏览器中转储所有标头,并与libwww正在发送的标头和数据进行比较.他们正在检查的其他字段可能会因每次点击而异.他们可能正在检查你的UserAgent字符串.如果你只是想学习libwww我建议使用不同的网站作为目标,因为我确信YouTube有各种各样的反脚本强化.


Liu*_*kys 5

您使用的是YouTube稳定记录的API吗?

使用WebScarab等HTTP代理来监视数据流.

Trey建议使用其他人的CPAN包用于机制也是一个好主意.