我試圖訪問使用Perl5和LWP :: UserAgent的站點。然而,在連接時,腳本將以「403訪問被拒絕」消息而死亡。奇怪的部分是它使用WWW :: Mechanize完美地工作,但取回代碼完全相同。 通常我會懷疑用戶代理是原因,但如前所述,代碼在兩種情況下都是相同的。使用LWP :: UserAgent時出現403錯誤,但沒有使用WWW :: Mechanize
WWW :: Mechanize和LWP :: UserAgent如何處理可能導致此問題的請求?
下面是一些演示兩種不同方法的示例代碼。
# Mechanize
use strict;
use warnings "all";
use WWW::Mechanize;
my $mech = WWW::Mechanize->new(
agent_alias => 'Mozilla/5.0',
show_progress => 1);
my $mech->get("www.foo.com");
# LWP
use strict;
use warnings "all";
use LWP::UserAgent;
my $ua = LWP::UserAgent->new(
agent_alias => 'Mozilla/5.0',
show_progress => 1);
my $r = $ua->get("www.foo.com");
很高興地說'new'的正確參數叫做'agent',你應該說默認的用戶代理字符串是什麼 – Borodin
@Borodin:你說得對。我已將這些信息添加到我的答案中。 –
謝謝。看起來奇怪的是,一個網站會爲'libwww-perl'返回* Forbidden *,而不是'WWW-Mechanize'。它必須是一個硬編碼的排除,而不是一個非常有效的排除! – Borodin