Använder du modulen LWP::UserAgent?
<font size="1" face="Verdana, Arial, Helvetica, sans-serif">
$obj->agent('Foozilla/7.1');
</font>
------------------
Robban < robban@lipogram.com >
Programmeringur Perl, Python, Ruby och övrig CGI
4 svar · 370 visningar · startad av higa
Jag har skrivit ett litet program i Perl som hämtar hem html dokument som den skojar till texten på, men nu är det så att vissa siter funkar som vanligt, medans vissa lämnar följande felmeddelande:
Due to malformed syntax, the request could not be understood by the server. The client should not repeat the request without modifications.
Några siter föreslår även att jag laddar hem en ny version av Netscape eller MSIE, så tydligen är problemet att min user-agent inte är satt, men hur sätter man user-agent?
Använder du modulen LWP::UserAgent?
<font size="1" face="Verdana, Arial, Helvetica, sans-serif">
$obj->agent('Foozilla/7.1');
</font>
------------------
Robban < robban@lipogram.com >
Jag körde förut bara med Socket.pm, men jag prövade att byta ut den mot LWP, och följde instruktionerna för LWP i html-manualen för Activeperl.
En del sidor som t ex www.aftonbladet.se och www.renderosity.com funkar nu till skilnad från förut, men bl a www.sodertalje.se och www.microsoft.com funkar inte.
Följande kod har jag i början av scriptet:
use LWP::UserAgent;
$ua = new LWP::UserAgent;
$ua->agent("Mozilla/4.0" . $ua->agent);
Och här är funktionen för att hämta hemsidor:
<font size="1" face="Verdana, Arial, Helvetica, sans-serif">
sub hamta_sida
{
my($hemmis) = @_;
# Create a request
my $req = new HTTP::Request POST => $hemmis;
$req->content_type('application/x-www-form-urlencoded');
$req->content('match=www&errors=0');
# Pass request to the user agent and get a response back
my $res = $ua->request($req);
if ($res->is_success)
{ $res->content; }
else
{ "Content-Type:text/html\n\nBad luck this time\n"; }
}
</font>
Ändrade lite i ditt exempel, hoppas det är ok.
use HTTP::Request;
use LWP::UserAgent;
$html = hamta_sida('http://www.jojoxx.net/','Mozilla/12.3');
print $html;
sub hamta_sida {
$ua = LWP::UserAgent->new;
$ua->agent($_[1]);
$request = HTTP::Request->new(GET => $_[0]);
$response = $ua->request($request);
if ($response->is_success) {
return $response->content;
} else {
return $response->error_as_HTML;
}
}
Stort tack!
Nu funkar det som det ska!