WP防爬虫内容保护:让爬虫无机可乘:WordPress防爬虫

让爬虫无机可乘:WordPress防爬虫内容保护实操指南
很多站长辛苦写的文章被爬虫一键采集,流量和原创价值被剥夺。
WordPress 防爬虫内容保护并不复杂,本文用两种方法——修改 .htaccess 文件和安装插件,让你十分钟内就能挡住大多数恶意爬虫。
无论你用宝塔面板还是纯命令行,都能跟着做。
确认你的运行环境
操作前先确认两件事:
- 你的服务器是 Apache 还是 Nginx?如果你用的宝塔面板,可以在网站设置里看到“运行环境”字样。如果显示 Apache,可以直接使用 .htaccess;如果是 Nginx,需要使用 Nginx 的配置文件方式(本文也会给出对应命令)。
- 确保你有 网站根目录的写入权限。在宝塔面板中,网站根目录一般默认有读写权限;如果你用命令行,可以切换到
/www/wwwroot/你的站点目录目录下执行操作。
方法一:通过 .htaccess 阻挡爬虫(Apache 环境)
这是最轻量的方式,无需安装任何插件。
1. 找到或创建 .htaccess 文件
进入网站根目录(例如 /www/wwwroot/example.com/),用宝塔面板的“文件”管理器或者 SSH 连接后,查看是否已有 .htaccess 文件(以点开头)。
如果没有,创建一个空白文件,命名为 .htaccess。
2. 添加屏蔽规则
在 .htaccess 文件的最上方( 之前)添加以下代码:
# 开始屏蔽常见恶意爬虫
RewriteEngine On
RewriteCond %{HTTP_USER_AGENT} (SemrushBot|AhrefsBot|MJ12bot|DotBot|DataForSeoBot|Cliqzbot|BLEXBot|SeznamBot) [NC]
RewriteRule ^.* - [F,L]
结束屏蔽
说明:这里屏蔽了 SemrushBot、AhrefsBot、MJ12bot 等常见采集爬虫。[NC]表示不区分大小写,[F,L]表示返回 403 禁止访问。
如果你想让被屏蔽的爬虫看到一段“禁止采集”的提示,而不是直接 403 空白页,可以把最后一行改成:
RewriteRule ^.* /blocked.html [R=403,L]同时需要在根目录创建一个 blocked.html 文件,里面写“Your access has been blocked.”等文字。
3. 保存并验证
保存 .htaccess 文件。
用在线 User-Agent 检测工具(例如 useragentstring.com)模拟被屏蔽的爬虫 UA 访问你的网站,如果返回 403 则生效。
方法二:使用专用插件(适合所有环境)
如果你不想碰代码,或者服务器是 Nginx,推荐使用 “Block Bad Bots” 或 “Wordfence Security” 插件。
这里以 Block Bad Bots 为例:
- 在 WordPress 后台 → 插件 → 安装插件,搜索 “Block Bad Bots”。
- 安装并启用。激活后进入设置页面。
- 在 “Bad Bots” 选项卡中,勾选你希望拦截的爬虫列表(SemrushBot、AhrefsBot、DotBot 等)。
- 开启 “Complete Block” 选项(返回 503 或 403 状态码)。
- 点击“Save Settings”保存。
插件的好处是无需修改服务器文件,更新爬虫列表也更方便。
但注意:插件会增加少量的 PHP 请求开销,对于高流量站,.htaccess 方式性能更好。
常见问题与避坑说明
Q1:屏蔽后自己网站打不开怎么办?
原因:可能误屏蔽了正常搜索引擎(如 Googlebot)或自己使用爬虫工具时也被屏蔽。
解决:
- 检查 .htaccess 或插件设置的屏蔽列表是否包含了
Googlebot、Bingbot、Baiduspider等。这些正常搜索引擎不要屏蔽。 - 如果插件误杀,可以暂时禁用插件,在插件设置里勾掉误选项目后再启用。
Q2:Nginx 环境下如何实现类似功能?
Nginx 不支持 .htaccess。
你需要编辑站点配置文件(如 /www/server/panel/vhost/nginx/你的域名.conf)。
在 server 块内添加:
if ($http_user_agent ~* (SemrushBot|AhrefsBot|MJ12bot|DotBot|DataForSeoBot|Cliqzbot|BLEXBot|SeznamBot)) {
return 403;
}保存后执行 nginx -t 测试配置,然后 systemctl reload nginx 生效。
Q3:为什么屏蔽后还是看到爬虫访问日志?
爬虫可能使用了伪造的 User-Agent(比如伪装成 Chrome)。
.htaccess 和插件只能拦截表里列出的 UA,无法拦截伪装。
更高级的防爬需要结合 IP 频率限制或验证码。
你可以考虑配合 Wordfence 的速率限制 或 Cloudflare 的 WAF 规则来双重保护。
效果验证
验证方法有两种:
- 使用 cURL 命令 模拟指定 UA:
curl -I -A "SemrushBot/7.0" https://你的域名如果返回 HTTP/1.1 403 Forbidden,说明拦截成功。
- 查看网站访问日志:
- 宝塔面板 → 网站 → 日志,搜索“SemrushBot”等关键词。如果不再出现,说明拦截生效。
建议屏蔽后持续观察 24 小时,确认正常蜘蛛(Google、Bing、百度)仍能正常抓取,非预期爬虫减少。
如果你正在处理 WP 防爬虫内容保护,建议先按本文步骤完整执行,再根据自己的环境做微调;
遇到异常时优先回看避坑和高频问题部分。