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

PHPでリファラ(referer)制限を回避する

IT プログラミング PHP

f:id:rankasan:20170317155236j:plain

最近はリファラ制限の厳しいサイトが増えましたね。例えばpixivに上げた画像をpixiv以外のサイトからimgタグで表示することはできません。リファラ制限されている情報を参照するのは宜しくないですが、場合によっては回避する必要に迫られる事もあるでしょう。そこでPHPを利用したリファラ制限回避方法を考えてみました

タグのリファラについて

imgなど外部リンクを参照するタグのリファラですが、これはタグの書かれたページがリファラとなります。セキュリティの関係でJavaScriptでそれらを偽装する事は出来ません。XMLHttpRequestもリファラを変更できないため、非同期でバイナリを取得してsrcに突っ込む方法もダメです

PHPを使ったリファラ制限の回避

要は当該サイトへリファラを指定してアクセスしたいので、リファラを指定できる環境を経由すれば良いわけです。プロキシっぽいヤツですね

HTML側でGETパラメタとしてリファラ回避したいURLを渡します。PHP側は任意のリファラを指定したストリーム($context)を作成。GETパラメタで受け取ったURLとストリームを渡してreadfileで標準出力(この場合ブラウザ)に出力しています。簡単ですね

この方法はphp.iniのallow_url_fopen=onになっていないと動作しません。レンタルサーバではoff固定になっている事が多いです。その場合はcurlを使います

ただし、この方法だとファイルを全て取得してからブラウザに送る事になるので、ファイルが大きくなるとパフォーマンスに問題がでるかもしれません。ストリームを使った前者の方がお勧めです

あ、外部リンクを使う際にはくれぐれも著作権にはご注意を…

独習PHP 第3版

独習PHP 第3版

 
プライバシーポリシー