ssl - Perl Script to Log into TopCoder -
my following codes work other https sites not topcoder. output file reads: can't connect community.topcoder.com:443 lwp::protocol::https::socket: ssl connect attempt failed unknown error error:00000000:lib(0):func(0):reason(0) @ c:/perl64/lib/lwp/protocol/http.pm line 51, line 2. please me know wrong? thank much.
#!perl use lwp::simple; use lwp::useragent; use html::form; use http::cookies; use term::readkey; use html::parse; print "please enter topcoder username:"; chop(my $user=<stdin>); print "please enter topcoder password: (do not display)\n"; readmode 2; chop(my $password=<stdin>); readmode 0; #log-in , set cookies $host="http://community.topcoder.com/tc?&module=myhome"; $method="get"; $cookie_jar=http::cookies->new; require http::request; $ua=lwp::useragent->new; $ua->cookie_jar({}); $ua->agent('mozilla/5.0'); $r=http::request->new; $response=http::response->new; $r->method($method); $r->uri($host); $cookie_jar->add_cookie_header($r); $response=$ua->request($r); $cookie_jar->extract_cookies($response); $html; $baseuri; if($response->is_success) { $html=$response->content; $baseuri=$response->base; } else { $html = $response->error_as_html(); print "server connection failed.\n"; exit 0; } @forms=html::form->parse($html,$baseuri); $form=$forms[1]; $form->value("username",$user); $form->value("password",$password); push @{ $ua->requests_redirectable }, 'post'; $response=$ua->request($form->click); if ($response->content =~/username or password incorrect/i) { print "wrong username or password!\n"; exit 1; } else { open(fo2, ">login_test.htm"); print fo2 $response->content; $cookie_jar->extract_cookies($response); print "login ok\n"; } $ua->cookie_jar($cookie_jar);
io::socket::ssl uses sslv2 default, , server not renegotiate in order upgrade v3. connect v3 right away, , works.
lwp::useragent->new(ssl_opts => {ssl_version => 'sslv3'})
Comments
Post a Comment