如何拦截恶意404页面 杜绝恶意机器人爬虫以及黑帽SEO欺诈

常见的恶意网站攻击行为

黑帽SEO vs 白帽SEO

黑帽 SEO
  • 违规性:黑帽SEO是指采用违反搜索引擎准则和规则的技术和策略来提高网站在搜索引擎结果中的排名。这些技术可能会给用户带来负面的体验,并且存在被搜索引擎检测到并惩罚的风险。
  • 举例:黑帽SEO的例子包括使用关键字填充、隐藏文本或链接、购买大量低质量的链接等手段来欺骗搜索引擎算法。
  • 风险:黑帽SEO的风险在于其短期的效果可能很快,但一旦被搜索引擎检测到,网站可能会受到严重的惩罚,包括降低排名、从搜索结果中删除甚至永久封禁。
白帽 SEO
  • 合法性:白帽SEO是指遵循搜索引擎规则和准则的优化技术和策略。这些技术旨在提高网站在搜索引擎结果中的排名,但是通过合法和伦理的手段实现。
  • 举例:白帽SEO的例子包括优化网站内容质量和关键字,改善网站用户体验,建立良好的内部和外部链接等。
  • 优点:白帽SEO的优点在于其长期稳定的效果,以及对网站品牌和声誉的积极影响。白帽SEO技术不会使网站受到搜索引擎的惩罚或封禁。

总的来说,白帽SEO注重长期的可持续性和网站的品牌形象,
而黑帽SEO则追求短期的效果而忽视了风险和道德准则。

什么是恶意机器人

指的是那些被设计成在网络上执行自动任务的程序。
这些程序可能会被用于执行恶意行为,
比如扫描网站以发现漏洞、爬取网站内容以进行盗用或者滥用。

什么是恶意404页面

指的是当用户访问一个不存在的页面时,服务器返回的页面。
恶意404页面可能被设计成伪装成合法网站,引导用户访问恶意链接或下载恶意软件。

URL跳转漏洞 和 开放重定向漏洞

URL跳转漏洞(URL Redirection Vulnerability)
开放重定向漏洞(Open Redirect Vulnerability)
这两种漏洞都涉及到网站在处理URL跳转时的安全性问题。
攻击者可以利用这些漏洞来进行钓鱼攻击,
将用户重定向到恶意网站,或者窃取用户的登录凭证等敏感信息。

如何知道是否被恶意攻击

Google Search Console 查看
  • 如果你有绑定GSC,可以在编辑索引→ 页面查看
Wordfence 查看
  • 进入wordfence菜单 → 工具 → 实时流量
WordPress 插件 (推荐)
  • 这里介绍 Redirection 插件
分析这些恶意 User Agent 执行场景

这段代码是Googlebot爬虫在Nexus 5X手机上运行Chrome浏览器时的标识。

  • 手机型号: Nexus 5X
  • 发布时间: 2015年10月
  • 制造商: LG
  • 系统: Android 6.0.1 Marshmallow
  • 发布时间: 2015年10月
  • 浏览器类型: Chrome
  • 版本: 122.0.6261.94
  • 发布时间: 2023年11月14日
  • 内核: Blink
  • 版本: 122.0.6261.94
  • 爬虫: Googlebot 2.1 (Googlebot是Google用于索引网页的爬虫)

关于404页面

当页面不存在时,指的是显示为“未找到”,“404未找到”,“404错误”的错误页面称为404错误页面,将此404错误页面设置为具有顶部页面链接和分类页面链接等的自定义页面称为自定义404页面。

抑制跳出率

在自定义404页面中,您可以自由设置链接到主页、热门文章的链接、联系表单等。
有链接可以防止跳出率,用户更容易找到他们想要的页面。
如果没有链接,尽管对SEO没有直接影响,但会降低用户的信任度。
与通常的404页面相比,创建自定义404页面会使跳出率有很大的差异,因为有链接可以避免用户的跳出。

