Были запущены прогрессивные веб-приложения с включенными push-уведомлениями для Chrome и Samsung Internet, и мы рекомендуем нашим пользователям добавить их на свой домашний экран. Мы тщательно регистрируем и отслеживаем исключения браузера, чтобы сохранить высокое качество обслуживания.
С 22 мая 2018 года мы заметили неожиданный рост удивительных исключений JavaScript, возникающих при обращении к стандартным веб-API с обнаруженными функциями, которые ранее никогда не выходили из строя.
Например, следующий код вызовет следующую ошибку, несмотря на то, что "push" явно является допустимым значением для спецификаций Permissions.query():
const permissionStatus = await navigator
.permissions
.query({ name: 'push', userVisibleOnly: true });
💥 TypeError TypeError: Failed to read the 'query' property from 'Permissions': The provided value 'push' is not a valid enum value of type PermissionName.
При ближайшем рассмотрении мы заметили, что все такие ошибки возникали во время выполнения скриптов пользовательскими агентами, которые не являются нашими реальными клиентами. Скорее, мы видим, что неизвестный клиент запрашивает наше приложение сразу после посещения нашего пользователя:
- Пользователь посещает наш PWA, об ошибках не сообщается
- Пользователь использует "Добавить на главный экран" (чаще всего), об ошибках не сообщается
- Неизвестный клиент посещает наш PWA, сообщается об ошибках.
Этот неизвестный клиент выполняет шаблоны запросов HTTP-запросов:
- URL-адрес совпадает с тем, который посетил пользователь
- Исходящий IP-адрес присваивается Google, Inc. (диапазон 66.102.0.0/20 или 66.249.64.0/19)
- Реферер " https://www.google.com/ "
- Пользовательский агент String каким-то образом совпадает с пользовательским: та же версия Android, та же сборка устройства, тот же браузер, но другая версия браузера, всегда из этого списка:
- Chrome/66.0.3359.126 (22 мая → 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 июня)
Более того, эти запросы выполняются только периодически, на первый взгляд контролируемым образом, что отражено в датах выше и на графике ниже:
Это и тот факт, что мы обнаруживаем использование "Добавить на главный экран" в большинстве случаев, заставляют задуматься, не может ли это быть экспериментом, связанным с WebAPK. Тем не менее, это недокументировано, и, следовательно, очень загадочно.
Что это за неизвестный Google-клиент?
Какова его цель?
Как разработчики должны обнаружить их, и какие меры должны быть приняты?
Обновление за август 2018 года. Похоже, что запросы, описанные выше, теперь полностью исчезли... Но они могли бы стать своего рода прототипом запросов, которые как-то похожего типа наблюдали сейчас. Эти запросы нового типа по-прежнему исходят от серверов Google и, похоже, предназначены исключительно для веб-манифеста нашего PWA, поэтому ошибка JavaScript больше не возникает. Все они содержат строку с пользовательским агентом Chrome/59+, которая имеет четкий постфикс (via Google-Chrome-WebAPK)
. Другие браузеры, такие как Samsung Интернет, еще не определены.