tach.arege.net

リンク元を知られないようにするために

Web ページは他のページへのリンクを張ることで,さまざまなページにアクセス することができます.とても便利なのですが,自分で Web サイトを運営していると どんなページからリンクされているか気になります.Web ブラウザが送信する Referer: フィールドの内容からリンク元を知ることができるため,日記サイト などではリンク元ページを表示ていることもあります.

しかし,プライベートなページからリンクを張り,そのリンクをたどると, リンク元のプライベートページの URL を知られてしまいます.たとえ パスワード制限をしていたとしても,URL がバレてしまったり,その ページへのリンクを張られてしまうのはあまりよいことではありません. 自分だけなら,ブラウザの設定を変更して Referer: を送らないようにする という手もありますが,大勢で共有しているページだったら全員に強制するのは 難しいですし,Referer: の情報は有用なことも多いので,あまりよい方法 ではありません.

そこで,Referer を送信したくないページにリンクを張るときは,間に一ページ はさむことにより,ブラウザが元ページの Referer: を送らないようにする 方法をとるサイトができました.2 ちゃんねるからリンクが張られる時は, http://ime.nu/ というサイトを経由することでどのスレからリンクが張ら れているかわからないようにする仕組みになっています.たしかにこの 方法は有用ですが,リンクを再びクリックしないといけないので面倒ですし, 「どこからかわからないけどリンクを張られている」という思いをさせるのは 心苦しいです.できれば Referer: を送信せずにおきたいのです.

そこで,<meta http-equiv="refresh" ...> を使うことによりクリックしなくても リダイレクトさせる方法を思いつきました.これを簡単に実装してみると, もとページの Referer: を送らないのではなく,Referer: フィールドを まったく送らないため,リンクをたどったことを知られずにリンクを張る ことができます.これでプライベートページからでも安心してリンクを 張ることができます.

やりかた

いろんなやりかたがあると思いますが,ぼくは mod_ruby を利用して実装しました.まず,mod_ruby をインストールし,適当な ホスト名を割り当てます.そして,apache の VirtualHost ディレクティブ に,以下のように設定します.

<VirtualHost myhostname.example.com>
    ServerName servername.example.com
    DocumentRoot /var/www
    ErrorDocument 404 /index.rbx
    <Directory /var/www>
        Options ExecCGI
        DirectoryIndex index.rbx
    </Directory>
    <Files index.rbx>
        SetHandler ruby-object
        RubyHandler Apache::RubyRun.instance
    </Files>
</VirtualHost>

そして index.rbx.txt をこのディレクトリに 置きます.でおもむろに http://servername.example.com/http://www.arege.jp/ に あくせすするとあーら不思議,リダイレクトされて http://www.arege.jp/ が 表示されます.

サービス

とりあえず,http://go.to.arege.jp/ でこのサービスを立ち上げてます. たとえば, <URL:http://go.to.arege.jp/http://tach.arege.net/d/> とリンクを張ると,http://tach.arege.net/d/ に飛びます.自由に 利用してもらってかまいませんが,ログはちゃんと残しています.

注意点

リンク先ページには Referer: は送られないのですが,この設定をした サイトのログには残ります.なので,本当に知られたくない場合は, この設定を自分の管理下にあるサイトで行いましょう.


このページのリンク元
About  |  Antenna  |  Webalizer  |  (C) 2000-2010 Taku YASUI <tach @ arege.net>