WWW :: Mechanize perl 모듈을 사용하여 스팀 인증이 필요한 웹 사이트에 로그인하려고했습니다. 지금까지 로그인 페이지로 성공적으로 가져 왔지만 양식을 제출하면 전혀 작동하지 않는 것 같습니다. 양식이 제출되면 페이지의 내용은 로그인에 실패한 것처럼 변경되지 않으며 다시 시도하길 원합니다. 나는 지금 몇 시간 동안 검색을 해왔고 양식 상자를 설정하고 텍스트를 제출하는 여러 가지 조합을 시도했지만 아무 것도 작동하지 않습니다. 어떤 이유로 나는 Mechanize가 로그인이 작동하는지 여부를 확인할 수 있는지 확인하지 못했습니다. 내 검색어가 좋지 않을 수도 있습니다.웹 사이트에 로그인 다른 웹 사이트 요청하기
여기까지 내가 지금까지 얻은 코드가 있습니다. 이 작업을 수행하려면 tf2wh의 로그인 양식으로 이동하여 Steam 로그인 페이지로 리디렉션하고 사용자/패스를 입력 한 다음 버튼을 클릭 한 다음 쿠키에 저장된 로그인 세션으로 tf2wh로 돌아갑니다. 그러나 작동하는 유일한 부분은 초기 로그인 리디렉션입니다.
#!/usr/bin/perl
use strict;
use warnings;
use WWW::Mechanize;
my $user = "my_username";
my $pass = "my_password";
my $uri = 'http://www.tf2wh.com/?login';
my $cookies = 'cookies.txt';
my $agent = 'Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)';
my $mechanize = WWW::Mechanize->new(
agent => $agent,
cookie_jar => {},
autosave => 1,
ignore_discard => 1);
$mechanize->add_header(
"Connection" => "keep-alive",
"Keep-Alive" => "115");
$mechanize->get($uri);
$mechanize->success or die "Could not fetch login page.\n";
#One of many different forms I've tried
$mechanize->form_name('login');
$mechanize->set_visible($user, $pass);
$mechanize->click();
$mechanize->follow_link();
$mechanize->success or die 'Could not login.';
print "Logged in successfully! Trying to look at TF2WH now.\n";
#Test to see if we get the "You need to login" message
$mechanize->get('http://www.tf2wh.com/item.php?id=6011;6;78e2c5962db56a60f7c143a12875f3b6');
print "Fetched\n";
if($mechanize->text() =~ m{Handy Hint:})
{
print "Failed to login.\n";
}
else
{
print "Up and running!";
}
Wireshark를 사용하여 Steam이 보낸 요청과 자신의 요청을 비교하는 것이 좋습니다. – mzedeler