【发布时间】:2012-05-07 06:34:04
【问题描述】:
我正在开发一个 Google Chrome 扩展程序,我想为标签/页面或弹出窗口(iframe 显示为“气泡弹出窗口”)设置特定的用户代理,而不影响其他页面或标签.
有可能吗?
【问题讨论】:
标签: javascript google-chrome google-chrome-extension http-headers user-agent
我正在开发一个 Google Chrome 扩展程序,我想为标签/页面或弹出窗口(iframe 显示为“气泡弹出窗口”)设置特定的用户代理,而不影响其他页面或标签.
有可能吗?
【问题讨论】:
标签: javascript google-chrome google-chrome-extension http-headers user-agent
webRequest API 可用于修改用户代理标头。
注意:开发者工具中的网络标签显示 old 标头。我已经使用netcat (nc -l 127.0.0.1 -p 6789) 验证了标题设置是否正确。
在下面的示例中,代码在所有标签上激活。调整request filter 以满足您的要求。添加tabId 以限制此过滤器的功能,使用选项卡的tabId(可通过各种API 获得,尤其是chrome.tabs)。
background.jschrome.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
}
【讨论】: