はてなブックマークを禁止する方法

2007/11/22

念のため最初に書いておきますが、ブックマーク禁止やリンク禁止派ではありません。 純粋に技術的にどうするのだろうという興味で書いています。

ある広告人の告白(あるいは愚痴かもね): 推奨してるわけでは決してなくて、お嫌な人には拒否する権利があってもいいのかな、ということなんです。」を読んで、はてなブックマークを技術的に阻止するにはどうするのだろう?と疑問に思いました。

アクセスログを見ていると、はてな系のプログラムが出しているHTTP_USER_AGENTは「Hatena」で始まりそうな気がします。 例えば、ブックマークを行うと「Hatena Bookmark/1.0」というHTTP_USER_AGENTがやってきます。

ブックマークをさせないためには、そのエージェントに意地悪をすれば良いのではないかと考えました。 まず、最初にやろうと思ったのが、はてなロボットのリクエストに対して「404 NOT FOUND」を返す事です。 やってみましたが、駄目でした。 ブックマークに内容が入らないだけで、ブックマークは成功しました。

次に「じゃあ、302 redirectはどうだ?」と考えました。 試してみると、見事に成功しました! ブックマークされるのはリダイレクトされる先のURLになりました。

ということで、実験ページをはてなでブクマしてみてください。 Webブラウザで閲覧できるけど、はてなからブックマークが出来ないページになっています。

実験ページはPHPスクリプトで書かれています。 以下が実験ページで利用したスクリプトです。


<?php
$agent = $_SERVER['HTTP_USER_AGENT'];

if (strncmp('Hatena', $agent, 6) == 0) {
  header("HTTP/1.0 302 redirect");
  header("Location: http://www.geekpage.jp/");
}

?>

はてなでブクマしてみそ


.htaccessを編集することでも同様の効果が実現できます。 既知の方法で今更だったら、ごめんなさい。。。

標準化

「ある広告人の告白」さんが書かれているように、選択肢として「私は、はてなからブックマークされたくありません」と宣言できる仕組みがあっても良いかも知れないと思う事はあります。 例えば、robots.txtのような仕組みがあり得るかもしれません。

ただその場合、はてなだけと言わずにソーシャルブックマーク全般の仕組みとして「SBMからブクマされたくない宣言」の技術的手法を標準化しても良いのかも知れないと思います。

標準化したところで、ちょっと前のどこかの某検索エンジンがrobots.txtを華麗に無視しまくっていたような事は発生すると思いますが。 ただ、そこに需要があってそれを信じる人がいるのであれば、その人たちが標準を提唱して叫んでみるのもナシではない気がします。 (私はあまりその必要性を感じていませんが、必要性を感じる人が標準を提唱して普及活動を行う事に対しては否定的ではありません。)

なお、「ブクマ禁止機能!」と叫んでいる人に対して「じゃあ、自分で標準を提唱しろ!」と言っているわけではありません。 「ブクマ禁止機能の標準を考えたよ!」という人がいても別に良いのではないか、という意見です。

最後に

なお、ソーシャルブックマークだけを禁止しても、その他リンク手法が禁止できないので、あまり意味がないかも知れない事にご注意下さい。

追記:2007/11/22

どうも、途中からブックマークできるようになったようです。 もしかして、はてなの中の方が対処を行ったのでしょうか?

追記:2007/11/24

どうも最初の一つが出来てしまえば、後からは普通にブックマークが可能になるようです。 途中からブックマークできるようになったのは、勇者Pnnc205jさんが一つ目のブックマークを作れたからのようです。 Pnnc205jさんがどうやったかはPnnc205jさんが解説しているページをご覧下さい。 リフレクで跳ね返された魔法をさらにリフレクで跳ね返せないのと同じ原理ですね。 (今回は2回目じゃないのであまりアナロジーが適切ではないかも知れませんが。。。)

ここで紹介している方法は、はてなブックマークを禁止する方法ではなく、はてはブックマークの最初の1つをやりにくくする方法という事になるようです。

追記:2007/11/27

べにじょさんによるわかりやすいPHPスクリプトの解説。「コレやってみたい! - べ、べつにブクマ禁止したいわけじゃないんだからっ!

最近のエントリ

過去記事

過去記事一覧

IPv6基礎検定

YouTubeチャンネルやってます!