我们正在运行渐进式网络应用程序,并为Chrome和三星互联网启用推送通知,并鼓励我们的用户将其添加到主屏幕.我们严格记录和监控浏览器异常,以保持高质量的服务.
自2018年5月22日以来,我们注意到令人费解的JavaScript异常的突然增加,这些异常源于对先前从未失败过的标准,功能检测到的Web API的调用.
例如,以下代码将产生以下错误,尽管"推"显然是每个Permissions.query()规范的有效值:
const permissionStatus = await navigator
.permissions
.query({ name: 'push', userVisibleOnly: true });
Run Code Online (Sandbox Code Playgroud)
TypeError: Failed to read the 'query' property from 'Permissions': The provided value 'push' is not a valid enum value of type PermissionName.
经过仔细检查,我们注意到所有这些错误都发生在脚本执行过程中,而不是我们实际客户的用户代理.相反,我们在用户访问后立即看到未知客户端查询我们的应用程序:
此未知客户端执行带有特征模式的HTTP请求:
更重要的是,这些请求只能以看似受控的方式间歇性地发生,如上面的日期和下图所示:
在大多数情况下,我们检测到"添加到主屏幕"的使用情况,这让我们想知道这是否可能是与WebAPK有关的实验.然而,这是无证的,因此非常令人费解.
什么是这个未知的谷歌客户端?
它的目的是什么?
开发人员应如何检测它们,以及应采取哪些措施?
2018年8月更新:如上所述的请求现在似乎已经完全消失了......但它们可能是我们现在看到的某种类似请求的某种原型.这些新类型的请求仍然来自Google服务器,并且似乎专门针对我们的PWA的Web Manifest,因此不再触发JavaScript错误.它们都带有明确后缀的Chrome/59 +用户代理字符串(via Google-Chrome-WebAPK)
.其他浏览器,如三星互联网,尚未被发现.
android google-chrome service-worker progressive-web-apps samsung-browser
我在http://www.schandillia.com 上运行了一个NodeJS/NextJS应用程序。该项目有一个robots.txt文件,可从http://www.schandillia.com/robots.txt 访问。截至目前,该文件是用于测试目的的基本文件:
User-agent: *
Allow: /
Run Code Online (Sandbox Code Playgroud)
但是,当我在我的网站上运行 Lighthouse 审核时,它会抛出一个爬网和索引错误,说它无法下载robots.txt文件。我再说一遍,该文件可从http://www.schandillia.com/robots.txt 获得。
如果您需要查看该项目的代码库,请访问https://github.com/amitschandillia/proost。该robots.txt的文件位于proost/web/static/
而是得益于我的Nginx的配置如下根访问:
# ... the rest of your configuration
location = /robots.txt {
proxy_pass http://127.0.0.1:3000/static/robots.txt;
}
Run Code Online (Sandbox Code Playgroud)
完整的配置文件可在https://github.com/amitschandillia/proost/blob/master/.help_docs/configs/nginx.conf上的 github 上查看。
如果有什么我忽略的地方,请提供建议。
robots.txt node.js lighthouse content-security-policy next.js