特定のbotからのアクセスをブラックリスト方式を用いて、.htaccessで遮断する話

bot、クローラーを放置していると、サーバーに負荷がかかる

一時期本当に行儀が悪かったのが、Semalt。これは、SEO系botのようだ。バックリンクを調べるとかそのたぐいだろうか。

Pythonで、スクレイピングもされる。

この手の、bot、クローラーを放置しているとサーバーに負荷がかかり、503エラーを頻発してしまう。あまり稼がないサイト(例えばこのサイトだ)は、スターサーバーのような安いサーバーにおいておきたいのだが、botが来るとサーバーに負荷がかかってしまい、同じサーバーの中に格納されている他のサイトさんにも迷惑をかけてしまう。

スターサーバーは言うほど高速ではないが、ドメイン代とサーバー代くらい稼げればいいやというサイトには、十分である。

>>月額138円(税込)から!WordPressも使えるクラウド型高速レンタルサーバー、スターサーバー

Google Botだけを許可するのでいいのだろうか

ホワイトリスト方式で、Google Botだけを許可するのでもいいかと思った。しかし、解析すると、bingから来る人もいれば、duckduckgoから来る人もじわっと存在する。

SEO系のbotや、クローラー、スクレイパーを排除したいのであって、Next Googleの芽を潰したいわけではない。

そうすると、ホワイトリスト方式(=基本ブロック。良いものだけをリスト化して通す)のではなく、ブラックリスト方式(=基本通す。しかし悪いものだけをリスト化してブロック)で排除していくことになる。多少面倒だが。

.htaccessにbot退散の護符を書く

元の記事が2014年。これを2021年の私がどのように処理しているのかをお見せしよう。

.htaccessに護符を貼って、悪霊ならぬbot退散である。

2014年はリファラーで排除していたが、最近ではユーザーエージェントで排除している。

User-Agentでbot退散(2021年版)

リファラーでも排除できなくはなかったのだが、限りがあり、ユーザーエージェントで排除するようになった。

●ねー!と叫びながら.htaccessに書いている次第。

使うときにはくれぐれも自己責任で。

SetEnvIfNoCase User-Agent “semalt" spammer=yes
SetEnvIfNoCase User-Agent “hao123" spammer=yes
SetEnvIfNoCase User-Agent “mj12bot" spammer=yes
SetEnvIfNoCase User-Agent “ALittle" spammer=yes
SetEnvIfNoCase User-Agent "seekport" spammer=yes
SetEnvIfNoCase User-Agent “ahrefs" spammer=yes

Order Allow,Deny
Allow from All
Deny from env=spammer

他のものと合わせてこんな感じで書いている。ALittleというのはALittle Clientと出てくるものでよくわからないのだがとても気持ち悪い。この六つは本当に邪魔で、バイドゥやYandexの比ではない。

特に行儀が悪いのが、ahrefs。これはアフィBだったかで売っていたから買っている人もいたのだろう。それがかけられたこっちは本当に迷惑千万。使わないサービスなので容赦無く排除。「あんたのところにも来るんだから、たくさんの情報を持っている」という営業活動として名前を明らかにしているのであろう。なので、積極的に排除排除。悪bot退散!

SetEnvIfNoCaseではなく、SetEnvIf でも動くが、SetEnvIfNoCaseは大文字小文字を区別しないので、SetEnvIfNoCaseの方がおすすめする。というのも、SerEnvIfで排除していたものが、大文字と小文字のミックスになって入ってきたことがある。

リファラーで排除してみた。(以下2014年のまま排除)

同じように思われた方がwordpress.orgのフォーラムにおられたようです。それを参考にして、リファラーで排除してみた。
.htaccessに以下のように書きました。


SetEnvIfNoCase Referer semalt.com spammer=yes

Order Allow,Deny
Allow from All
Deny from env=spammer

semalt.comをリファラーとするものをスパマーと定義し、スパマーはアクセス遮断、ということでしょう。
これを応用すると、例えば、中国のbaidu、韓国のNavar、ロシアのYandexなど、用のないと思われるサーチエンジンからのリファラーを遮断することもできますね。

付け足し方

最近、
jp.hao123.com/yahoo_search?query=
というリファラーがくるようになりました。
hao123.comは中国のバイドゥ系のようです。
これも評判悪いですね。ソフトをインストールする際にくっついてきてブラウザトップを乗っ取っちゃうとか。(Googleツールバーだってそんな感じでしたねえ。遠い目)
いずれにせよ、こっち来んな、見んなボケ!って感じ。未来のGoogleかもしれないけれど、排除排除。

そういうわけでこう書いています。

SetEnvIfNoCase Referer semalt.com spammer=yes
SetEnvIfNoCase Referer hao123.com spammer=yes

Order Allow,Deny
Allow from All
Deny from env=spammer

参照

Semaltのセールスマネージャー

追記
このサイトはアップされると同時にTwitterにポストされるようにしてあります。そうしたら間髪入れずにsemaltのセールスマネージャーからリプが飛んできました。

どういうことかというと、「もしもSemaltのデータベースから除外して欲しければ、ここをみて。」

見てみましたよ。「データベースから除外して欲しいなら、登録しろ」というサイトでした。

SO WHAT?
フィッシング詐欺メールって昔から「登録削除して欲しければ」みたいなのありますね。あんな感じをうけました。

それと、このアレックスさん。この人はオーナーなのかな。そうじゃないなら罵声を浴びせられる仕事は大変だよね。

Related posts