我正在学习如何创建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
这似乎是困难的问题(或不可能?).我想通过观看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响应体?
我正在尝试编写一个Chrome扩展程序,该扩展程序需要监视HTTP流量以检查是否请求了特定域,然后根据该扩展程序执行其他操作.
如果可能的话,我希望将它全部保留为单个扩展名,因此不能使用Fiddler等.我知道FireFox可以在HttpFox中完成此操作,但我不确定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)
但是,这当然是一个无限循环.
我在不同的机器上设置了一个代理服务器,但这看起来很傻,效率很低.
还有其他人解决过这个问题吗?
我试图拦截用户浏览器的所有网络请求的响应。
我使用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) 我正在尝试拦截第三方网站的获取事件并在 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
我正在开发清单版本 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
javascript ×4
chrome-declarativenetrequest ×1
chrome-extension-manifest-v3 ×1
http ×1
youtube-api ×1