我正在开发 Google Chrome 扩展程序,我想在不影响其他页面或选项卡的情况下,为选项卡/页面或弹出窗口(iframe 显示为“气泡弹出窗口”)设置特定的用户代理.
这可能吗?
最佳答案
webRequest
API可用于修改用户代理 header 。
注意:开发人员工具中的网络选项卡显示旧 header 。我已使用 netcat 验证 header 设置正确(nc -l 127.0.0.1 -p 6789
)。
在下面的示例中,代码在所有 选项卡上激活。调整 request filter以满足您的要求。添加 tabId
以使用选项卡的 tabId(可通过各种 API 获得,特别是 chrome.tabs
)来限制此过滤器的功能。
background.js
chrome.webRequest.onBeforeSendHeaders.addListener(
function(info) {
// Replace the User-Agent header
var headers = info.requestHeaders;
headers.forEach(function(header, i) {
if (header.name.toLowerCase() == 'user-agent') {
header.value = 'Spoofed UA';
}
});
return {requestHeaders: headers};
},
// Request filter
{
// Modify the headers for these pages
urls: [
"http://stackoverflow.com/*",
"http://127.0.0.1:6789/*"
],
// In the main window and frames
types: ["main_frame", "sub_frame"]
},
["blocking", "requestHeaders"]
);
list .json
{
"name": "WebRequest UA test",
"version": "1.0",
"permissions": ["webRequest", "webRequestBlocking", "http://*/*"],
"background": {
"scripts": ["background.js"]
},
"manifest_version": 2
}
文档
关于javascript - 将自定义用户代理关联到特定的 Google Chrome 页面/标签,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10334909/