読者です 読者をやめる 読者になる 読者になる

エロサイトの作り方

2013年11月から勉強しながらエロサイトを作っています。

JavaScriptでrefererを飛ばさないリンクを作る

JavaScript

管理画面でクロールした別サイトにリンクを張っているのですが、管理画面のURLを外部に公開したくないのでリファラーを隠せないかなと思いまして。

リファラーを飛ばさない方法

リンク先にリファラーを飛ばさない方法として思いつく限りだと以下のものがあるかと。

他にあったかなぁ。

サイトをHTTPSで作る

これができればいいですが、環境を作るのが面倒。

ジャンプページサービスを使う

2chとかでやっている方法。

metaタグのrefreshで移動させる

metaタグのrefleshだとリファラーが飛ばないという仕様があって、ジャンプ用のHTMLを用意した上で

jump.html?url=http%3A%2F%2Fwww.yahoo.co.jp%2F

こんな感じに動的にURLパラメーターを渡してJavaScriptでmetaタグを動的に作成すれば飛ばせそう。

dataURIスキームを使う

これもmetaタグなのですが、aタグに直接ジャンプページとなるHTMLタグを流し込むという、なんというか力技な解決策です。

古いブラウザだと対応してないけど、少なくともHTML5対応しているブラウザなら問題なく動作するはず。

HTTPSは面倒、外部サービスを使うのはちょっとやめたい、ということで残りは2つですが、やったことないという理由で今回はdataURIスキームでやろうかと。

dataURIスキームでのやり方

やってみたら簡単でした。

var url  = 'http://cgi.b4iine.net/env/';
var html = '<!DOCTYPE html><title>jump</title><meta http-equiv="refresh" content="0; url=' + url + '">';
var link = 'data:text/html;charset=utf-8,' + encodeURIComponent(html);
window.open(link, '_blank');

確認君+に飛ぶので、リファラーが消えているかどうかこのリンクから確認できます。

ググるとHTML4時代のコードがよく出てくるのですが、scriptタグ内にのコメントがあったりして、もうそういう時代じゃないんじゃないかな?と思ってHTML5版で作りました。

あと、無駄にThe W3C Markup Validation Serviceでvalidにしました。titleタグが必須要素らしく、せっかくhtml, head, bodyタグを削ったのに結果的に減ってないような気もしますが、ミニマムを目指しました。

ちなみにencodeしたURIはこうなります。

"data:text/html;charset=utf-8,%3C!DOCTYPE%20html%3E%3Ctitle%3Ejump%3C%2Ftitle%3E%3Cmeta%20http-equiv%3D%22refresh%22%20content%3D%220%3B%20url%3Dhttp%3A%2F%2Fcgi.b4iine.net%2Fenv%2F%22%3E"