Dan*_*nny 4 javascript user-agent google-chrome websocket google-chrome-extension
我正在尝试编写一个扩展程序,该扩展程序将修改来自 Chrome 的所有传出请求的用户代理。
对于 http://、https://、ftp://、file:// 或 chrome-extension:// 我可以使用chrome.webRequest API和onBeforeSendHeaders. 但是,这不适用于 ws:// 或 wss://。
是否有其他 API 允许我设置/修改这些请求的标头?
我在谷歌上搜索这个问题的答案,因为现在,三年后,这是可能的,我会在这里记录下来。
根据https://developer.chrome.com/extensions/webRequest,它应该可以在 Chrome 58 上运行。但是需要一些配置才能使其正常工作。
请记住, webRequest 仅在后台脚本中可用,而在内容脚本中不可用。
示例(更改 Origin 标头,更改 User Agent 应该类似)
在 manifest.json 中:
"permissions": [
"storage",
"tabs",
"activeTab",
"webRequest",
"webRequestBlocking",
"webNavigation",
"debugger",
"https://*/",
"wss://*/"
],
Run Code Online (Sandbox Code Playgroud)
在后台脚本中
// origin is defined somewhere above
chrome.webRequest.onBeforeSendHeaders.addListener((details) => {
if (origin) {
const headers = details.requestHeaders;
for (let i = 0; i < headers.length; i++) {
if (headers[i].name === 'Origin') {
headers[i].value = origin;
}
}
return { requestHeaders: headers };
}
}, { urls: ['wss://server.example.com/*', 'https://server.example.com/*'],
types: ['xmlhttprequest', 'websocket'] },
['requestHeaders', 'blocking']);
Run Code Online (Sandbox Code Playgroud)