增加用户滞留率 并强化SEO

设置自定义404页面有一个好处,那就是增加用户的滞留率。
通过在自定义404页面中设置站点内链接,不仅使用户更容易浏览站点内的内容,而且使搜索引擎的爬虫更容易巡回。
为了设计不会妨碍用户和爬虫行为的网站,创建自定义404页面非常重要。

减少不安感

由于设计可以自由设置,与简陋的常规错误页面相比,不会给用户带来不安感。
通过给用户带来与网站相同的设计感,可以提高他们浏览其他页面的机会。
通过将错误页面定制成不像错误页面,可以减少用户的不安感,这是一个优点。

硬 404 「Hard 404」

  • 指向不存在的页面,服务器确切地表明页面或资源不存在。
  • 返回HTTP状态码为404 Not Found。
  • 通常是由于页面被删除或移动而导致的真实404错误。
  • 搜索引擎会将不存在的页面从索引中移除。
  • 用户明确地得知页面不存在,这可以帮助他们找到其他相关内容或返回上一页。
  • 通常需要修复链接,确保指向的页面存在,或者提供有效的重定向。

软 404 「Soft 404」

  • 指向存在的页面,但服务器错误地表明页面不存在。
  • 通常返回HTTP状态码为200 OK,而不是404 Not Found。
  • 虽然页面实际上存在,但内容可能是空白的、不完整的,或者与用户请求的内容不匹配。
  • 搜索引擎有时会将软404页面当作存在的页面进行处理,并可能将其收录到索引中。
  • 用户可能会被误导,以为页面不存在,但实际上它是存在的,这可能导致混淆和不良的用户体验。
  • 需要检查服务器配置和网站代码,确保正确处理页面存在与否的情况,以便正确返回相应的HTTP状态码。

硬404是服务器明确告诉用户所请求的页面不存在,
而软404是在HTTP状态码为200的情况下返回一个类似404的页面。

在SEO方面,搜索引擎通常更喜欢硬404,因为它们明确指示页面不存在,
而软404可能会被误解为页面存在但内容不可用。
因此,网站管理员通常会努力避免软404,
并确保正确返回硬404以提供更好的用户体验和搜索引擎优化。

如何判断是否是硬404还是软404页面

  • 直接访问页面:尝试访问你怀疑存在问题的页面,查看是否显示了404错误页面。如果显示了404错误页面,那么很可能是硬404错误。如果显示了正常的页面内容但包含类似于“页面未找到”或“没有结果”的信息,那么可能是软404错误。
  • 使用在线工具:有一些在线工具可以帮助检测网站中的404错误。你可以使用这些工具输入你的网站URL,它们会扫描并列出所有的404错误页面。然后你可以检查每个错误页面,判断是否是硬404或软404。常用的工具包括Screaming Frog、Google Search Console等。
  • 检查网站日志:查看服务器日志或网站分析工具中的404错误报告。这些报告会列出所有访问了不存在页面的请求,你可以通过查看请求的URL来确定是否出现了404错误,然后进一步判断是硬404还是软404。
  • 使用浏览器开发者工具:在浏览器中打开开发者工具,查看网络选项卡。访问页面时,如果页面返回404错误,你会在网络选项卡中看到相应的请求返回404状态码。如果页面返回200状态码但内容类似于404错误页面,那么可能是软404错误。

创建你的404页面

手动创建HTML页面

创建一个HTML文件,命名为404.html

在该HTML文件中编写404错误页面的内容,例如:

HTML
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>404 Not Found</title>
</head>
<body>
<h1>404 Not Found</h1>
<p>The page you are looking for could not be found. Please check the URL or go back to the <a href="/">homepage</a>.</p>
</body>
</html>

将该HTML文件上传至你的网站服务器上。
配置服务器,使其在检测到404错误时自动显示该HTML页面。

使用服务器配置(例如Apache服务器):

