由于我的网站遭受了一些业余爱好者制造的 DDOS 攻击,我不得不使用 .htaccess 拒绝一些流量,这很有效。
不幸的是,它也阻止了 googlebot/bingbot:
order allow, deny
deny from 54.
SetEnvIfNoCase Referer "^$" bad_user
SetEnvIfNoCase User-Agent "^Wget" bad_user
Deny from env=bad_user
它只是阻止了整个流量54.x.x.x
(我从中获取的唯一流量来自受感染的亚马逊云 - 我知道我可以排除亚马逊云的 30 个 IP 范围而不是全部,54.x.x.x
但我需要快速的解决方案)。
其余机器人(大多数来自中国、台湾等)不使用引荐来源,因此:
SetEnvIfNoCase Referer "^$" bad_user
阻止所有
但它也有一个副作用:
- 当有人从书签访问我的页面或直接在浏览器中输入页面(例如,他在名片上写过)时,他将看不到我的网站。
- Googlebot、bingbot(以及其他不太重要的机器人)通常也不使用 referrer。
#1
虽然很不方便,但却#2
是我必须迅速解决的一个实际问题。
我发现对我而言很重要的机器人使用了这些标签:
66.249.64.119 - - [...] "GET /robots.txt HTTP/1.1" 403 534 "-" "Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)"
66.249.64.119 - - [...] "GET /programowanie/ HTTP/1.1" 403 537 "-" "Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)"
66.249.64.115 - - [...] "GET /3d-graphic/ HTTP/1.1" 403 535 "-" "Mozilla/5.0 (iPhone; CPU iPhone OS 6_0 like Mac OS X) AppleWebKit/536.26 (KHTML, like Gecko) Version/6.0 Mobile/10A5376e Safari/8536.25 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)"
207.46.13.4 - - [...] "GET /robots.txt HTTP/1.1" 403 534 "-" "Mozilla/5.0 (compatible; bingbot/2.0; +http://www.bing.com/bingbot.htm)"
207.46.13.4 - - [...] "GET / HTTP/1.1" 403 524 "-" "Mozilla/5.0 (compatible; bingbot/2.0; +http://www.bing.com/bingbot.htm)"
是否有可能以.htaccess
某种方式合并我的规则“但如果标签包含“Googlebot”或“bingbot”,就放他走”作为最重要的一个(即使他们不使用引荐来源)?
如果没有,也许我可以添加一些内容来robots.txt
通知 Google/Bing 他们应该将引荐来源放在他们的标签中(我怀疑他们会考虑到这一点)?
答案1
我找到了一些解决方案#2
:
order deny,allow
deny from 54.
SetEnvIfNoCase Referer "^$" bad_user
SetEnvIfNoCase User-Agent "^Wget" bad_user
SetEnvIfNoCase User-Agent "http://www.bing.com/bingbot.htm" good_user
SetEnvIfNoCase User-Agent "http://www.google.com/bot.html" good_user
Deny from env=bad_user
Allow from env=good_user
注意order deny, allow
- 得益于它,它将以这种方式工作:
- 阻止来自 的所有流量
54.x.x.x
。同时阻止所有没有引荐来源的流量。 http://www.bing.com/bingbot.htm
然后,解除对包含或 的请求的流量阻止http://www.google.com/bot.html
。
反正,我将等待其他答案,因为我不确定这是否是的最佳解决方案#2
。
但我仍然没有办法解决#1
。
因此,如果你想:
阻止所有没有引荐来源的用户,但同时允许 Googlebot/bingbot
您可以直接使用我的代码,无需.htaccess
和deny from 54.
行SetEnvIfNoCase User-Agent "^Wget" bad_user
,因为它们是针对我的情况(ddos)而设计的。