问题标签 [chrome-webrequest]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
decode - 从通过 webRequest FilterResponseData StreamFilter 传递的 TypedArray 缓存数据中解码字符串
我正在使用 Mozilla 的 webRequest StreamFilter 来读取 http 请求
只要请求没有在浏览器中缓存,从类型化数组中解码的文本就可以正确解码,但是当数据来自缓存时就会出现问题。发生这种情况时,这将成为先前成功解码的相同数据的输出:
����������20180901034956%���������������������������������������� ���������� ����~��������v�a�r
这只是一个小样本,字符串相当大。为此,我使用TextDecoder并设置了 UTF-8 编码选项。
经过一番挖掘,我发现缓存的数据类型数组用零填充,因此在读取该字符串的 unicode 时,它会转换为以下内容,我认为它在字符串中为空:
\u0000\u0000\u0000\u0000\u0000\u0000\u000e\u0000\u0000\u000020180901034956%\u0000\u0000\u0000\u0005\u0000\u0000\u0000\u0001\u0000\u0000\u0000\u0014\u0000\u0000\ u0000\u0000\u0000\u0000\u0000\u0002\u0000\u0000\u0000\u0001\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\ u0002\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0005\u0003\u0000\u0001\u0000~...
应用的一个快速“解决方案”是仅从 typedarray 中删除零或从字符串中删除 null,而不知道它可能如何影响原始数据,从而导致以下结果:
�20180901034956%����������~��var
以及各自的unicode版本
\u000e20180901034956%\u0005\u0001\u0014\u0002\u0001\u0002\u0005 \u0003\u0001~�\u0013var
在线搜索其中一些字符显示其中一些是控制字符,现在我完全不知道为什么会发生这种情况 - 除了这是缓存的数据 - 以及如何正确解码它。
我已经尝试向 Firefox 的频道寻求帮助,但似乎连续 3 天后没有人回答,所以我在这里发布了这个问题。
我怎样才能以正确的方式解码缓存数据,还有谁能解释它为什么会这样显示?所有其他未缓存的数据都被正确解码。
编辑:经过更多挖掘后,我确认数据是从 Firefox 缓存文件中读取的数据。我能够找到正确的文件,其中包含以下信息示例(在记事本中打开):
20180901034956% ~ÿ var
“var”之后的文本遵循每个字符的相同格式,后跟一个“空格”,如果那甚至是一个空格。所以确认这是从缓存文件传递的数据,那么我怎样才能正确解码呢?我认为删除空格不是一个合适的解决方案,因为它还可以删除作为原始数据信息一部分的空格。
EDIT2:数据假设如下所示:
变量
后面什么都没有,每个字符之间也没有空格。
google-chrome-extension - 301 Redirected requests not intercepted by Chrome WebRequest API
I developed a Chrome Extension which manipulates response headers of network requests.
Consider website URL: http://www.myntra.com
This website redirects to https://www.myntra.com with status 301 Moved Permanently.
My extension successfully intercepts http://www.myntra.com but not https://www.myntra.com.
Permissions in manifest.json:
Is it a restriction from Chrome WebRequest APIs or I'm missing some permissions?
javascript - Chrome 扩展程序:URL 权限不起作用
我们正在使用 chrome webrequest API 来拦截和修改请求的标头。在 Chrome 72 之前我工作得很好,但它不再工作了。但是当我用它替换权限时"<all_urls>"。另外,我尝试了另一个域,谷歌,比如这个例子:https ://developer.chrome.com/extensions/webRequest ,但它也不起作用。
你知道为什么它不再起作用了吗?我们将暂时使用"<all_urls>",但这是我们并不真正需要的巨大许可。
清单.json:
背景.js
编辑 :
问题解决了。对于 Chrome 72,您现在需要将请求的主机添加到您的权限中才能编辑标头。
清单.json:
javascript - 在没有“ERR_BLOCKED_BY_CLIENT”的情况下,如何在 onHeadersReceived 后阻止 chrome webextension 中的 webrequest
我尝试将我的 Firefox 扩展移植到 Chrome,但工作方式webrequestonHeadersReceived似乎并不相同。
当我使用:
该函数analyse被正确调用,我可以分析响应标头,如果函数返回"cancel: true",则在 Firefox 上页面不会更新并且它是完美的,但在 Chrome 中,页面正在更新并显示著名的消息
“对服务器的请求已被扩展程序阻止”
我的扩展程序的目标是管理某种类型的可下载文件。但是在 Firefox 中,如果您单击下载,页面不会移动,我可以显示一个面板让您选择要做什么,在 Chrome 中,即使我的面板正确显示,主页也会更新此错误消息我被迫点击“返回”来检索原始页面。
此外,在 Firefox 中,当一次请求被阻止时,它不会尝试再次获取该请求,而在 Chrome 中,显示错误消息的页面会尝试获取新的请求。
google-chrome-extension - 使用 webRequest API 拦截脚本请求,编辑并发送回
正如标题所说,我正在尝试拦截来自用户页面的脚本请求,从后台向脚本 url 发出 GET 请求,添加一些功能并将其发送回用户。
一些警告:
- 我不想对每个脚本请求都这样做
- 我还是要保证脚本标签按照原来的顺序执行
到目前为止,我提出了两种解决方案,但都不能正常工作。基本代码:
现在,一旦我们有了代码,我就尝试了两种方法将其重新插入到页面中。
- 我通过端口将代码发送到内容脚本,该脚本会将其添加到
<script></script>标签内的页面中。除了代码之外,我还发送了一个索引,以确保脚本以正确的顺序重新插入到页面中。这适用于我的虚拟网站,但它会在更大的应用程序上中断,比如 youtube,它无法加载大多数视频的图像。关于为什么会发生这种情况的任何提示? 我将重定向返回到数据 url:
/li>
第二个选项会破坏代码格式,有时会删除空格,有时会缩短空格。我不确定这种行为背后的原因,它可能与数据 url 规范有关。
我被困住了。我已经研究了这个网站上几乎所有相关的答案,但找不到任何东西。非常感谢任何帮助或信息!
谢谢你的时间!!!
javascript - chrome.webRequest.onBeforeRequest 导致网页部分功能加载失败
我正在写一个 chrome 扩展。我希望它阻止 en.wikipedia.org 上的所有页面,除了 Main_Page。我曾经chrome.webRequest.onBeforeRequest这样做过。
这是我用于 chrome 扩展的后台脚本的代码:
此代码正确阻止除 Main_Page 之外的所有 Wikipedia 页面。
它确实显示了 Main_Page,但它显示了一个没有 CSS 的简化版本。
我已经在其他网站上尝试过这个(即阻止“ https://www.reddit.com/ *”,除了“ https://www.reddit.com/ ”),在这些其他情况下,一些页面元素无法加载。
为什么会这样?我可以使用chrome.webRequest.onBeforeRequest并正确显示网页吗?
javascript - chrome.webRequest.onBeforeRequest.addListener 不阻止 URL 数组
我正在尝试根据用户输入阻止一组 url。我有 JSON 格式的 url 数组,但是当我导航到它们时,这些站点实际上并没有被阻止。如果我只使用一个站点,而不是一个阵列,它确实会被成功阻止。这是功能。
这是我的函数blockedUrls。
console.log 确实打印出我想要的,就是这个(有些显然只是用于测试)
而且,如果有帮助,这里是网站最初从变量 request.newSites 设置到 chrome 存储的地方。
提前致谢。
javascript - Chrome 扩展阻止特定模式的 url
我正在构建一个 chrome 扩展来阻止来自某个主机地址的图像。但是,由于谷歌代理图像,我无法弄清楚要在 chrome webrequest api 中使用的 url 模式。
网址将是这样的。
cookies - 通过 webRequest.onBeforeSendHeaders 设置自定义标头时,电子应用程序内 iframe 中的 Cookie 停止工作
我在加载外部 URL 的电子应用程序(v6.1.2)中有一个 iframe。我需要使用自定义标头加载该 URL,因此我使用webRequest.onBeforeSendHeaders()它来拦截请求并插入该标头。一旦我传递requestHeaders给回调参数,iframe 中的 cookie 就会停止工作。
在main.js:
目标 URL 处的 PHP 脚本:
每次刷新应用程序或 iframe 时,该脚本的(伪)输出如下:
如果我requestHeaders从上面的回调参数中删除该属性main.js,则输出是所希望的:PHP 会话 ID 保持不变,并且目标站点设置的任何 cookie 都保持不变。这就是我知道这在 PHP 端不是问题的方式。我还可以排除它X-MY-CUSTOM-HEADER本身的干扰,因为即使根本不更改标题(参见代码注释),问题仍然存在。
我错过了什么还是这是电子中的错误?有没有办法解决?
google-chrome-extension - WebRequest Redirect to Interstatial 显示被扩展而不是本地资源阻止。不是 100% 可重现的
我有一个已经工作了近 2 年的扩展,现在没有问题。我在大约一年内没有做出任何改变,但最近我开始看到行为发生了一些变化。
我使用 Webrequest APi 来拦截导航。在某些网站的回调期间,我需要异步进行一些安全评估。发生这种情况时,我将重定向到本地资源 (html) 作为一个告诉用户我在做什么的中间页面。一旦根据评估完成,页面就会被重定向到它应该在的地方。这通常非常快,并且在过去 2 年中运行良好。由于最新版本的 chrome 东西似乎不再适用于所有情况。
如果我拦截地址栏导航。一切都按预期工作。洲际流行音乐和一切都很棒。然而。如果我单击与网页上的链接相同的网站。我得到“被扩展页面阻止”。(如果导航被取消,你会得到什么)。我还注意到我的 interstatial 显示在网络历史记录中,如果我从历史记录页面单击它,一切正常。似乎谷歌可能引入了一个错误?
只是想知道是否有人看过这个。
谢谢