对于Apache服务器,可以通过编辑.htaccess文件来配置404页面。
.htaccess文件中添加以下代码:

.htaccess
ErrorDocument 404 /404.html

保存.htaccess文件并上传至网站根目录。

使用服务器端脚本(例如PHP):

创建一个PHP文件,命名为404.php
在该PHP文件中编写404页面的内容,并设置HTTP状态码为404,例如:

php
<?php
http_response_code(404);
?>
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>404 Not Found</title>
</head>
<body>
<h1>404 Not Found</h1>
<p>The page you are looking for could not be found. Please check the URL or go back to the <a href="/">homepage</a>.</p>
</body>
</html>

将该PHP文件上传至网站服务器上。
配置服务器,使其在检测到404错误时执行该PHP文件。

使用CMS或网站构建工具

当使用CMS(内容管理系统)或网站构建工具时,创建404页面通常比较简单,
因为这些平台通常提供了内置的404页面设置功能。
以下是使用几种常见的CMS和网站构建工具创建404页面的简要说明:

Squarespace

  • 登录Squarespace账户并选择你的网站。
  • 在编辑模式下,点击“设置” > “高级” > “404页面”。
  • 在这里,你可以自定义404页面的内容,包括文本、图片、按钮等。
  • 保存更改后,Squarespace会将你编辑的内容用作404错误页面。

Joomla

  • 登录Joomla后台管理界面。
  • 导航到系统(System) > 全局配置(Global Configuration) > 调试(Debugging)。
  • 在调试选项卡中,你可以设置404页面的标题和消息。
  • 保存更改后,Joomla会自动使用你设置的内容作为404错误页面的内容。

Wix

  • 登录Wix账户并选择你的网站。
  • 在编辑模式下,点击页面菜单,然后选择“管理页面”。
  • 在“管理页面”中,你可以添加一个自定义页面,将其命名为“404页面”。
  • 在404页面上,你可以自定义内容,包括文本、图片、按钮等。
  • 完成后,保存更改,Wix会将你创建的页面设为404错误页面。

WordPress

  • 登录WordPress后台管理界面。
  • 导航到外观(Appearance) > 自定义(Customize) > 404错误页面(404 Error Page)。
  • 在这里,你可以自定义404页面的内容,通常可以直接编辑文本或插入组件、图片等。
  • 保存更改后,WordPress会自动将你编辑的内容应用于404错误页面。

很多CMS(如WordPress)提供了各种插件,可以帮助用户创建和定制404错误页面。
这些插件通常提供了更多的功能和选项,使得创建404页面更加灵活和便捷。
以下是一些常用的WordPress插件,可以用来创建自定义404页面:

  • 404page:这是一个专门用来创建自定义404页面的WordPress插件。它提供了一个简单的界面,让用户可以轻松地自定义404页面的内容、样式和布局。
  • Custom 404 Pro:这是另一个功能强大的WordPress插件,可以帮助用户创建自定义404页面。它提供了丰富的模板和组件,让用户可以根据自己的需要来定制404页面。
  • Elementor:虽然Elementor主要是一个页面构建插件,但它也可以用来创建404页面。通过Elementor,用户可以使用拖拽方式来设计404页面,添加文本、图片、按钮等元素。
  • Divi:Divi是另一个流行的WordPress页面构建插件,也可以用来创建404页面。它提供了大量的模块和布局选项,用户可以根据自己的喜好来设计404页面。

利用 robots.txt 文件拦截

在你的网站根目录下创建robots.txt文件
使用Disallow指令来阻止搜索引擎爬虫访问一些敏感的页面或目录。

