Chrome扩展:识别后台页面iframe的网络请求?

2024-01-09

我正在编写一个 Chrome 扩展程序,它会代表用户定期检查网页。为了不引人注目,该页面被加载到扩展程序的隐藏背景页面上的 iframe 中。是否可以仅识别此 iframe 发出的 Web 请求?

我最初的实验(见下文)似乎表明这很棘手。获取特定选项卡的所有 Web 请求非常简单:您拥有 tabId,并且可以使用该 tabId 过滤 Web 请求(通过 WebRequest API)。但对于后台页面 iframe,尚不清楚“tabId 等效”标识符是什么,或者如何使用它来过滤 Web 请求。

有什么想法吗?

我的初步实验细节如下。 FrameId 值看起来很有希望,但我不认为它在扩展中是唯一的。

这个问题已经被问到 Firefox 了:识别源自hiddenDOMWindow(或其 iframe 之一)的请求 https://stackoverflow.com/questions/19076691/identify-requests-originating-in-the-hiddendomwindow-or-one-of-its-iframes?lq=1

==实验==

作为一个实验,我:

  • 使用 WebRequest API 侦听所有 Web 请求
  • 在扩展程序的后台页面上创建了一个 iframe,并打开了一个 url。

这是捕获的 iframe Web 请求:

{
  "frameId": 2,
  "method": "GET",
  "parentFrameId": 0,
  "requestId": "11988",
  "tabId": -1,
  "timeStamp": 1395423892612.272,
  "type": "sub_frame",
  "url": "http://en.wikipedia.org/wiki/Frog"
}

tabId 和parentFrameId 值看起来很可疑。

frameId 值看起来很有希望。如果我们知道框架的frameId,我们可以用它来过滤请求吗?

有可能,但frameId 值在浏览器扩展中并不是唯一的。 我创建了另一个相同的扩展,并让其后台 iframe 加载相同的 url。它生成了一个看起来相同的请求,具有相同的frameId(对于它自己的但不同的iframe)。 另外,这个 Chromium 问题指的是“帧 ID 冲突”:https://code.google.com/p/chromium/issues/detail?id=173325 https://code.google.com/p/chromium/issues/detail?id=173325


事态

你好 - 正在努力解决类似的问题,这就是我发现的:

The tabId and parentFrameId价值观看起来很可疑。

查看文档 https://developer.chrome.com/extensions/webRequest#event-onBeforeRequest对于返回到 WebRequest 回调处理程序的详细信息对象:

  • tabId当没有选项卡时(例如在后台页面中),设置为 -1。
  • 由于扩展位于自己的进程中,0 表示父级是您的顶级框架

Using chrome.tabs you 实际上可以获取后台页面的tabId https://stackoverflow.com/questions/7303452/how-to-get-current-tabid-from-background-page但不幸的是,正如您所发现的,WebRequest 总是给出 -1tabId

一般来说,看起来好像WebRequest将被弃用以支持DeclarativeWebRequest but 后者的开发目前处于暂停状态 https://developer.chrome.com/extensions/declarativeWebRequest.

潜在的实际解决方案:

我还没有对此进行测试,但可能只有从后台页面发出的请求才可用,并且 tabId 为 -1。您可能会过滤这些内容。

黑客解决方案:

  1. 将框架插入到具有已知目标 URL 的选项卡内的实际页面上。该 URL 甚至可以是扩展程序中可通过 Web 访问的 URL,以避免冲突。
  2. 扩展端跟踪生成该请求的 tabId 和frameId。
  3. 在 iframe 中加载您感兴趣的实际页面(通过重定向或让 iframe 的内容成为页面的另一个 iframe)。
  4. 使用存储的 tabId 和frameId(可用作请求的parentId)来决定要过滤哪些请求。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Chrome扩展:识别后台页面iframe的网络请求? 的相关文章

