2017-05-29 9 views
-1

私は現在、Facebookの共有に取り組んでおり、Facebookの共有についてはC#で話題があまりないようです。私は以下のように、このビューからどこか別の場所にリダイレクトしたいのですが、通常のユーザーの場合mvc/razorビュー内のfacebookクローラを検出

<head> 
    <meta name="viewport" content="width=device-width" /> 
    <title>Hello World!</title> 
    <meta property="fb:app_id" content="************" /> 
    <meta property="og:site_name" content="www.hello-world.com" /> 
    <meta property="og:type" content="website" /> 
    <meta property="og:url" content="http://hello-world.com/home/fbshare" /> 
    <meta property="og:title" content="How are you doing today?" /> 
    <meta property="og:description" content="Great to know you are doing fine." /> 
    <meta name="author" content="Hello" /> 
    <meta property="og:image" content="https://images.pexels.com/photos/2324/skyline-buildings-new-york-skyscrapers.jpg?w=940&h=650&auto=compress&cs=tinysrgb" /> 
    <meta property="og:image:type" content="image/jpeg" /> 
    <meta property="og:image:width" content="800" /> 
    <meta property="og:image:height" content="420" /> 
</head> 

:何かを学ぼうと...

私は以下のようにかみそりビューの1つでグラフを開くメタタグを持っています:

@{Response.Redirect("Somewhere in my application")}; 

しかし、私はfacebook scrapperもリダイレクトしたくありません。とにかくfacebookやfacebook scrapperのユーザーエージェントを特定できますか?これがFacebookのユーザーエージェントであることが判明した場合は、ビューから別の場所にリダイレクトする他の場所にリダイレクトされません。

P.S:facebookの公式ドキュメントによると、私はFacebookのユーザーエージェントを見つけて、Open Graphメタタグをスクラップすることができますが、私は方法を掘り下げることはできません。

Facebookクローラはコンテンツを正しくスクラップして共有するために、 の順番でコンテンツにアクセスできる必要があります。あなたのページは クローラに表示されるはずです。ログインが必要な場合やコンテンツの へのアクセスを制限する場合は、クローラをホワイトリストに登録する必要があります。また、DDoS保護メカニズムからそれを除外する必要があります。

スクラップ時にコンテンツを利用できない場合は、 共有デバッガを使用してURLを渡すことで、利用可能になった時点で を強制的に再クローズすることができます。

Facebookのクローラーは、これらのユーザーエージェント文字列のいずれかで識別することができます。

facebookexternalhit/1.1 (+ http://www.facebook.com/externalhit_uatext.php) OR facebookexternalhit/1.1

答えて

0

あなたは試してみました:

var userAgent = HttpContext.Request.Headers["User-Agent"]; 
if (userAgent != null && 
    userAgent.Contains("facebookexternalhit/")) 
{ 
    // Is a Facebook agent 
} 
else 
{ 
    // Is not a Facebook agent 
} 

もちろん、MVCではビューからリダイレクトしないでください。コントローラまたはfilterからリダイレクトするだけです。

+0

いいえ、それはまだ私がリダイレクトのために定義したアクションにスクラップをリダイレクトします。どんな考え? – Newbie

+0

私は[ここ](https://stackoverflow.com/a/9031912/181087)に基づいて私の答えを変更しました。実際のエージェントから渡される情報よりも多くの情報がユーザエージェント文字列に存在する可能性があります。ヘッダーに実際に記録されているものを記録するようにコードを設定し、後で条件を正しく設定する必要があります。 – NightOwl888

+0

私はユーザーエージェントをログに記録しようとしましたが、実際にはnullです。ログに保存されているテキストファイルはnullで、何も表示されません。何が問題なの? – Newbie

関連する問題