偽造されたリファラーのサンプル コードは、主にアンチリーチングを突破するために使用されます。
完全なプログラムは、特定のアプリケーション向けに自分で変更できます。
ここで示す例は非常に単純です。実際、この例から多くのアプリケーションを開発できます。たとえば、実際の URL アドレスを隠すとか…ふふ、自分で解析して、ここに新しいファイル file.php を作成してください。次のパラメータは、偽造する必要があるリファファーのターゲット アドレスです。例: file.php/http://www.xxx.xxx/xxx.mp3
<?
$url=str_replace('/file.php/','',$_SERVER["REQUEST_URI"]);//変換する必要がある URL を取得します。ここでは怠けているのでセキュリティチェックは行いません。必要に応じて自分で追加します。
$downfile=str_replace(" ","%20",$url);//スペース等は状況に応じて置き換えてください
$downfile=str_replace(" http://","",$downfile);// http:// を削除します
$urlarr=explode("/",$downfile);//ドメイン名を分解するには「/」を使用します
$domain=$urlarr[0];//ドメイン名
$getfile=str_replace($urlarr[0],'',$downfile);//ヘッダーのGET部分を取得
$content = @fsockopen("$domain", 80, $errno, $errstr, 12);// ターゲットホストに接続します
if (!$content){//リンクをアップロードできない場合は、エラーが表示されます
die("申し訳ありませんが、$domain に接続できません。");
}
fputs($content, "GET $getfile HTTP/1.0rn");
fputs($content, "ホスト: $domainrn");
fputs($content, "Referer: $domainrn");// 偽造された部分
fputs($content, "ユーザー エージェント: Mozilla/4.0 (互換性; MSIE 6.0; Windows NT 5.1)rnrn");
while (!feof($content)) {
$tp.=fgets($content, 128);
if (strstr($tp,"200 OK")){ //ここで説明が必要です。通常、ヘッダーの最初の行は、要求されたファイルのステータスです。詳細については、「HTTP 1.1 ステータス コードとその意味」を参照してください。hi.baidu.com/110911/blog/item/21f20d2475af812ed50742c5.html これは通常のファイル リクエスト ステータスであり、直接リダイレクトするだけです。他の状態でプログラムの実行を継続する
header("場所:$url");
死ぬ();
}
}
//302 リダイレクト。ほとんどのアンチホットリンク システムは、まずリファファーを決定し、それが正しければ実際のアドレスにリダイレクトします。実際のアドレスを取得するには以下のようにします。
$arr=explode("n",$tp);
$arr1=explode("Location: ",$tp);//Location の背後にある実際の住所を抽出します
$arr2=explode("n",$arr1[1]);
header('Content-Type:application/force-download');//強制ダウンロード
header("location:".$arr2[0]);//ターゲットアドレスにリダイレクト
死ぬ();
?>
このプログラムは、ホットリンクされているかどうかを判断するためにリファラーを使用するホットリンク防止システムにのみ使用できます。ホットリンクを防止するために他の特別な方法が使用されている場合、この推定は適用されません。