10

多くの場合、回答を検索しているときに、特定の Web サイトでは、参照元が google.com の場合、提供されている情報を読むことができることがわかりました。ただし、情報に直接リンクすると、利用できなくなります。

私が探しているのは、次のように、選択したリファラーと宛先を設定する最小の PHP スクリプトです。

http://example.com/ref_red.php?referer=http://google.com/&end=http://example.net/

ノート:

  • ref_red.phpは、私の例のスクリプトの名前です。
  • refererendは、 httphttpsftpを受け入れる必要があります。
  • refererend には、 http://end.comのような単純なものから、: のような複雑な ものまで、任意のタイプの URI を含めることができますhttp://example.com/some/rr/print.pl?document=rr

注:返信で推奨されているように、これを追加しています。スクリプト自体は完全なプロキシではありません。refererを設定するという唯一の目的で、最初の HTTP リクエストのみがプロキシされます(画像などの後続のリクエストはプロキシされません) 。

4

3 に答える 3

13

この関数は、指定されたリファラーを持つ任意の http URL をフェッチする開始点を提供する必要があります。

クエリ parms の処理は非常に簡単なはずなので、その部分はあなたに任せます。

<?php

    echo geturl('http://some-url', 'http://referring-url');

    function geturl($url, $referer) { 

        $headers[] = 'Accept: image/gif, image/x-bitmap, image/jpeg, image/pjpeg,text/html,application/xhtml+xml'; 
        $headers[] = 'Connection: Keep-Alive'; 
        $headers[] = 'Content-type: application/x-www-form-urlencoded;charset=UTF-8'; 
        $useragent = 'Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 1.0.3705; .NET CLR 1.1.4322; Media Center PC 4.0)'; 

        $process = curl_init($url); 
        curl_setopt($process, CURLOPT_HTTPHEADER, $headers); 
        curl_setopt($process, CURLOPT_HEADER, 0); 
        curl_setopt($process, CURLOPT_USERAGENT, $useragent);
        curl_setopt($process, CURLOPT_REFERER, $referer);
        curl_setopt($process, CURLOPT_TIMEOUT, 30); 
        curl_setopt($process, CURLOPT_RETURNTRANSFER, 1); 
        curl_setopt($process, CURLOPT_FOLLOWLOCATION, 1); 

        $return = curl_exec($process); 
        curl_close($process); 

        return $return; 
    } 

?>
于 2009-05-14T01:21:57.657 に答える
2

(アドレスを設定することで) リファラーを隠すことができるインターネットで利用可能なサービスの 1 つを使用できますが、実際のリファラーではない特定のリファラーを強制することはできません。ユーザーは、ターゲット Web サイトにリダイレクトされる前に、実際にその Web サイト (リファラーとして表示される) にリダイレクトされる必要があります。

そのようなサービスの 1 つ: http://linkanon.com

編集:

質問を変更したので、プロキシのように機能するユーザー エージェントを PHP で作成することについての私のコメントは当てはまりますが、これは犯罪行為に近づきます。彼女は実際の Web サイトにいますが、実際にはあなたのコンテンツ (あなたが渡したコンテンツ) を読み込んでいます。この犯罪に近い活動を実行するには (ユーザー名とパスワードを読み取ろうとする一歩手前です)、偽のリファラーを指定し、単純に渡す独自のユーザー エージェントを使用して、サード パーティの Web サイト コンテンツを PHP で読み込みます。あなたのウェブサイトの訪問者に出力します。HTTP ヘッダーを送信できるようにする PHP の関数は、header($header) です。

header("Referer: http://example.org");

助けようとする人々に怒鳴る代わりに、Referer ヘッダーに関する HTTP (これは世界が好転するためのプロトコル) 仕様を読むことを試みることができます: http://www.w3.org/Protocols/rfc2616/rfc2616-sec14 .html (セクション 14.36 を参照)。

また、 http://en.wikipedia.org/wiki/Referrer_spoofingを読むこともできます。ここでは、すべてクライアント側に関するものであることがわかります。PHPはサーバーサイドです。PHP によって生成されたクライアント コード (Javascript) を作成しようとすることしかできませんが、運が良ければ、ユーザーの世界に侵入することになります。

于 2009-05-13T12:03:07.843 に答える
0

リファラーは、サーバー側のメカニズムではなく、ブラウザーによって設定されます。おそらく、リモート サーバーの要求を作成し、リファラー ヘッダーを適切に設定するプロキシを PHP で作成できます。Firefoxプラグインを使用する方が便利なようです。http://www.stardrifter.org/refcontrol/ .

編集:カスタムリファラーヘッダーを使用してPHPプロキシを作成したいことを明確にするために、質問を言い換えます。私はおそらく次のようなものを変更するだけですhttp://sourceforge.net/projects/poxy/で referrer パラメータを取得して渡します。

もう一度編集してください。求めていることは明確かもしれませんが、不可能なことを求めても、それが可能になるわけではありません。ブラウザーはリファラー ヘッダーの設定を担当します。新しいリソースにリダイレクトする原因となった URI を使用します。あなたは、「http://example.netにアクセスしてください。ただし、そうするときは、私が実際に www.foo.com であるふりをしてください」というスクリプトを求めています。サーバーがブラウザーに、それがどこから来たかについて「嘘をつく」ように指示するメカニズムはありません。

複雑な JavaScript のハッキングによって可能かもしれないと思いますが、それはブラック ハットの意味でのハッキングです。ブラウザにリファラーを偽装させることができる Web サイトは、本当のセキュリティ ホールになります。

于 2009-05-13T11:32:46.007 に答える