我如何阻止 PHP 中的所有 CloudFlare IP
How can i block all CloudFlare IPs in PHP
我遇到了一些使用 cloudflare 的代理站点的问题,它们隐藏了我的网站并对其进行了垃圾索引。
我如何阻止 php 中的所有 cloudflare ip,以便这些抓取我网站的网站被阻止.. 或者有更好的解决方案吗?
我的网站也在使用 cloudflare。
How can i block all cloudflare ip's
My website is also using cloudflare
你不能 - 否则你将无法自己使用 cloudflare。
更好的解决方案是让您的网络服务器(例如 apache 或 nginx)检查主机 header(这是用户在地址栏中看到的内容)以及它是否不是您的正常域仅 301 重定向(永久)- 这将告诉搜索引擎内容已从报废站点“移动”到合法站点
幸运的是,cloudflare 提供了它们的 IP 范围列表 here,因此只需检查连接 IP 是否在这些范围之一内,如果是则退出()。
使用 M6Web/Firewall 的示例实现:
use M6Web\Component\Firewall\Firewall;
if(!((new Firewall())->setDefaultState(true)->addList(file('blacklist.txt',FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES),'localBad')->setIpAddress($_SERVER['REMOTE_ADDR'])->handle())){
http_response_code(403);
exit();
}
附带每日 cronjob:
<?php
$ips = file_get_contents ( 'https://www.cloudflare.com/ips-v4' ) . "\n" . file_get_contents ( 'https://www.cloudflare.com/ips-v6' );
file_put_contents ( '/path/to/blacklist.txt', $ips );
请注意,手动实施 ipv6 cidr 范围很困难,因此您可能应该使用第 3 方库,如 M6Web 防火墙。此外,与 php 级别相比,使用 iptables 执行此操作的性能要高得多。
cronjob 并不是真正需要的,您可以在每次页面加载时获取新的 ips 列表,但这可能会非常慢,而且,也许具有讽刺意味的是,您可能会获得自动 ip-禁止 cloudflare.com 发送垃圾邮件,因此我强烈建议您使用每日 cronjob。
我遇到了一些使用 cloudflare 的代理站点的问题,它们隐藏了我的网站并对其进行了垃圾索引。
我如何阻止 php 中的所有 cloudflare ip,以便这些抓取我网站的网站被阻止.. 或者有更好的解决方案吗? 我的网站也在使用 cloudflare。
How can i block all cloudflare ip's
My website is also using cloudflare
你不能 - 否则你将无法自己使用 cloudflare。
更好的解决方案是让您的网络服务器(例如 apache 或 nginx)检查主机 header(这是用户在地址栏中看到的内容)以及它是否不是您的正常域仅 301 重定向(永久)- 这将告诉搜索引擎内容已从报废站点“移动”到合法站点
幸运的是,cloudflare 提供了它们的 IP 范围列表 here,因此只需检查连接 IP 是否在这些范围之一内,如果是则退出()。
使用 M6Web/Firewall 的示例实现:
use M6Web\Component\Firewall\Firewall;
if(!((new Firewall())->setDefaultState(true)->addList(file('blacklist.txt',FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES),'localBad')->setIpAddress($_SERVER['REMOTE_ADDR'])->handle())){
http_response_code(403);
exit();
}
附带每日 cronjob:
<?php
$ips = file_get_contents ( 'https://www.cloudflare.com/ips-v4' ) . "\n" . file_get_contents ( 'https://www.cloudflare.com/ips-v6' );
file_put_contents ( '/path/to/blacklist.txt', $ips );
请注意,手动实施 ipv6 cidr 范围很困难,因此您可能应该使用第 3 方库,如 M6Web 防火墙。此外,与 php 级别相比,使用 iptables 执行此操作的性能要高得多。
cronjob 并不是真正需要的,您可以在每次页面加载时获取新的 ips 列表,但这可能会非常慢,而且,也许具有讽刺意味的是,您可能会获得自动 ip-禁止 cloudflare.com 发送垃圾邮件,因此我强烈建议您使用每日 cronjob。