onBeforeRequest 侦听器中的异步调用替代方案

2024-03-24

对于我的 Chrome 扩展程序,我希望具有阻止请求功能。我有一个很大的域列表(~10000),我正在考虑使用 IndexedDb 来存储域列表,但据我现在了解 - 不可能进行异步调用并在请求处理程序中返回结果。 我最初的计划是:

function reqHandler(data) {
  // async IndexedDb call here 
  // and return { cancel: true } or { cancel: false } depends on result
}
chrome.webRequest.onBeforeRequest.addListener(
  reqHandler,
  { urls: ['<all_urls>'] },
  ['blocking']);

看起来好像不可能? 处理我的案件的最佳方式是什么?如何处理如此大小的域列表?我认为它太大了,无法将其作为对象保存在内存中。 希望您能告诉我解决这个问题的方法。谢谢


尝试这个:

创建 JS 文件,例如 BlockUrl.js 并放入数组变量,您将在其中存储 url,例如:

UrlBlck = [
    "*://*.something.com/*",
];

在另一个 JS 文件(如 Code.js)中,放入以下代码:

chrome.webRequest.onBeforeRequest.addListener(
    function(details) {
        return {cancel: true}
    },
    {urls: UrlBlck},
    ["blocking"]
)

在“manifest.json”中,将其放在标头(名称、作者、版本等内容)之后:

  "background": {
    "scripts": ["BlockUrl.js", "Code.js"]
  },

“content_scripts”部分应如下所示: (由于“规则”,你必须至少有一个JS文件,如果你没有其他JS文件,请创建一个空文件)

  "content_scripts": [{
    "matches": ["*://*/*"],
    "js": ["Empty.js"]
  }],

在清单末尾:

  "permissions": ["webRequest", "webRequestBlocking", "<all_urls>"]

现在你可以尝试...

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

onBeforeRequest 侦听器中的异步调用替代方案 的相关文章

