2017-10-05 3 views
0

小さなアプリを開発していて、ページを共有しているときにHTMLを削り取るクローラは、JavaScriptを評価しません(理にかなっています)。だから私がしたいのは、ソーシャルメディアクローラが到着するたびにピックアップして、それをプレーンなAngularJSテンプレートファイルに表示するのではなく、サーバー生成のページにリダイレクトするために、何らかのサーバーサイドのユーザーエージェント検出を使用することです目的のメタタグが含まれ、すべて正しい情報で埋められます。私はこれを行うことができるprerender.ioがあることを知っていますが、NodeJS/ExpressJSを使ってこれを行うことができる簡単な方法はありますか?Nodejs facebook/twitterクローラボットを別のサーバー生成ページにリダイレクトする方法は?

+0

'robots.txt'が定義されていますか? – zero298

+0

@ zero298本当にそうではありませんが、どのように役立つでしょうか? – billgajen

答えて

1

ルータのリクエスト引数のuser-agentプロパティをオフにすることができます。

ツイッターをバージョンで(のtwitterBOTのユーザーエージェントを使用しています:

Twitterは、ユーザーエージェントがそのクローラーが使用するそのGetting Started documentation中(X.Xがバージョン文字列である)Twitterbot/X.Xの線に沿って何かだろうと述べていますたとえば、 Twitterbot/1.0など)を使用して、 robots.txtファイルに例外を作成できます。

だから、素朴な実装は次のようになります。cURLを持つ

app.get("/test", (req, res) => { 
    if (/^Twitter/.test(req.headers["user-agent"])) { 
     return res.redirect("/twitter-friendly"); 
    } 
    res.send("You're not Twitter!"); 
}); 

app.get("/twitter-friendly", (req, res) => { 
    res.send("Hello Twitter"); 
}); 

テスト:

curl -L -A "Twitterbot/1.0" http://localhost:3001/test 

は、出力を提供します:

Hello Twitter 

私はドン」は他のクローラを想像JavaScriptを実行すると、同様の形式とsiミイラ戦略を採用することができた。

関連する問題