创建或编辑robots.txt文件

  • 你可以使用文本编辑器(如记事本、TextEdit等)创建robots.txt文件。
    打开文本编辑器,并输入你希望包含在robots.txt文件中的内容。
  • 在WordPress中,你还可以使用插件来修改和创建robots.txt文件
    Yoast SEO
    Yoast SEO是一个功能强大的WordPress插件,它提供了广泛的搜索引擎优化功能,包括编辑和创建robots.txt文件。通过Yoast SEO插件,你可以轻松地编辑和更新robots.txt文件,并控制搜索引擎爬虫对你的网站的访问。
    All in One SEO Pack
    All in One SEO Pack是另一个流行的WordPress插件,它也提供了编辑和创建robots.txt文件的功能。使用All in One SEO Pack,你可以自定义robots.txt文件,以控制搜索引擎爬虫对你的网站的访问。
    Rank Math
    Rank Math是一款功能全面的WordPress SEO插件,它也提供了编辑和创建robots.txt文件的功能。通过Rank Math插件,你可以轻松地定制robots.txt文件,并控制搜索引擎爬虫的行为。

屏蔽特定目录或文件

robots.txt
User-agent: *
Disallow: /admin/
Disallow: /private-file.html
  • 这将阻止所有搜索引擎爬虫访问/admin/目录和/private-file.html文件。

屏蔽特定搜索引擎爬虫

robots.txt
User-agent: BadBot
Disallow: /
  • 这将禁止名为BadBot的搜索引擎爬虫访问网站上的所有页面。

设置不同的规则给不同的搜索引擎爬虫

robots.txt
User-agent: Googlebot
Disallow: /private/

User-agent: Bingbot
Disallow: /admin/
  • 这将阻止Googlebot访问/private/目录,而阻止Bingbot访问/admin/目录。

设置访问延迟

robots.txt
User-agent: *
Crawl-delay: 10
  • 这将告诉所有搜索引擎爬虫在访问你的网站时要延迟10秒。

允许特定搜索引擎爬虫访问特定目录

robots.txt
User-agent: Googlebot
Disallow:

User-agent: *
Disallow: /
  • 这将只允许Googlebot访问你的整个网站,而禁止其他搜索引擎爬虫访问。

对新手来说比较简单,直接粘贴复制就可以实现。

部分恶意机器人可以伪装成合法搜索引擎爬虫的User-agent,以逃避robots.txt文件的限制。
这样一来,就很难通过robots.txt文件来区分恶意机器人和合法爬虫。

利用 Cloudflare 拦截

Cloudflare自带拦截恶意机器人选项

进入 Cloudflare 设置→安全性→自动程序 选项

拦截IP地址/国家/主机名/http.cookie等

更多关于Cloudflare的设置可参考下面详细教程

Cloudflare提供了自动识别和拦截恶意机器人的功能,以及地区IP拦截功能,可以帮助保护您的网站免受恶意攻击和未经授权的访问。无需苦恼那些经常替换的恶意机器人。

Cloudflare防火墙规则仅允许您在免费计划中阻止最多5个主机名。如果要更多只能升级计划。

利用 wordfence 插件拦截

防火墙自动检测拦截

进入 Wordfence设置→防火墙→限速 选项

进入 防火墙→拦截 选项

当前被for-tiger.com屏蔽的黑名单:一旦你配置了Wordfence来阻止恶意机器人,你就可以看到所有被阻止访问你网站的机器人的登录信息,它们的IP地址以及它们被阻止的次数。

通过分析攻击的 IP地址范围拦截

参照前面提到过的 Redirection 插件,找出你认为的恶意IP地址

更多关于wordfence的设置可参考下面详细教程

简单易操作,可自动检测问题攻击对象IP地址,也可以自行自定义拦截范围。

虽说wordfence有阻止坏机器人的阻止选项,但插件本身可能会影你的WordPress网站访问速度,
如果配置不正确,甚至有可能阻止合法人类或抓取者。

利用 Blackhole For Bad Bots 插件拦截

在wordpress插件→安装插件→搜索:Blackhole For Bad Bots

