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

Cloudflare防火墙拦截GitHub Actions请求,需保留主规则放行特定URL

问题描述

我通过Cloudflare防火墙规则阻断亚马逊、微软等企业的ASN来防范VPS攻击,规则代码如下:

(ip.geoip.asnum eq 14618) or (ip.geoip.asnum eq 8075) or (ip.geoip.asnum eq 16276) or (ip.geoip.asnum eq 16509) or (ip.geoip.asnum eq 14061) or (ip.geoip.asnum eq 62567) or (ip.geoip.asnum eq 51167) or (ip.geoip.asnum eq 56617) or (ip.geoip.asnum eq 6188) or (ip.geoip.asnum eq 40819)

但GitHub Actions依赖微软服务,导致其对我的API URL的请求被拦截,返回HTTP 403(Cloudflare 1020访问受限错误),我需要获取HTTP 200响应。

我尝试创建放行特定URL的防火墙规则,示例代码如下,但规则无效,请求仍被主规则拦截:

(http.request.full_uri eq "https://example.com?api=secretID1" and http.request.full_uri eq "https://example.com?api=secretID2" and http.request.full_uri eq "https://example.com?api=secretID3" and http.request.full_uri eq "https://example.com?api=secretID4")

我不想禁用主规则,网站日均遭超900次攻击。补充:我的GitHub Action会对4个链接(主域名+3个CNAME子域名)各发起3次GET请求,具体链接:

https://example.com/en.php?datazo=secretID
https://sub1.example.com/en.php?datazo=secretID1
https://sub2.example.com/en.php?datazo=secretID2
https://sub3.example.com/en.php?datazo=secretID3
解决方案

1. 修正放行规则的逻辑错误

之前的放行规则用and逻辑,要求一个请求同时匹配4个不同URL,这不可能触发。把and替换为or,并使用实际的目标URL:

(http.request.full_uri eq "https://example.com/en.php?datazo=secretID") or 
(http.request.full_uri eq "https://sub1.example.com/en.php?datazo=secretID1") or 
(http.request.full_uri eq "https://sub2.example.com/en.php?datazo=secretID2") or 
(http.request.full_uri eq "https://sub3.example.com/en.php?datazo=secretID3")

2. 调整规则优先级

Cloudflare防火墙规则按数值越小优先级越高的顺序执行,必须让放行规则优先级高于阻断ASN的主规则:

  • 进入Cloudflare控制台 → 防火墙 → 防火墙规则
  • 编辑放行规则,将优先级设为比主规则更小的数值(比如主规则优先级是10,放行规则设为5)

3. 更灵活的匹配方式(可选)

如果担心参数顺序变化导致匹配失败,可以拆分路径、查询参数和主机名进行匹配:

(http.request.uri.path eq "/en.php") and 
((http.request.uri.query contains "datazo=secretID") or 
(http.request.uri.query contains "datazo=secretID1") or 
(http.request.uri.query contains "datazo=secretID2") or 
(http.request.uri.query contains "datazo=secretID3")) and 
(http.host in {"example.com" "sub1.example.com" "sub2.example.com" "sub3.example.com"})

4. 验证规则有效性

部署规则后,触发GitHub Action请求,查看Cloudflare防火墙日志:

  • 确认放行规则标记为“允许”,且主规则未被触发
  • 若仍有拦截,检查日志中的请求URI、ASN信息,确认规则是否覆盖到目标请求

内容的提问来源于stack exchange,提问作者Sergio Yael A.

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 12:39:50