Ответ 1
Вы отправляете неправильные данные, потому что вы берете HTML, чтобы указать виджет и объединить его с данными, которые он отправляет. Исправленные данные состоят в том, чтобы просто отправить имя виджета и его значение:
term: 098f6bcd4621d373cade4e832627b4f6
Вместо этого данные, которые получают POSTed в настоящее время:
maxlength: 2048
name: term
size: 55
title: md5 hash to crack
value: 098f6bcd4621d373cade4e832627b4f6
name: crackbtn
type: submit
value: Crack that hash baby!
Исправленная программа:
use strict;
use warnings;
use LWP::UserAgent;
use HTTP::Request::Common qw{ POST };
use CGI;
my $md5 = '098f6bcd4621d373cade4e832627b4f6';
my $url = 'http://www.md5crack.com/crackmd5.php';
my $ua = LWP::UserAgent->new();
my $request = POST( $url, [ 'term' => $md5 ] );
my $content = $ua->request($request)->as_string();
my $cgi = CGI->new();
print $cgi->header(), $content;
Вы также можете использовать LWP::UserAgent
метод post():
use strict;
use warnings;
use LWP::UserAgent;
use CGI;
my $md5 = '098f6bcd4621d373cade4e832627b4f6';
my $url = 'http://www.md5crack.com/crackmd5.php';
my $ua = LWP::UserAgent->new();
my $response = $ua->post( $url, { 'term' => $md5 } );
my $content = $response->decoded_content();
my $cgi = CGI->new();
print $cgi->header(), $content;
Всегда помните use strict
и use warnings
. Это считается хорошей практикой и сэкономит ваше время.