进入设置界面
  • Robots Rules:这是要添加到robots.txt文件中的规则。
  • Email Alerts:确定是否通过电子邮件接收阻止通知。
  • Email Address:输入接收通知的电子邮件地址。
  • From Address:输入用于电子邮件头部的发件人地址。
  • Front-end Display:自定义黑洞在前端的外观。
  • Blocked Message:阻止消息:显示给被阻止的机器人的消息
    默认消息(显示一些基本文本和标记)
    自定义消息(在下一个设置中定义您自己的消息)
    进入虚空(显示一个带有黑色背景的空白页面)
  • 自定义消息:自定义的阻止消息(当在前一个设置中选择自定义时)

最老牌的拦截恶意机器人插件

期初免费使用的,后面开始需要收费才能监测恶意机器人。
已经不太推荐使用了。

利用宝塔面板免费防火墙拦截

首先你需要给你的宝塔安装一个防火墙

上面的是需要收费的,当然你可以利用第三方应用,为你的宝塔安装免费版Nginx防火墙

免费版Nginx防火墙安装步骤

进入软件商店→搜索【防火墙】
英文版aaPanel的搜索【Nginx free firewall】
进入设置就可以看到各种功能界面

继承:全局设置将在站点配置中自动继承为默认值
优先级:UA白名单> UA黑名单> URL关键词拦截> IP白名单 > IP黑名单 > URL白名单 > URL黑名单 > CC防御 > 禁止国外IP访问 > User-Agent > URI过滤 > URL参数 > Cookie > POST

屏蔽机器人-屏蔽主机-屏蔽系统

User-Agent过滤,是一种非常有用的安全措施,可以帮助你保护网站免受恶意用户代理的攻击。通过用户代理过滤,你可以对访问网站的用户代理进行检查,并根据设定的规则允许或者拒绝访问。

  • 阻止恶意爬虫: 你可以通过过滤特定的用户代理来阻止恶意爬虫或者自动化工具访问你的网站。这些恶意爬虫可能会消耗你的服务器资源,或者尝试对你的网站进行恶意攻击。
  • 防止恶意请求: 有些攻击者会使用自定义的用户代理来尝试绕过常规的安全检查,因此你可以设置过滤规则来拒绝这些恶意的用户代理,从而保护你的网站免受攻击。
  • 限制访问权限: 你可以根据用户代理来限制访问权限,例如只允许特定类型的用户代理访问敏感页面或者资源,从而提高网站的安全性。
  • 保护敏感内容: 如果你的网站包含有敏感内容,你可以通过用户代理过滤来确保只有合法的用户代理可以访问这些内容,从而保护你的敏感信息不被未经授权的用户获取。
分析这些恶意 User Agent 执行场景

这段代码是Googlebot爬虫在Nexus 5X手机上运行Chrome浏览器时的标识。

  • 手机型号: Nexus 5X
  • 发布时间: 2015年10月
  • 制造商: LG
  • 系统: Android 6.0.1 Marshmallow
  • 发布时间: 2015年10月
  • 浏览器类型: Chrome
  • 版本: 122.0.6261.94
  • 发布时间: 2023年11月14日
  • 内核: Blink
  • 版本: 122.0.6261.94
  • 爬虫: Googlebot 2.1 (Googlebot是Google用于索引网页的爬虫)

很多爬虫机器人,为了能高效运行指令,用的都是廉价设备,你完全可以考虑拦截掉一些10年前的产品或是系统。

如何修改【60秒以内累计超过6次以上非法请求,封锁180秒】

修改60秒以内累计超过6次以上非法请求,封锁180秒

这个是进阶篇,可能有不少同学查看日志发现,某些IP被疯狂访问,以至于系统疯狂累计增加封锁时长。

然后各位找遍了设置菜单都没发现能修改的地方

系统默认的60秒以内累计超过6次以上非法请求太激进了,
有些IP一下子被累计封锁14400秒,
我找不到在哪修改这个参数。

毕竟是免费防火墙,已经常年为更新,
可能都忘记这个没给用户设置了吧。
放心,通过下面路径可以实现修改。

