2011-11-19 15 views
9

私は実行中のセキュアなリンク方向サービスを持っています(expiringlinks.co)。 PHPのヘッダーを変更して訪問者をリダイレクトすると、FacebookがFacebookにリンクを張ったときにリダイレクトしているWebサイトのプレビューをFacebookが見ることができます。私はこれを避けたい。今、私はリダイレクトするURLとJavaScriptを取得するためにAJAX呼び出しを使用していますが、JavaScriptを使用しないユーザーには問題が発生しています。ここで私のウェブサイトからFacebookの掲示板をブロックする

は、私はFacebookのを阻止したいのですが、いくつかの方法ですが、私は働くように見えることはできません。

  1. 私はFacebookのボット(facebookexternalhit/1.0およびfacebookexternalhitを遮断/試してみました1.1)しかし、それは機能していない、私は彼らがこの機能のためにそれらを使用しているとは思わない。

  2. 私はFacebookのIPアドレスをブロックしようと考えていますが、それらのすべてを見つけることはできません。それらをすべて取得しないと動作しないと思います。

  3. 私はCAPTCHAまたはボタンを使用することを考えましたが、私は自分の訪問者にそれを行うことはできません。誰もがサイトを使うとは思わない。

  4. 「opt-me out」となるメタタグを検索しましたが、見つからなかったし、もしあれば私がそれを信用するかどうか疑問です。

どのような創造的なアイデアやアイデアを上のものを実装するには?あまり前もってありがとう!

+1

あなたは '(facebookexternalhit/1.0およびfacebookexternalhit/1.1)'を学びましたか?ドキュメントを通っていたのですか、訪問者のユーザーエージェントをダンプしましたか?個人的には、すべてのユーザーのユーザーエージェントのログを設定してからリンクを作成し、Facebookにこのリンクのプレビューを作成させようとします。 Facebookのためのものを見つけたら、それをブロックし、何が起こるかを見てください。 Facebookは 'http:// external.ak.fbcdn.net/safe_image.php'のような外部コンテンツの代理人として動作する複数のURLも使用しています –

+0

私はボットについて、彼らのドキュメントや他のソースからオンラインで読んでいます。私は分析のためにPiwikを使用していて、リンクを共有するとFacebookを検出できません。私はあなたがプロキシとしてURLによって何を意味するのか分かりません。 –

+0

"facebook.com"ドメイン以外のドメインのスクリプトを使用してコンテンツを読み込みます。彼らはまた、コンテンツをキャッシュし、同じコンテンツが(画像のように)再度要求された場合、Facebookは自分のバージョンではなくキャッシュされたバージョンを読み込みます。同じURLに複数回リンクしようとしている場合は、これもここにあるかもしれません。 –

答えて

2

これを試してみてください - それは私の作品...

<?php 
$ua = $_SERVER['HTTP_USER_AGENT']; 

if (preg_match('/facebookexternalhit/si',$ua)) { 
header('Location: no_fb_page.php'); 
die() ; 
} 

?> 
+0

BEAUTIFUL!どうもありがとうございます! –

+0

あなたは大歓迎です:) –

0

Webサーバーのログファイルを取得し、そこに慣れないユーザーエージェントを検索することができます。 (おそらくFacebookを含む) それ以外の場合は、ログを取得し、Internet explorer/firefox/operaを含むすべてを削除してください。 最後にボットのユーザーエージェントが必要です。 それから、facebook oneを検索することができます。

0

robots.txtを適切に設定するだけです。

http://www.robotstxt.org/robotstxt.html

+0

... Facebookが実際にこのルールに従うことを条件に提供されます。それは事実ですか? – glglgl

+0

@glglgl、私はそれを試したことはありませんが、オンラインの大手プレーヤーが、robots.txtのような基本的なものに従わなければ、真剣にショックを受けます。他のサイト。あなたがそれを試して、それ以外のことを知っているなら、投稿してください。 – Brad

+1

私もどちらか分かりませんが、 'robots.txt'はかなり基本的ですが、標準ではありません。彼らはプライバシーを気にしないので、単にrobots.txtによって聞かれれば、そうするだろうと確信していません。私が間違っていると、私たちは運があります。 – glglgl

0

あなたはメタリフレッシュの代わりに、JavaScriptのリダイレクトを使用して試みることができます。これらはすべてのブラウザで動作し、クローラがそこで解決を停止する必要があるページはまだ200の応答を返します。

+0

あなたのアプローチは好きですが、FacebookのリンククローラーがHTTPヘッダーのリダイレクトを検出した場合、METAのリダイレクトも検出しないのはなぜですか? –

+0

HTTPヘッダーは、ボットが機能するために理解しなければならないレスポンスの一部として送信されるため、メタリフレッシュはクライアント側であり、レスポンスを解析してリフレッシュを識別する必要があります。 明らかに何かできることはありますが、URLを解決するためのボットを作成していた場合、一度200応答を受け取ったら解決を止めるように指示するかもしれません。しかし、行く価値がある。 – alexarno

+0

今や、Facebookはメタリフレッシュタグを識別するためにスマートになっています。 – Goyllo

関連する問題