当perl更改useragent名称时,如何通过php限制perl bot

当perl更改useragent名称时,如何通过php限制perl bot,php,perl,user-agent,Php,Perl,User Agent,假设我们有以下perl脚本 use LWP; use strict; use warnings; use LWP::UserAgent; my $ua = LWP::UserAgent->new; $ua->agent('NokiaN97i/SymbianOS/9.1 Series60/3.0'); my $response = $ua->get('http://myhost.com'); if ($res

假设我们有以下perl脚本

    use LWP;
    use strict;
    use warnings;
    use LWP::UserAgent;


    my $ua = LWP::UserAgent->new;
    $ua->agent('NokiaN97i/SymbianOS/9.1 Series60/3.0');

    my $response = $ua->get('http://myhost.com');

    if ($response->is_success) print $response->decoded_content;
    else die $response->status_line;
它只连接到myhost.com/index.php页面并打印其内容。 在index.php文件中,我有

 file_put_contents('agent.txt', $_SERVER['HTTP_USER_AGENT'], FILE_APPEND);

线路。现在,用户代理字符串不包含“libwww perl”。如何识别perl bot并对其进行限制

您不能,用户代理字符串虽然是帮助您识别客户端“浏览器”的唯一因素,但基本上也是用户输入。如果他们改变它-你对此无能为力。

可能值得一试。$\U服务器['HTTP\U ORIGINAL\U USER\U AGENT']Touthank you Dale,我试过使用$\U服务器['HTTP\U ORIGINAL\U USER\U AGENT'],但它不打印任何内容。谢谢你。所以你说没有机会认出真正的用户代理?例如,如果我想限制除移动浏览器以外的所有浏览器,有没有办法做到这一点?没有,没有办法,因为即使是浏览器也可以更改useragent。@Paramore否。您仍然可以使用user agent字符串来确定是否应为网站的移动版或桌面版提供服务。但它不是100%可靠的,而且从财务上讲,你不应该用它来强制执行限制。