Before 修改前
After 修改后
打开宝塔左侧菜单中的【文件】选项
从根目录开始找到 /www/server/free_waf/conhg.json
按照图片说明修改参数
  • “retry”: 6【累计超过6次以上非法请求】
  • “retry_cycle”: 60【60秒以内】
  • “retry_time”: 180【封锁180秒】
保存后,记得一定要重新开关防火墙按钮(需要刷新刚才的配置)

直接从服务器端进行的过滤拦截,要比网页端屏蔽更安全靠谱,也更加安全。

设置后会立竿见影,但也伴随间接影响真实的爬虫机器人对你的网站访问。
你需要花一些时间去微调,从中也难免需要做取舍。

黑帽SEO衰退 以及带来的风险

  • 短期收益与长期风险:
    尽管黑帽SEO可以在短期内带来网站排名和流量的提升,但其伴随的长期风险是不可忽视的。一旦搜索引擎(特别是Google)发现了违规行为,会受到演算法的惩罚,导致网站排名急剧下降甚至完全消失在搜索结果页上,给网站带来严重后果。
  • 搜索引擎的惩罚:
    一旦被搜索引擎发现使用黑帽SEO手法,网站可能会受到严重的惩罚。这可能包括降低排名、从搜索引擎索引中删除甚至完全封禁,对网站的流量和可见性造成严重损失。
  • 行业差异与风险考量:
    主要采用黑帽SEO手法的行业多为博彩和色情产业。这些行业竞争激烈,关键词敏感,容易受到搜索引擎限制。因此,一些网站可能冒险使用黑帽SEO来快速获取流量和提升排名,但其风险极高。
  • 可持续发展策略:
    尽管黑帽SEO可能看似诱人,但长远来看,白帽SEO才是更可持续和可靠的选择。白帽SEO强调合法、诚实、有机的优化策略,可以帮助网站建立稳固的排名和良好的声誉,为持续发展奠定基础。
  • 强调风险与警示:
    鉴于黑帽SEO的高风险性,我们强烈警示大家不要轻易尝试。一时的短期利益很可能会带来长期的损失和后悔。因此,我们建议网站管理员和营销人员坚持合法、诚实和可持续的SEO方法,以实现网站的长期稳健发展。

总结

恶意机器人和黑帽SEO攻击确实可能会非常具有挑战性,
因为攻击者会不断改变他们的策略和手段,以规避防御措施。
尽管如此,仍然有一些策略可以尝试,以减轻这种攻击带来的影响,
你可能还需要考虑以下几点:

  • 实时监控和自动响应: 部署实时监控系统,并设置自动响应规则,以便在发现异常活动时立即采取行动。这样可以快速应对攻击,并减少对网站的影响。
  • 改变页面结构或URL: 如果可能的话,考虑对网站页面结构或URL进行调整,使其不容易被攻击者利用。这可能需要对网站进行一定的重新设计和开发工作,但可以有效地减少攻击的成功率。
  • 加强验证码和人机验证: 在关键页面或操作上增加验证码或人机验证,以确保访问者是真实用户而不是机器人。这可以有效地阻止大部分自动化攻击。
  • 与网络安全专家合作: 如果你无法解决这个问题,考虑与专业的网络安全公司或顾问合作,寻求他们的帮助和建议。他们可能有更丰富的经验和专业知识,能够帮助你更好地应对这种持续的攻击。
  • 定期审查和更新安全策略: 定期审查你的安全策略,并根据最新的威胁情报和攻击技术进行更新。保持对安全领域的关注,及时调整你的安全措施,以应对不断变化的威胁。

总的来说,面对恶意机器人和黑帽SEO攻击,
需要综合利用多种安全措施,并不断优化和调整你的防御策略。
虽然无法完全杜绝攻击,但通过持续的监控和响应,
可以最大程度地减少攻击对你网站的影响。