随机推荐

  • 处理不同浏览器的JavaScript问题

    我遇到的问题是我的代码在 JavaScript 中工作正常 但在 Firefox 或 safari 中无法正常工作 想知道为什么 我正在做的是 我有一个循环遍历每个元素 并根据文本框中的变量只想发出警报 正如我之前所说 这段代码在 IE 中
  • 如何在 React/JSX 文件中添加脚本标签?

    private get mouseGestureSettingView const selectedMenu this state return selectedMenu 2 div h3 Mouse Gesture h3 div div
  • Puppeteer 访问 URL 时加载 429 的空白页面

    我正在开发一个从酒店网站获取定价信息的项目 但在 puppeteer 中加载网站时无法执行任何搜索 这是我打开 Chrome 的 JavaScript 片段 const puppeteer require puppeteer async g
  • Heroku推送应用程序问题

    我安装了 Heroku 并设置了一个帐户 但由于某种原因 每当我尝试将应用程序推送到网站时 都会收到此错误 git push heroku master No such app as first app fatal The remote e
  • 幕后花絮:核心数据日期以 31 年偏移存储?

    我知道 里面没有用户可维修的部件 但我很好奇 在 Core Data sqlite3 DB 中 我似乎可以在 ZDATE 中获取日期 如下所示 sqlite gt select datetime ZDATE unixepoch 31 yea
  • iOS 金属。为什么简单地改变 colorPixelFormat 就会产生更明亮的图像?

    在 iOS 上的 Metal 中 默认的 colorPixelFormat 是bgra8Unorm 当我将格式更改为rgba16Float所有图像都变亮 为什么 一个例子 Artwork MTKView有格式bgra8Unorm 纹理映射四
  • 正则表达式 [A-Za-z] 似乎不包含字母 W 和 w

    由于某种原因 我不知道为什么 也许我的系统或我的大脑有些不对劲 正则表达式 A Z 似乎无法识别字母 W 和 a z 似乎不认识字母 w 例子 for x in A a B b C c D d E e F f G g H h I i J j
  • 当 std::cerr 上打印某些内容时设置 gdb 断点

    我使用 qt creator 作为 gdb 的 IDE 和前端 当对 std cerr 变量调用operator 如何在 std cerr 设置断点 你的问题没有意义 std cerr是一个全球性的variable 您只能在函数上设置断点
  • 所选 bean 不在同一模块或企业应用程序中

    只是瞎猜 但我是否需要本地接口来调用远程无状态 EJB 当我尝试通过 Netbeans 远程调用 bean 时 Netbeans 不允许对此 Bean 进行远程调用或任何调用 为什么不 尝试手动完成 如下 jndi是什么global部署在
  • MSDeploy setParameter 不起作用

    我们正在尝试将 构建一次 随处部署 模型集成到我们的构建 部署系统中 MSDeploy 在这方面发挥了奇迹 通过 CRC 校验和比较和 大部分情况下 当使用参数化根据我们部署到的环境来更改应用程序 web configs 时 它也同样有效
  • 如何在 DataFrame 中选择两个值之间的行

    我正在尝试修改 DataFramedf仅包含列中的值的行closing price介于 99 和 101 之间 并尝试使用下面的代码来执行此操作 但是 我收到错误 ValueError 系列的真值不明确 使用 a empty a bool
  • 如何使用 API 网关调用 sagemaker 推理端点

    我正在尝试使用 AWS Integration 从 api 网关调用 sagemaker 推理端点 我不想在 API 网关和 sagemaker 运行时之间使用 lamdba 我跟着这个doc https docs aws amazon c
  • Adobe AIR 执行程序

    我想按下 Adob e AIR 应用程序中的按钮并执行某些已安装的程序 例如 我有一个名为 Start Winamp 的按钮 当按下这个按钮时 它应该直接启动 Winamp exe 我不想执行一些命令行 我只想启动一个 exe 或者 是同一
  • CSS - 将文本添加到样式表中的样式

    我还没有找到任何文档 所以我认为这是不可行的 但值得一问 我可以在样式表内指定样式内的实际文本吗 我有几个地方在相同的 div 位置使用相同的文本 我没有使用 javascript 或在 div 中重新输入相同的文本 而是在考虑样式是否可以
  • Json.NET - 防止重新序列化已经序列化的属性[重复]

    这个问题已经存在了 在 ASP NET Web API 应用程序中 我正在使用的一些模型包含一块仅在客户端有用的临时 JSON 在服务器上 它只是作为字符串进出关系数据库 性能是关键 在服务器端处理 JSON 字符串似乎根本没有意义 所以在
  • 无法在不指定完整路径的情况下运行 python 脚本

    您好 我正在尝试直接从终端运行 python 脚本 为此 我已将包含代码的目录添加到我的环境 PATH 变量中 但是 当我指定完整路径时我可以运行 但当我只调用脚本时则不能运行 base DS home user abc my codes
  • 侦听器拒绝连接并出现以下错误:ORA-12505,TNS:侦听器当前不知道连接描述符中给出的 SID

    从昨天开始我的数据库已经工作一年多了 突然间 我无法再连接 我得到的错误是 Status Failure Test failed Listener refused the connection with the following erro
  • .NET 委托是否用于事件?

    我有点困惑 我知道委托就像函数指针 它们用于将函数作为参数传递到方法中 这如何融入事件模型 Calling myButton OnClick new 当事件发生时 内部是否只是将方法 函数作为参数传递 并且所有订阅者都收到有关该事件的通知
  • 有没有简单的方法可以在目标 c 中对一位数字的浮点数进行四舍五入?

    是的 你是对的 当然 这是一个重复的问题 在标记我的问题之前 请继续阅读下面的内容 我想四舍五入一个浮点值 即 56 6748939 to 56 7 56 45678 to 56 5 56 234589 to 56 2 实际上它可以是任意数
  • onBeforeRequest 侦听器中的异步调用替代方案

    对于我的 Chrome 扩展程序 我希望具有阻止请求功能 我有一个很大的域列表 10000 我正在考虑使用 IndexedDb 来存储域列表 但据我现在了解 不可能进行异步调用并在请求处理程序中返回结果 我最初的计划是 function r