【问题标题】:WebExtension redirect and block websitesWebExtension 重定向和阻止网站
【发布时间】:2016-11-16 16:02:10
【问题描述】:

我已经为 Firefox 启动了简单的网络扩展,理论上它应该根据来自远程服务器的一些响应来阻止对特定网站的访问。用户尝试导航,直到没有收到来自远程服务器的确认,才会加载新页面。不幸的是,远程“检查”服务器仅限于每个用户在一秒钟内发出几个请求,所以我不能(也没有必要)检查用户导航到某个页面后发出的每个请求。有没有什么方法可以监听“真正的”导航而不是所有这些请求,并在发出任何请求之前将整个选项卡重定向到某个地方?

我已经尝试过附加 API:

  • 在收到内容后触发的选项卡事件,这不好。

  • “http-on-modify-request”事件会针对每个单独向远程检查服务器发送垃圾邮件的请求触发。

网络扩展:

  • browser.webNavigation.onBeforeNavigate 似乎是我所需要的,但我既不能发送检查请求也不能从那里重定向,我不确定我能否做到。

【问题讨论】:

  • 如何在未收到(超时?)之前不加载? (即“新页面将不被加载,直到确认没有收到来自远程服务器”。
  • 这个问题对于 Stack Overflow 格式来说实在是太宽泛了。有太多可能的方法来实现这一点。一种方法是跟踪允许的 URL/域。然后,您仅在第一次请求该域内的某些内容时才请求授权。然后,您会记住该响应并将其用于将来对该域的任何请求。甚至你如何确切地实现它也太宽泛了。

标签: firefox-addon firefox-addon-webextensions


【解决方案1】:

“http-on-modify-request”事件被触发每个请求分别向远程检查服务器发送垃圾邮件。

该观察者通知为您提供了一个 http 通道,即通道 has a loadInfo 属性,它具有一个 externalContentPolicyType 属性,允许您通过匹配 content policy constants 之一来过滤顶级文档加载。

WebRequest.jsmbrowser.webRequest 是对 http 观察者的抽象,并提供类似的功能。

【讨论】:

    猜你喜欢
    • 2020-09-21
    • 1970-01-01
    • 1970-01-01
    • 2014-10-21
    • 1970-01-01
    • 2021-03-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多