WordPress网站遭恶意克隆,如何阻止克隆爬虫访问?
阻止恶意克隆爬虫的解决方案
这种恶意克隆的情况我碰过好多次,尤其是用curl或file_get_contents()这类工具实时抓取站点内容的场景。结合你描述的「克隆站同步更新、关闭自身服务器后克隆站失效」的特征,给你几个针对性的解决方法,按优先级排序:
1. 基于User-Agent的拦截(最快见效)
恶意抓取工具的User-Agent通常带有特征关键词,或者干脆是空的。你可以通过两种方式拦截这类请求:
方法一:修改.htaccess文件
在网站根目录的.htaccess中添加以下规则,拦截空UA和常见恶意抓取工具的请求,同时放行合法搜索引擎爬虫:
RewriteEngine On # 拦截空UA或包含恶意关键词的请求 RewriteCond %{HTTP_USER_AGENT} ^$ [OR] RewriteCond %{HTTP_USER_AGENT} (curl|wget|file_get_contents|python|scrapy) [NC] # 放行谷歌、必应、雅虎的合法爬虫 RewriteCond %{HTTP_USER_AGENT} !(Googlebot|Bingbot|Yahoo! Slurp) [NC] # 返回403禁止访问 RewriteRule ^ - [F,L]
方法二:在主题functions.php中添加代码
如果不想修改.htaccess,可以在当前主题的functions.php末尾加入以下PHP代码:
add_action('init', 'block_malicious_scrapers'); function block_malicious_scrapers() { // 定义要拦截的恶意UA关键词 $blocked_agents = array('curl', 'wget', 'file_get_contents', 'python', 'scrapy'); $user_agent = strtolower($_SERVER['HTTP_USER_AGENT'] ?? ''); // 检查UA是否符合拦截规则 if (empty($user_agent) || preg_match('/(' . implode('|', $blocked_agents) . ')/', $user_agent)) { // 放行合法搜索引擎爬虫 $allowed_agents = array('googlebot', 'bingbot', 'yahoo! slurp'); foreach ($allowed_agents as $allowed) { if (strpos($user_agent, $allowed) !== false) { return; } } // 返回403禁止访问 wp_die('Access Denied', 'Forbidden', array('response' => 403)); } }
2. 拉黑恶意IP(精准打击)
查看你的服务器访问日志(通常在/var/log/apache2/或/var/log/nginx/目录下),找到频繁访问的可疑IP,直接在.htaccess中拉黑:
deny from 123.45.67.89 deny from 192.168.0.0/24 # 拉黑整个IP段
如果嫌手动麻烦,可以用WordPress插件比如Wordfence Security来自动识别和拉黑异常IP。
3. 启用专业防爬插件(长期防护)
安装并配置专业的安全插件,这类插件能实时监控访问行为,自动拦截恶意抓取:
- Wordfence Security:自带爬虫检测、IP黑名单、访问频率限制功能,还能扫描网站漏洞。
- iThemes Security:提供类似的防爬和安全防护,操作更简洁。
4. 动态内容混淆(进阶防御)
恶意抓取工具通常不会执行JavaScript,你可以将部分核心内容通过JS动态加载,让克隆站无法获取完整内容。比如在主题模板中加入:
<div class="dynamic-post-content"> <script> // 动态加载文章内容 document.write('<p><?php echo esc_js(get_the_content()); ?></p>'); </script> </div>
这个方法会增加克隆站的抓取难度,但不会影响正常用户访问。
5. 移除谷歌搜索中的克隆站
既然克隆站已被谷歌收录,你需要提交DMCA下架请求:
- 登录谷歌搜索控制台,找到「移除内容」选项。
- 提交克隆站的URL,并提供你的原创网站证明(比如域名注册信息、网站内容版权证明)。
- 谷歌通常会在几个工作日内处理,将克隆站从搜索结果中移除。
最后提醒
- 定期检查服务器访问日志,及时更新拦截规则;
- 保持WordPress核心、主题和插件为最新版本,避免被利用漏洞;
- 如果以上方法都无效,可以考虑启用CDN的防爬功能,进一步过滤恶意请求。
内容的提问来源于stack exchange,提问作者volkan
相关产品推荐
相关产品推荐

