首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在我们的PWA中触发JavaScript错误的这个未知的谷歌客户端是什么?

在我们的PWA中触发JavaScript错误的这个未知的谷歌客户端是什么?
EN

Stack Overflow用户
提问于 2018-06-13 12:13:49
回答 1查看 553关注 0票数 39

我们运行的是为Chrome和三星互联网启用推送通知的渐进Web应用程序,并鼓励用户将其添加到主屏幕上。我们严格记录和监控浏览器异常,以保持高质量的服务。

自2018年5月22日以来,我们注意到突然出现了一些令人费解的JavaScript异常,这些异常源自对标准、功能检测到的Web的调用,这些API以前从未失败过。

例如,下面的代码将产生以下错误,尽管“push”显然是每个Permissions.query()规范的有效值

代码语言:javascript
复制
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与用户访问的URL完全相同
  • 原始IP地址分配给Google公司(66.102.0.0/20或66.249.64.0/19范围)
  • 推荐人是“https://www.google.com/
  • 用户代理字符串在某种程度上与用户中的一个匹配:相同版本的Android,相同的设备构建,相同的浏览器,但不同的浏览器版本,总是从这个列表:
    • Chrome/66.0.3359.126 (5月22日→5月30日)
    • Chrome/66.0.3359.158 (6月11日→6月25日)
    • SamsungBrowser/3.0 Chrome/38.0.2125.102 (6月25日→6月27日)
    • SamsungBrowser/6.4 Chrome/56.0.2924.87 (5月22日→5月30日,6月25日)
    • SamsungBrowser/7.0 Chrome/59.0.3071.125 (5月22日→5月30日,6月25日)

更重要的是,这些请求只是间歇性的,似乎是可控的,如上面的日期和下面的图表所反映的那样:

这一点,以及我们在大多数情况下检测到“添加到主屏幕”的使用情况,使我们怀疑这是否是一个与WebAPK有关的实验。然而,这是没有文件的,因此非常令人费解。

这个未知的谷歌客户端是什么?

它的目的是什么?

开发人员应该如何检测它们,应该采取哪些措施?

2018年8月更新:上面描述的请求现在似乎已经完全消失了,…但它们可能是我们现在看到的某种类似请求的原型。这些新类型的请求仍然来自Google,并且似乎只针对我们PWA的Web,因此不再触发JavaScript错误。它们都带有一个Chrome/59+用户代理字符串,显然是邮政固定的(via Google-Chrome-WebAPK)。其他浏览器,如三星互联网,还没有被发现。

EN

回答 1

Stack Overflow用户

发布于 2020-06-07 15:18:13

这可能是一个无头Chrome (可能是预发布测试,如果你有它在Play商店),它没有push的权限;例如。一个人只能接受重写权限,但不能真正接受许可提示.而且通常没有附加桌面,可以将通知推送到桌面。

只需要trycatch来分类不支持push权限的客户端。

代码语言:javascript
复制
navigator.permissions
  .query({name: 'push', userVisibleOnly: true})
  .then(function(permissionStatus) {
      console.log('push permission state is ', permissionStatus.state);
  })
  .catch((error) => {
      console.warn(error);
  });
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50837015

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档