2011-09-22 9 views
5

पर अलग-अलग डेटा प्रदान करते हैं, मैं यह निर्धारित करना चाहता हूं कि आने वाले अनुरोध एक बॉट (जैसे google, bing), या मानव से हैं, और प्रत्येक के लिए अलग-अलग डेटा प्रदान करते हैं, उदाहरण के लिए, साइट या प्रीप्रोसेस्ड एचटीएमएल बनाने के लिए क्लाइंट जावास्क्रिप्ट के लिए जेसन डेटा।expressjs node.js google/etc bot और मानव ट्रैफ़िक

एक्सप्रेसज का उपयोग करना, क्या ऐसा करने का कोई आसान तरीका है? धन्यवाद।

+0

एफवाईआई, खोज इंजन पसंद नहीं करते हैं जब उन्हें सामान्य ग्राहक के पास पर्याप्त रूप से अलग सामग्री मिलती है। – icktoofay

+0

@icktoofay यह वही सामग्री है, यदि आप Google के AJAX दस्तावेज़ को पढ़ते हैं तो वे स्पष्ट रूप से इस – Harry

उत्तर

3

प्राप्त करने के लिए कैसे मैं अनुरोध किया MIME प्रकार (जो "स्वीकार" शीर्षक में मौजूद है) के अनुसार जवाबी कार्रवाई के लिए आप की सिफारिश आप इस तरह से एक्सप्रेस के साथ ऐसा कर सकते हैं:

app.get('/route', function (req, res) { 
    if (req.is('json')) res.json(data); 
    else if (req.is('html')) res.render('view', {}); 
    else ... 
}); 
+0

अनुरोधों, महान उत्तर से निपटने का यह एक बेहतर तरीका है। –

4

आप '(Mozilla/5.0 संगत; Googlebot/2.1; + http://www.google.com/bot.html' के लिए req.header ('उपयोगकर्ता-एजेंट') जांच कर सकते हैं, तो यह आप जानते हैं कि यह गूगल है और यह विभिन्न डेटा भेज सकते हैं है

।। ।

http://www.google.com/support/webmasters/bin/answer.py?answer=1061943

हेडर http://expressjs.com/4x/api.html#req.get

+0

के लिए अनुमति देते हैं धन्यवाद हाँ, मैं यह कर रहा था, क्या बॉट्स में सामान्यीकृत करने का कोई तरीका नहीं है, न केवल विशिष्ट बॉट को लक्षित करें? – Harry

+0

प्रत्येक बॉट का एक अलग उपयोगकर्ता-एजेंट होता है, इसलिए आपको यह जानना होगा कि प्रत्येक क्या है। स्वीकृति हेडर एक बेहतर समाधान हो सकता है। मतलब बॉट्स के बारे में भी नहीं सोचते हैं, बस इस बारे में सोचें कि प्रत्येक 'ग्राहक' (ब्राउज़र, जावास्क्रिप्ट, बीओटी) क्या स्वीकार कर सकता है। –

संबंधित मुद्दे