阻止所有没有引荐来源的用户,但同时允许 Googlebot/bingbot(使用 .htaccess)

阻止所有没有引荐来源的用户,但同时允许 Googlebot/bingbot(使用 .htaccess)

由于我的网站遭受了一些业余爱好者制造的 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

阻止所有

但它也有一个副作用

  1. 当有人从书签访问我的页面或直接在浏览器中输入页面(例如,他在名片上写过)时,他将看不到我的网站。
  2. 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- 得益于它,它将以这种方式工作:

  1. 阻止来自 的所有流量54.x.x.x。同时阻止所有没有引荐来源的流量。
  2. http://www.bing.com/bingbot.htm然后,解除对包含或 的请求的流量阻止http://www.google.com/bot.html

反正,我将等待其他答案,因为我不确定这是否是的最佳解决方案#2

但我仍然没有办法解决#1

因此,如果你想:

阻止所有没有引荐来源的用户,但同时允许 Googlebot/bingbot

您可以直接使用我的代码,无需.htaccessdeny from 54.SetEnvIfNoCase User-Agent "^Wget" bad_user,因为它们是针对我的情况(ddos)而设计的。

相关内容