我遇到一些使用cloudflare的代理网站存在问题,他们正在伪装我的网站并将其编入垃圾邮件。
如何阻止php中的所有cloudflare ip,以便这些抓取我网站的网站被阻止..还是有更好的解决方案? 我的网站也在使用cloudflare。
答案 0 :(得分:1)
幸运的是,cloudflare提供了他们的IP范围here的列表,因此只需检查连接IP是否在这些范围的1之内,如果是,则退出()。
使用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范围很困难,因此您应该使用第三方库,例如M6Web防火墙。而且,使用iptables比在php级别执行它会更高效。
cronjob并不是真的需要,你可以在每个页面加载时获取一个新的ips列表,但这可能会非常慢,而且,或许具有讽刺意味的是,你可能会从cloudflare中自动禁止ip。用于发送垃圾邮件,因此我强烈建议您使用每日cronjob。
答案 1 :(得分:0)
如何阻止所有cloudflare ip的
我的网站也在使用cloudflare
你不能 - 否则你将无法自己使用cloudflare。
更好的解决方案是让您的网络服务器(例如,apache或nginx)检查主机标头(用户在地址栏中看到的内容)以及它是否是您的正常域名以外的其他内容重定向(永久) - 这将告诉搜索引擎内容已移动&#34;从报废网站到合法网站