Что это за неизвестный клиент от Google, который вызывает ошибки JavaScript в нашем PWA?

Мы запускаем прогрессивные веб-приложения с включенными push-уведомлениями для Chrome и Samsung Internet и призываем наших пользователей добавлять их на главный экран. Мы тщательно регистрируем и отслеживаем исключения браузера, чтобы поддерживать высокое качество обслуживания.

С 22 мая 2018 г. мы заметили внезапный рост загадочных исключений JavaScript, возникающих при вызовах стандартных веб-API с обнаружением функций, которые ранее никогда не вызывали сбоев.

Например, следующий код вызовет следующую ошибку, несмотря на то, что «push» явно является допустимым значением для спецификации Permissions.query():

const permissionStatus = await navigator
  .permissions
  .query({ name: 'push', userVisibleOnly: true });

???? TypeError: Failed to read the 'query' property from 'Permissions': The provided value 'push' is not a valid enum value of type PermissionName.

При ближайшем рассмотрении мы заметили, что все такие ошибки происходили во время выполнения скриптов пользовательскими агентами, которые не являются нашими реальными клиентами. Скорее, мы видим, как неизвестный клиент запрашивает наше приложение сразу после посещения нашего пользователя:

  1. Пользователь посещает наше PWA, об ошибках не сообщается
  2. Пользователь использует «Добавить на главный экран» (в большинстве случаев), об ошибках не сообщается.
  3. Неизвестный клиент посещает наше PWA, сообщается об ошибках.

Этот неизвестный клиент выполняет HTTP-запрос с характерными шаблонами:

  • URL-адрес точно такой же, как тот, который посетил Пользователь
  • Исходный IP-адрес назначен Google, Inc. (диапазон 66.102.0.0/20 или 66.249.64.0/19).
  • Реферер: «https://www.google.com/».
  • User Agent String somehow matches the one of the User: same version of Android, same device build, same browser, but a different browser version, always from this list:
    • Chrome/66.0.3359.126 (May 22 → May 30)
    • Chrome/66.0.3359.158 (11 июня → 25 июня)
    • SamsungBrowser/3.0 Chrome/38.0.2125.102 (25 июня → 27 июня)
    • SamsungBrowser/6.4 Chrome/56.0.2924.87 (22 мая → 30 мая, 25 июня)
    • SamsungBrowser/7.0 Chrome/59.0.3071.125 (22 мая → 30 мая, 25 июня)

Более того, эти запросы происходят периодически, по-видимому, контролируемым образом, что отражено в датах выше и на графике ниже:

Частота запросов от неизвестного клиента из Google

Это, а также тот факт, что мы обнаруживаем использование «Добавить на главный экран» в большинстве случаев, заставляет задуматься, не может ли это быть экспериментом, имеющим отношение к WebAPK. Однако это недокументировано, и поэтому очень загадочно.

Что это за неизвестный клиент от Google?

Какова его цель?

Как разработчикам их обнаружить и какие меры предпринять?

Обновление за август 2018 г. Запросы, подобные описанным выше, теперь, кажется, полностью исчезли… Но они могли быть своего рода прототипом чем-то похожего типа запросов, которые мы наблюдаем сейчас. Эти запросы нового типа по-прежнему исходят от серверов Google и, похоже, нацелены исключительно на веб-манифест нашего PWA, поэтому больше не возникает ошибка JavaScript. Все они имеют строку пользовательского агента Chrome/59+ с четким постфиксом (via Google-Chrome-WebAPK). Другие браузеры, такие как Samsung Internet, еще не обнаружены.


person Eric Redon    schedule 13.06.2018    source источник


Ответы (1)


Это может быть безголовый Chrome (вероятно, предварительные тесты, если он у вас есть в Play Store), который не имеет разрешения push; например. с помощью Pupeteer можно только переопределить разрешения, но на самом деле не принимает приглашение на разрешение ... и обычно нет подключенного рабочего стола, на который можно было бы отправлять уведомления.

Просто try и catch для сортировки клиентов, не поддерживающих push разрешение.

navigator.permissions
  .query({name: 'push', userVisibleOnly: true})
  .then(function(permissionStatus) {
      console.log('push permission state is ', permissionStatus.state);
  })
  .catch((error) => {
      console.warn(error);
  });
person Martin Zeitler    schedule 07.06.2020
comment
Интересные факты о Кукловоде. Я согласен с тем, что это, вероятно, был безголовый браузер, и можно предположить, что он работал из центра обработки данных в Google, запускался «Добавить на главный экран» реальных PWA в дикой природе и предназначался для выполнения реальных тестов генерации WebAPK до запуск. - person Eric Redon; 07.06.2020