вызывать облачную функцию только для определенных пользовательских агентов в функциях Firebase - PullRequest
1 голос
/ 02 мая 2020

Я хочу вызывать функцию firebase, только если запрос поступает от агента пользователя бота Google.

В настоящее время я вызываю функцию при каждом запросе http.

  1. Запрос приходит
  2. Проверьте пользовательский агент
  3. Пользовательский агент Google , затем response.send("hello google")
  4. Пользовательский агент не Google рендеринг индекса. html с хостинга firebase.

request({uri: "http://example.com/index.html"}, 
    function(error, response, body) {
        res.send(body)
    });
});

это вызовет al oop, потому что функция запросит файл индекса. html с хостинга firebase и делает это вызовет функцию снова. так что я думаю лучше вызывать функцию только если запрос исходит от пользовательского агента google

возможно ли это? есть идеи, чтобы решить эту проблему? спасибо!

1 Ответ

0 голосов
/ 03 мая 2020

Робот Google выдает запросы со специфическими пользовательскими агентами, практически все из которых содержат ключевое слово Googlebot. Просто получите заголовок и проверьте, содержит ли оно ключевое слово. Предположим, вы используете express:

if (req.get('User-Agent').toLowerCase().includes('googlebot')) {
    res.send("hello google")
} else {
    request({uri: "http://example.com/index.html"}, 
        function(error, response, body) {
            res.send(body)
        });
    });
    //or res.redirect(302, "http://example.com/index.html")
}

https://developers.whatismybrowser.com/useragents/explore/software_name/googlebot/ https://support.google.com/webmasters/answer/1061943

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...