You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Perl Mojo::UserAgent检测网站连通性被Cloudflare拦截报错

问题说明

使用Perl的Mojo::UserAgent模块编写网站连通性校验脚本,指定检测目标为https://www.aba.com,脚本运行后返回Failed Service Temporarily Unavailable错误,排查确认触发了Cloudflare防护机制,默认配置下的Mojo::UserAgent请求被拦截,无法完成连通性校验。
原检测代码如下:

use Mojo::UserAgent;
my $ua  = Mojo::UserAgent->new;
my $timeout = $ua->request_timeout;
$ua = $ua->request_timeout(10);
my $res = $ua->get('https://www.aba.com')->result;

if    ($res->is_success)  { print 'Success' }
elsif ($res->is_error)    { print 'Failed ' . $res->message }
elsif ($res->code == 301) { print 'Redirect Success ' . $res->headers->location }
else                      { print 'Manual Check Required URL...' }
根因分析

Cloudflare防护默认会对请求的客户端特征做校验,Mojo::UserAgent发起请求时默认携带的User-Agent、请求头字段和真实浏览器存在明显差异,会被识别为自动化脚本流量直接拦截,返回503服务不可用响应。

修复方案

调整Mojo::UserAgent的请求配置,模拟真实浏览器的请求特征,绕过基础防护校验,核心修改点:

  • 替换默认User-Agent为主流桌面浏览器的UA标识
  • 补全真实浏览器访问时会携带的常规请求头字段
  • 开启自动重定向跟随,适配站点的跳转逻辑
    修改后的可用代码:
use Mojo::UserAgent;
my $ua  = Mojo::UserAgent->new;
# 配置10秒请求超时
$ua->request_timeout(10);
# 配置最多自动跟随5次重定向
$ua->max_redirects(5);
# 构造请求并补全Chrome浏览器标准请求头
my $tx = $ua->build_tx(GET => 'https://www.aba.com');
$tx->req->headers->header(
    'User-Agent' => 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/125.0.0.0 Safari/537.36'
);
$tx->req->headers->header(
    'Accept' => 'text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8'
);
$tx->req->headers->header(
    'Accept-Language' => 'zh-CN,zh;q=0.9,en;q=0.8'
);
$tx->req->headers->header('Accept-Encoding' => 'gzip, deflate, br');
$tx->req->headers->header('Connection' => 'keep-alive');
$tx->req->headers->header('Upgrade-Insecure-Requests' => '1');

my $res = $ua->start($tx)->result;

if    ($res->is_success)  { print 'Success' }
elsif ($res->is_error)    { print 'Failed ' . $res->message }
elsif ($res->code == 301) { print 'Redirect Success ' . $res->headers->location }
else                      { print 'Manual Check Required URL...' }
补充说明
  • 以上方案仅可绕过Cloudflare基础防护规则,如果目标站点开启了强制JS挑战、人机验证码等高等级防护,仅修改请求头无法完成校验,需要使用真实浏览器自动化工具(如Playwright、Selenium)发起请求
  • 连通性校验过程中需控制请求频率,高频访问同样会触发Cloudflare的限流拦截规则
  • 建议定期更新使用的User-Agent值,老旧版本浏览器的UA同样可能被防护规则拦截

内容的提问来源于stack exchange,提问作者Rajeshkanna Purushothaman

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.27 13:27:17