相关疑难解决方法(0)

使用内容脚本将代码插入页面上下文

我正在学习如何创建Chrome扩展程序.我刚开始开发一个来捕捉YouTube活动.我想将它与YouTube Flash播放器一起使用(稍后我将尝试使其与HTML5兼容).

manifest.json的:

{
    "name": "MyExtension",
    "version": "1.0",
    "description": "Gotta catch Youtube events!",
    "permissions": ["tabs", "http://*/*"],
    "content_scripts" : [{
        "matches" : [ "www.youtube.com/*"],
        "js" : ["myScript.js"]
    }]
}
Run Code Online (Sandbox Code Playgroud)

myScript.js:

function state() { console.log("State Changed!"); }
var player = document.getElementById("movie_player");
player.addEventListener("onStateChange", "state");
console.log("Started!");
Run Code Online (Sandbox Code Playgroud)

问题是控制台给了我"开始!" ,但没有"状态改变!" 当我播放/暂停YouTube视频时.

将此代码放入控制台时,它可以正常工作.我究竟做错了什么?

javascript google-chrome youtube-api google-chrome-extension content-script

452
推荐指数
5
解决办法
24万
查看次数

Chrome扩展程序 - 如何获取HTTP响应正文?

这似乎是困难的问题(或不可能?).我想通过观看Chrome扩展程序后台脚本来获取并阅读由浏览器中的HTTP请求引起的HTTP响应.我们可以通过这种方式获得HTTP Request Body

chrome.webRequest.onBeforeRequest.addListener(function(data){
    // data contains request_body
},{'urls':[]},['requestBody']);
Run Code Online (Sandbox Code Playgroud)

我还检查了这些stackoverflows

有没有聪明的方法来获取Chrome扩展中的HTTP响应体?

javascript google-chrome-extension

28
推荐指数
4
解决办法
2万
查看次数

是否可以使用扩展程序监控Chrome中的HTTP流量?

我正在尝试编写一个Chrome扩展程序,该扩展程序需要监视HTTP流量以检查是否请求了特定域,然后根据该扩展程序执行其他操作.

如果可能的话,我希望将它全部保留为单个扩展名,因此不能使用Fiddler等.我知道FireFox可以在HttpFox中完成此操作,但我不确定Chrome是否允许这样做.

谢谢.

javascript google-chrome http google-chrome-extension

11
推荐指数
2
解决办法
1万
查看次数

在Chrome扩展程序上阅读响应正文的解决方法

显然,Chrome扩展程序的API不允许扩展程序读取响应正文.

https://bugs.chromium.org/p/chromium/issues/detail?id=487422

我的扩展需要读取响应主体以从页面获取数据.

我试过了...

  chrome.webRequest.onCompleted.addListener((details) => {
       fetch(details.url)
       .then(res => res.json())
       .then(res => responseFunction(res))
       .catch(err => console.log(err))
    }, { urls: ["*://*.url.com/*"], types: ["xmlhttprequest"] }
  );
Run Code Online (Sandbox Code Playgroud)

但是,这当然是一个无限循环.

我在不同的机器上设置了一个代理服务器,但这看起来很傻,效率很低.

还有其他人解决过这个问题吗?

google-chrome-extension

8
推荐指数
1
解决办法
1871
查看次数

Google Chrome 扩展 - 获取响应正文

我试图拦截用户浏览器的所有网络请求的响应。
我使用chrome.webRequest.onResponseStarted并获取了响应标头,
但我不知道如何获取完整的响应正文。
如果您能帮助我了解如何操作,我会很高兴。

这是我的manifest.json

{
  "manifest_version": 2,
  "name": "tempName",
  "description": "Temp description",
  "version": "1.0",
  "icons": {
    "16": "/images/icon-16.png",
    "48": "/images/icon-48.png",
    "128": "/images/icon-128.png"
  },
  "background": {
    "scripts": ["background.js"]
  },
  "page_action": {
    "default_icon": {
      "16": "/images/icon-16.png",
      "48": "/images/icon-48.png",
      "128": "/images/icon-128.png"
    }
  },
  "permissions": [
    "webRequest",
    "webRequestBlocking",
    "<all_urls>"
  ]
}
Run Code Online (Sandbox Code Playgroud)

这是我的background.js

chrome.webRequest.onResponseStarted.addListener(function (e) {
  console.log(e);
}, {
  urls: ["<all_urls>"],
});
Run Code Online (Sandbox Code Playgroud)

google-chrome google-chrome-extension

6
推荐指数
0
解决办法
2733
查看次数

Chrome 扩展服务工作线程中永远不会触发 Fetch 事件。这是预期的吗?

我想做的事

我正在尝试拦截第三方网站的获取事件并在 Chrome 扩展程序中修改其请求正文。事件处理程序不允许修改请求正文chrome.webRequest.onBeforeRequest。但看起来常规服务工作人员确实有能力侦听和修改 fetch 事件,并使用我自己的响应手动响应请求,这意味着我应该能够拦截请求,修改正文,将修改后的请求发送到API,然后使用我修改后的请求的响应来响应原始请求。

问题

正如我在“网络”面板中看到的那样,尽管网站触发了大量的获取事件,但这些事件处理程序似乎都没有被触发。

// background.js

self.onfetch = (event) => console.log(event.request); // never shows

// or

self.addEventListener("fetch", (event) => {
  console.log(event.request); // never shows
});
Run Code Online (Sandbox Code Playgroud)

console.log我可以通过查看Service Worker 控制台中出现的其他日志(顶级日志以及事件触发的日志)来"install"验证Service Worker 是否正在运行

// background.js

console.log(self); // works

self.addEventListener("install", (event) => {
  console.log(event); // works
});
Run Code Online (Sandbox Code Playgroud)

假设

提取事件处理程序是否不会被触发,因为出于安全原因不允许扩展服务工作人员访问这些事件处理程序?这是有道理的,我只是没有在任何地方明确地看到这个记录,所以最好知道这是否确实是一个平台限制或者我是否做错了什么。

替代解决方案?

如果这确实是扩展平台的限制,是否有其他方法可以使用 Chrome 扩展来修改第三方网站上的请求正文?

google-chrome-extension service-worker service-worker-events

5
推荐指数
0
解决办法
944
查看次数

如何在 Chrome 扩展清单版本 3 中获取请求的 API 响应正文

我正在开发清单版本 3,并陷入了通过 chrome 扩展中请求的 API 获取响应正文的无尽漏洞。

目标是获得所有请求的 API 响应

这是代码。

清单.json

{
  "name": "Chapter 28 (MV3)",
  "version": "1.0",
  "manifest_version": 3,
  "description": "This is Chapter 28",
  "declarative_net_request" : {
    "rule_resources" : [{
      "id": "ruleset_1",
      "enabled": true,
      "path": "rules_1.json"
    }]
  },
  "permissions": [
    "declarativeNetRequest",
    "declarativeNetRequestFeedback"
  ],
  "background": {
    "service_worker": "background.js"
  }
}
Run Code Online (Sandbox Code Playgroud)

规则_1.json

  [
  {
    "id": 1,
    "priority": 1,
    "action": {
      "type": "block"
    },
    "condition": {
      "urlFilter": "yahoo.co.jp",
      "resourceTypes": ["main_frame"]
    }
  },
  {
    "id": 2,
    "priority": 1,
    "action": {
      "type": "allow"
    }, …
Run Code Online (Sandbox Code Playgroud)

javascript google-chrome-extension chrome-extension-manifest-v3 chrome-declarativenetrequest

1
推荐指数
1
解决办法
4106
查看次数