有没有一种 HTML5 方法可以有条件地排除无头浏览器上的脚本标签



我们使用预渲染类型的软件来为抓取工具呈现我们的单页应用,我们希望排除所有第三方script标签,我们按展示次数付费。使用 writeln 或通过创建 dom 元素在 JS 中动态加载它们意味着等到 JS 被解析后再导入非常重要的库(如 Optimizely - 我们希望尽早加载它以避免 dom flash)。

是否有类似于<!-- if[IE] -->连续注释的东西可以用来从无头浏览器中排除块?

首先,确保您要阻止的那些脚本标签不会修改页面。您不希望向爬虫提供与向用户提供不同的页面,因为这可以被视为伪装。

如果您直接将Headless Chrome与chrome-remote-interface之类的东西一起使用,则可以使用此处setBlockedURLs:https://chromium.googlesource.com/chromium/src/+/master/third_party/WebKit/Source/core/inspector/browser_protocol.json

如果您托管自己的预渲染服务器,请查看用于阻止某些 URL 的插件:https://github.com/prerender/prerender/blob/chrome/lib/plugins/blockResources.js

如果您使用的是我们的托管预渲染服务,请向我们发送电子邮件,我们可以通过我们的托管服务帮助您阻止这些服务。

最新更新