今天,突然发现网站打开慢,几乎打不开,到宝塔面板查看,服务器负载达到了100%,其他页面都无法进行,终端无法打开,立即反馈给服务商,但是到他们检查的时候,却恢复了正常,那就说明,就是几分钟的功夫的事。
网站日志显示了有很多爬虫,就是GPTBot爬虫,估计这就是罪魁祸首。
所以,第一步的措施就是对这些所有的爬虫进行显示,我用的是nginx服务器,所以,配置如下:
if ($http_user_agent ~* "Apache-HttpClient|Bytespider|Java|PhantomJS|SemrushBot|Scrapy|Webdup|AcoonBot|AhrefsBot|Ezooms|EdisterBot|EC2LinkFinder|jikespider|Purebot|MJ12bot|WangIDSpider|WBSearchBot|Wotbox|xbfMozilla|Yottaa|YandexBot|Jorgee|GPTBot|SWEBot|spbot|TurnitinBot-Agent|mail.RU|perl|Python|Wget|Xenu|ZmEu|^$" )
{
return 444;
}
其他的也贴出来,供大家参考;在配置文件中按以下系统规则配置
Linux下 规则文件.htaccess(手工创建.htaccess文件到站点根目录)
如果是正常的搜索引擎蜘蛛访问,不建议对蜘蛛进行禁止,否则网站在百度等搜索引擎中的收录和排名将会丢失,造成客户流失等损失。可以优先考虑升级虚拟主机型号以获得更多的流量或升级为云服务器(不限流量)。
我这网站巴不得百度蜘蛛来访问呢,因为百度收录排名了,流量也就来了。这对于站长来说是非常好的事情。但是一些国外的,咱们用不到的,不知名的,最好屏蔽掉,否则,频繁的爬取,系统的负载也是不能承受的。会影响网站的正常使用。
<IfModule mod_rewrite.c>
RewriteEngine On
#Block spider
RewriteCond %{HTTP_USER_AGENT} "Apache-HttpClient|SemrushBot|Webdup|AcoonBot|AhrefsBot|Ezooms|EdisterBot|EC2LinkFinder|jikespider|Purebot|MJ12bot|WangIDSpider|WBSearchBot|Wotbox|xbfMozilla|Yottaa|YandexBot|Jorgee|SWEBot|spbot|TurnitinBot-Agent|mail.RU|curl|perl|Python|Wget|Xenu|ZmEu" [NC]
RewriteRule !(^robots\.txt$) - [F]
</IfModule>
windows2003下 规则文件httpd.conf
#Block spider
RewriteCond %{HTTP_USER_AGENT} (Apache-HttpClient|SemrushBot|Webdup|AcoonBot|AhrefsBot|Ezooms|EdisterBot|EC2LinkFinder|jikespider|Purebot|MJ12bot|WangIDSpider|WBSearchBot|Wotbox|xbfMozilla|Yottaa|YandexBot|Jorgee|SWEBot|spbot|TurnitinBot-Agent|mail.RU|curl|perl|Python|Wget|Xenu|ZmEu) [NC]
RewriteRule !(^/robots.txt$) - [F]
windows2008下 web.config
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<system.webServer>
<rewrite>
<rules>
<rule name="Block spider">
<match url="(^robots.txt$)" ignoreCase="false" negate="true" />
<conditions>
<add input="{HTTP_USER_AGENT}" pattern="Apache-HttpClient|SemrushBot|Webdup|AcoonBot|AhrefsBot|Ezooms|EdisterBot|EC2LinkFinder|jikespider|Purebot|MJ12bot|WangIDSpider|WBSearchBot|Wotbox|xbfMozilla|Yottaa|YandexBot|Jorgee|SWEBot|spbot|TurnitinBot-Agent|curl|perl|Python|Wget|Xenu|ZmEu" ignoreCase="true" />
</conditions>
<action type="AbortRequest" />
</rule>
</rules>
</rewrite>
</system.webServer>
</configuration>
Nginx对应屏蔽规则,代码需添加到对应站点配置文件server段内
if ($http_user_agent ~* "Apache-HttpClient|Bytespider|Java|PhantomJS|SemrushBot|Scrapy|Webdup|AcoonBot|AhrefsBot|Ezooms|EdisterBot|EC2LinkFinder|jikespider|Purebot|MJ12bot|WangIDSpider|WBSearchBot|Wotbox|xbfMozilla|Yottaa|YandexBot|Jorgee|SWEBot|spbot|TurnitinBot-Agent|mail.RU|perl|Python|Wget|Xenu|ZmEu|^$" )
{
return 444;
}
注:规则中默认屏蔽部分不明蜘蛛,要屏蔽其他蜘蛛按规则添加即可
附各大蜘蛛名字:
google蜘蛛:googlebot
百度蜘蛛:baiduspider
百度手机蜘蛛:baiduboxapp
yahoo蜘蛛:slurp
alexa蜘蛛:ia_archiver
msn蜘蛛:msnbot
bing蜘蛛:bingbot
altavista蜘蛛:scooter
lycos蜘蛛:lycos_spider_(t-rex)
alltheweb蜘蛛:fast-webcrawler
inktomi蜘蛛:slurp
有道蜘蛛:YodaoBot和OutfoxBot
热土蜘蛛:Adminrtspider
搜狗蜘蛛:sogou spider
SOSO蜘蛛:sosospider
360搜蜘蛛:360spider
这里着重说一下GPTBot爬虫
GPTBot爬虫的介绍OpenAI 在没有正式宣布的情况下,于本周发布了一项网站爬虫规范GPTbot。一旦被大模型爬虫爬取,也意味着你的数据无法从公共数据集中删除。例如比较有名的公共数据集 Common Crawl(翻译成中文是“常见爬取”或“通用爬虫”),常被用于训练 OpenAI 的 ChatGPT。官网上挂个说明,可能是为了宣布有这么个事,如果你感到权益受损,可以按文档中的操作进行阻止。
GPTBot其实是一个网络爬虫。
网络爬虫,有时称为网络蜘蛛,是一种为互联网上的网站内容编制索引的机器人。
像谷歌百度这样的搜索引擎会使用它们,以便网站显示在搜索结果中。
OpenAI表示,网络爬虫将从互联网上收集公开可用的数据,但会过滤掉需要付费内容的来源,或者已知收集个人身份信息的来源,或者包含违反其政策的文本。
GPTBot可用来抓取海量数据训练和优化未来的AI模型。不少国外科技媒体八卦认为,这个未来的AI模型剑指GPT-5。
上个月,OpenAI提交了GPT-5商标申请,此时又放出这个网络爬虫,确实可以联想出,GPT-5离我们越来越近了。
屏蔽方法
OpenAI已公开GPTBot的IP地址,网站所有者除了可以通过向服务器上的标准文件添加“disallow”命令来拒绝GPTBot访问外,还能以IP地址为单位阻止GPTBot的访问。下一步工作
1、创建robots.txt文件
要阻止所有子域名下的内容不被任何搜索引擎爬虫爬取,支队将在每个子域的根目录下放置一个 robots.txt 文件,并在每个文件中写入以下规则:
User-agent: *
Disallow: /
这里的 User-agent: * 表示规则适用于所有的爬虫,而 Disallow: / 则指示爬虫禁止爬取该子域下的所有目录和页面。
在安全设备上匹配关键词
GPTBot是OpenAI的网络爬虫,支队可以通过以下用户代理和字符串来识别,并在安全设备上匹配关键字进行拦截。
User agent token: GPTBot
Full user-agent string: Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.0; +https://openai.com/gptbot)
在防火墙上限制
为了防止有人冒充 GPTbot,OpenAI 公布了自己使用的网段,如下是网上公开的使用网段和GPTbot正在使用的网段,支队将在防火墙上进行封禁:
52.230.152.0/24
52.233.106.0/24
20.15.240.64/28
20.15.240.80/28
20.15.240.96/28
20.15.240.176/28
20.15.241.0/28
20.15.242.128/28
20.15.242.144/28
20.15.242.192/28
这个我实验过了,好像加到robots.txt里,不怎么管用,最好的方法就是再配置文件中,设置规则,只要是规则里的蜘蛛,一概屏蔽,返回444状态码,就可以解决这个因为爬虫造成的负载问题。