Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/jsp/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Perl 简单API请求不工作-403错误_Perl_Get - Fatal编程技术网

Perl 简单API请求不工作-403错误

Perl 简单API请求不工作-403错误,perl,get,Perl,Get,我试图从perl脚本运行一个简单的API请求。但它似乎不起作用。如果将相同的请求复制到web浏览器,则不会出现任何问题 #!/usr/bin/perl use strict; use warnings; use LWP::Simple; my $query = 'http://checkdnd.com/api/check_dnd_no_api.php?mobiles=9944384761'; my $result = get($query); print $result."\n"; 当我

我试图从perl脚本运行一个简单的API请求。但它似乎不起作用。如果将相同的请求复制到web浏览器,则不会出现任何问题

#!/usr/bin/perl
use strict;
use warnings;

use LWP::Simple;

my $query = 'http://checkdnd.com/api/check_dnd_no_api.php?mobiles=9944384761';

my $result = get($query);
print $result."\n";

当我使用
getprint($query)
-它会给出403错误。

如果您查看响应的主体(即不仅仅是状态代码403),您会发现:

此网站(checkdnd.com)的所有者已根据您的浏览器签名(2f988642c0f02798-ua22)禁止您访问

这意味着它正在阻止客户端,因为它可能看起来太像非浏览器。对于这个站点,一个简单的修复方法是包含一些用户代理头。以下是我的作品:

my $ua = LWP::UserAgent->new;
$ua->default_header('User-Agent' => 'Mozilla/5.0');
my $resp = $ua->get('http://checkdnd.com/api/check_dnd_no_api.php?mobiles=9944384761');
my $result = $resp->decoded_content;
该网站似乎由Cloudflare提供服务,他们称之为“浏览器完整性检查”。从:

。。。查找最常被垃圾邮件发送者滥用的常见HTTP头,并拒绝访问您的页面。它还将挑战没有用户代理或非标准用户代理的访问者(滥用机器人程序、爬虫程序或访问者也常用)


如果查看响应主体(即,不仅查看状态代码403),您将发现:

此网站(checkdnd.com)的所有者已根据您的浏览器签名(2f988642c0f02798-ua22)禁止您访问

这意味着它正在阻止客户端,因为它可能看起来太像非浏览器。对于这个站点,一个简单的修复方法是包含一些用户代理头。以下是我的作品:

my $ua = LWP::UserAgent->new;
$ua->default_header('User-Agent' => 'Mozilla/5.0');
my $resp = $ua->get('http://checkdnd.com/api/check_dnd_no_api.php?mobiles=9944384761');
my $result = $resp->decoded_content;
该网站似乎由Cloudflare提供服务,他们称之为“浏览器完整性检查”。从:

。。。查找最常被垃圾邮件发送者滥用的常见HTTP头,并拒绝访问您的页面。它还将挑战没有用户代理或非标准用户代理的访问者(滥用机器人程序、爬虫程序或访问者也常用)


Perl使用的用户代理字符串可能已被阻止。您可以通过将其更改为其他内容来解决此问题。Perl使用的用户代理字符串可能已被阻止。您可以通过将其更改为其他内容来解决此问题。可能需要补充的是,这背后的原因是,默认用户代理(
libwww-perl
)被黑客使用,阻止它是防止最简单攻击的简单方法。@grooveplex:我不确定这是否是原因。“Mozilla/…”用户代理的变体也用于恶意软件等——远低于libwww-perl。这更像是他们阻止了一切离浏览器用户代理太远的东西。也许可以补充一下,这背后的原因是,默认的用户代理(
libwww-perl
)被黑客使用过,阻止它是防止最简单攻击的一种简单方法。@grooveplex:我不确定这是否是原因。“Mozilla/…”用户代理的变体也用于恶意软件等——远低于libwww-perl。这更像是他们阻止了一切离浏览器用户代理太远的东西。