# Отключить или обойти проверку функций для Googlebot (при обслуживании JS-приложения для поисковых роботов)

**URL:** <https://meta.discourse.org/t/disable-or-bypass-feature-detect-for-googlebot-while-serving-js-app-to-crawlers/226554>\
**Category:** Support\
**Tags:** unsupported-install\
**Created:** [09.Май.2022 14:44:56 UTC](https://meta.discourse.org/t/disable-or-bypass-feature-detect-for-googlebot-while-serving-js-app-to-crawlers/226554 "2022-05-09T14:44:56Z")\
**Posts on this page:** 1\
**Showing post:** 1

<div class="post-metadata">

**Author:** ![stance455](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/stance455/32/255345_2.png) [@stance455](https://meta.discourse.org/u/stance455)\
**Post date:** [09.Май.2022 14:44:56 UTC](https://meta.discourse.org/t/disable-or-bypass-feature-detect-for-googlebot-while-serving-js-app-to-crawlers/226554/1 "2022-05-09T14:44:56Z")

</div>

Я пытаюсь настроить Discourse так, чтобы он полностью отдавал JS-приложение Googlebot — почти у цели.

Благодаря @pfaffman и выполнению кода ниже (в консоли Rails) мне удалось добиться того, что JS-приложение отображается в Chrome при подмене user-agent на googlebot или googlebot smartphone:

`SiteSetting.non_crawler_user_agents="trident|webkit|gecko|chrome|safari|msie|opera|goanna|discourse"+'rss|bot|spider|crawler|facebook|archive|wayback|ping|monitor|lighthouse'`

Однако при тестировании с помощью [инструмента Google для проверки мобильной адаптации](https://search.google.com/test/mobile-friendly/result?id=DTuwwdBonokq6d8Xln8SKQ) (или в разделе «Инспекция URL» в Google Search Console) я получаю пустой скриншот с следующим HTML:

 ![Screen Shot 2022-05-09 at 5.14.16 PM](https://global.discourse-cdn.com/meta/original/4X/a/f/5/af591154016747a2cf0b43a66688063cb3d07cf7.png)

 ![Screen Shot 2022-05-09 at 2.01.39 AM](https://global.discourse-cdn.com/meta/original/4X/e/6/a/e6a067d26b4ec6775d2d4c4df515a6b25fad082a.jpeg)

У Bing ситуация похожая, но у них контент отображается. Я полагаю, что Bing показывает контент, потому что его краулер не является «мобильным». [Соответствующий пост здесь](https://meta.discourse.org/t/broken-crawler-view-when-you-disable-javascript/226365/2?u=stance455) от @sam.

 ![Screen Shot 2022-05-09 at 2.05.15 AM](https://global.discourse-cdn.com/meta/original/4X/9/8/c/98c767945372816844f308d9847f5f565217cbe9.jpeg)

Согласно @david и [этому посту](https://meta.discourse.org/t/discourse-not-loading-on-legacy-browsers/221412/63?u=stance455), похоже, что виновником является «определение возможностей» (feature detect).

> [@david](#):
>
> Отдавать полное приложение, определять возможности и использовать резервный вариант, переместив содержимое `<noscript>` внутрь `<body>`. Это не основано на user-agent.

Я с осторожным оптимизмом полагую, что существует простое решение. Каждые 10–20 попыток при использовании инструмента Googlebot корректно отрисовывает приложение.

 ![Screen Shot 2022-05-06 at 10.07.29 PM](https://global.discourse-cdn.com/meta/original/4X/d/f/0/df0bf3208a506a037f53a361ce61f43bda70b9ea.jpeg)

Моя теория: поскольку Googlebot, как известно, не загружает все ресурсы при доступе к странице, именно тот JS (который содержит определение возможностей и вызывает откат) не загружается, и поэтому страница выглядит корректно.

Итак, в заключение: как можно отключить определение возможностей для Googlebot (или, если проще, для всех краулеров/ботов)?

**Редактирование:** На случай, если я ошибся в терминологии: когда в Meta упоминается «определение возможностей» (feature detect), имеется ли в виду определение браузера? (возможно, с файлами вроде `browser-detect.js` и другими зависимостями)

Или же «определение возможностей» — это общий термин для того, что делает Discourse, пытаясь понять технологии, с помощью которых осуществляется доступ к приложению?

---

_[View the full topic](https://meta.discourse.org/t/disable-or-bypass-feature-detect-for-googlebot-while-serving-js-app-to-crawlers/226554)._