随机推荐

  • 你是质数吗

    多年来我一直对寻找更好的素数识别器的问题感兴趣 我意识到这是一个巨大的学术研究领域 我对此的兴趣实际上只是为了好玩 这是我在 C 语言中第一次尝试可能的解决方案 如下 我的问题是 你能提出改进建议吗 没有引用网上的其他参考资料 我正在寻找实
  • 在 VSCode 中,保存时退出 Vim 插入模式

    我将 VSCode 与 VSCodeVim 扩展一起使用 在插入模式下 我可以按 CMD S 进行保存 当我这样做时 我还想自动退出插入模式 而不是按 ESC 这可能吗 我也在寻找与此问题类似的解决方案 vscode 中似乎无法将多个命令映
  • 实施 isalpha 时遇到问题

    我一直在研究CS50的可读性问题 第一步是创建一种仅计算字母字符的方法 它建议使用isalpha函数 但并不真正包含如何实现它的说明 下面是我的代码 它成功地计算了字母字符总数 但未能过滤掉标点符号 空格和整数 谁能指出我更好的方向来实施i
  • 街道地址的正则表达式

    我正在尝试匹配包含街道和号码的街道地址 我需要表达式来匹配街道名称的单词 后跟数字 例如 我想匹配 somestreet 25 some other street 23 a third street 190 但不匹配 a fourth st
  • 使用 Python 向 Microsoft Teams 发送自动消息

    我想运行一个 Python 脚本 最后通过 MS Teams 将结果以文本格式发送给几个员工 是否有任何已构建的库允许我通过 Python 代码在 Microsoft Teams 中发送消息 1 在 MS Teams 中创建 webhook
  • R清理csv文件

    我正在研究天气数据 我正在尝试清理 csv 文件 但不断收到奇怪的错误 在 csv 文件中 9999 和 9999 是空值 我想删除一半以上值为 9999 或 9999 的所有列 我读了 csv 文件 然后初始化一个空矩阵 使其与读取 cs
  • VBA循环遍历文件夹中的Excel工作簿并复制数据-不循环遍历所有文件

    我试图让 VBA 宏循环遍历特定文件夹中的所有 xls 文件 下面的代码在大多数情况下都有效 然而 我在这个文件夹中有 42 个文件 代码只循环其中大约 26 个 它们都是相同的文件扩展名 我的想法是它要么没有循环遍历所有文件 或者它正在循
  • `scanf("%d", ...)` 和 `gets` 一样糟糕吗?

    很多年了 gets被普遍贬低为不安全的功能 规范的SO问题是为什么 gets 函数如此危险以至于不应该使用它 https stackoverflow com questions 1694036 why is the gets functio
  • 如果第一个返回 false,则不会调用条件中的 javascript 函数调用

    我的问题看似简单 我有两个函数 function a 和 function b 它们显示 隐藏 div 并返回布尔值 我有条件 if function a function b do stuff 然而 如果 function a 返回 fa
  • 以编程方式更改网络选择模式

    我正在尝试 想知道是否有可能 编写一个应用程序 它将根据某些标准自动更改网络选择模式 例如 将网络运营商从 Vodafone 更改为 T Mobile 假设 SIM 卡注册会成功 但我不担心 atm 不幸的是 我似乎无法在 API 中找到任
  • 如何使用 swing 中的 GridLayout 使我的列具有不同的大小?

    我正在使用 GridLayout 我的代码如下 int changingVar 1 JPanel panel new JPanel new GridLayout changingVar 2 panel add new JButton BUT
  • 生成 HMAC SHA256 签名 Powershell

    对于 3commas 我尝试使用文档中的示例参数在 Powershell 中生成 HMAC SHA256 签名 secret NhqPtmdSJYdKjVHjA7PZj4Mge3R5YNiP1e3UZjInClVN65XAbvqqM6A7H
  • 有没有办法使用 Hibernate 仅从对象中获取更改的列?

    在持久对象中 如果我只更改一个字段 是否可以仅通过Hibernate找出更改的字段 我知道我可以获取整个旧行和新行并进行比较 根据您的评论之一 我的理解是您正在寻找一种审核解决方案 因此我建议检查Envers http www jboss
  • 使用jackson转换Java对象时如何忽略可选属性

    我正在使用 Jackson 1 9 2 org codehaus jackson 将 Java 对象转换为匹配的 JSON 构造 这是我的java对象 Class ColorLight String type boolean isOn St
  • “列表”对象没有属性“值”错误

    我想将数据获取到 Excel 工作表 问题是 当我运行整个代码时 我收到一个错误 但当我单独运行它时 它没有错误 这就是我想要的 from xlwings import Workbook Sheet Range Chart import r
  • Google Simple API 密钥停止工作

    我正在使用 Python Twisted 对 Google API 进行异步 HTTP 调用 我们的客户端应用程序传递用户的 access token 然后我们执行 API 调用 https www googleapis com plus
  • 拦截 GNU tar 的 openat() 系统调用

    我正在尝试拦截openat Linux 上的系统调用使用自定义共享库 我可以通过以下方式加载LD PRELOAD 一个例子intercept openat c有这样的内容 define GNU SOURCE include
  • Heroku 应用程序在本地运行但出现 H12 超时错误(使用包)

    类似的问题已经被问过 但 H12 似乎是由很多原因引起的 没有一个答案适用于此 我之前用 heroku 构建过 python 应用程序 但现在我使用 Miguel Grinberg 的包结构Flask 大型教程 http blog migu
  • Paperclip、Delayed Job、S3、Heroku - 延迟处理敏感上传文件的设计:db 还是 s3?

    我需要有关使用 Heroku 回形针 延迟作业以及 如有必要 s3 上传和延迟处理文件的设计的反馈 它的一部分已经在其他地方讨论过 但我在任何地方都找不到完整的讨论 任务描述 上传文件 使用回形针到heroku上的s3 db 文件需要保密
  • Chrome扩展:识别后台页面iframe的网络请求?

    我正在编写一个 Chrome 扩展程序 它会代表用户定期检查网页 为了不引人注目 该页面被加载到扩展程序的隐藏背景页面上的 iframe 中 是否可以仅识别此 iframe 发出的 Web 请求 我最初的实验 见下文 似乎表明这很棘手 获取