网站套了 Cloudflare 后,在服务器 Nginx 阻止中国 IP 的方式
用户访问网站的流程:浏览器 -> Cloudflare CDN -> 服务器 Nginx -> 服务器 PHPCloudflare 免费版无法配置自定义拦截网页,所以在 Nginx 里自定义
1. 在 Nginx 的 server 节点末尾增加下代码:
set $is_blocked 0; # 默认不阻止
if ($http_cf_ipcountry = "CN") { # 阻止中国 IP,注意 = 两边都有空格
set $is_blocked 1;
}
if ($http_cf_connecting_ip ~ "^a123:b456:c789") { # 放行 a123:b456:c789 开头的 IP
set $is_blocked 0;
}
if ($http_cf_connecting_ip ~ "^192.168.") { # 放行 192.168. 开头的 IP
set $is_blocked 0;
}
if ($is_blocked) {
return 451; # 如果被阻就返回 451
}
error_page 451 = @custom_451; # 自定义 451 错误页面
location @custom_451 { # 返回自定义 HTML 内容
default_type text/html;
return 200 "
<!DOCTYPE html>
<html>
<head>
<meta charset=\"UTF-8\">
<meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">
<title>451 Forbidden</title>
</head>
<body>
<p>根据服务器所在国家的法规,无法为您所在的国家/地区显示网页内容</p>
<p>您的 IP:${http_cf_connecting_ip}(中国大陆)</p>
</body>
</html>";
} 如果铁了心阻止特定地区的话,方法比想象的还要多。
尤其是曾经作为特定地区用户,如今作为服务提供者,反水起来绝对是见招拆招的,例如抖音国际版tiktok。
tiktok检测的除了IP归属地,还有:
IP类型(宽带/托管)
系统时区是否匹配ip,若为否,则很有可能是装的。
电话卡发行国家,上次tiktok苹果手机特定版本检测失败是苹果换了接口,アプリ没及时更新,不是tiktok良心发现。
语言(不确定),但都是说中文的地方,中国是zh-cn,新加坡是zh-sg,还是有不同的。
单纯是墙的话已经不是太高的门槛了,见过太多电脑翻墙出来,人脑仍然翻不过内心的墙的胡搅蛮缠的家伙。
门槛多少要有一点的,没有门槛的网络90%都是垃圾信息。有些“人”它就是给你找点不痛快,影响自己心情,它心里才痛快。 勋章挂满了 第一次看到admin发帖了 我就说嘛,昨天国内裸连,现在不行了 wresource 发表于 2024-12-29 13:09
我就说嘛,昨天国内裸连,现在不行了
昨天规则没写好,变成全部放行
页:
[1]