我正在开发一个Google Chrome扩展程序,我想为一个选项卡/页面或弹出窗口(以“气泡弹出”形式显示的iframe)设置特定的用户代理,而不影响其他页面或选项卡。这是否可能实现?
webRequest
API可以用于修改User Agent头信息。
注意:开发者工具的Network选项卡显示的是旧的头信息。我已经使用netcat (nc -l 127.0.0.1 -p 6789
)验证了头信息被正确设置。
在下面的示例中,代码激活了所有选项卡。根据您的需求调整请求过滤器。添加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"]
);
manifest.json
{
"name": "WebRequest UA test",
"version": "1.0",
"permissions": ["webRequest", "webRequestBlocking", "http://*/*"],
"background": {
"scripts": ["background.js"]
},
"manifest_version": 2
}