我一直在尝试仅针对我正在开发的Chrome扩展程序切换用户代理。该扩展程序需要更改用户代理,以便它可以扫描Dropbox并需要特定的用户代理来执行此操作。我已经能够切换用户代理,但是它适用于所有选项卡或仅适用于一个网站。当我在另一个选项卡上打开Dropbox时,它正在使用另一个用户代理。但是,我只希望在扩展程序的选项卡中以及在我关闭扩展程序在后台运行时切换用户代理。
到目前为止,我已经尝试过:
chrome.webRequest.onBeforeSendHeaders.addListener(function(info) {
chrome.tabs.query({active: true, currentWindow: true}, function(tabs) {
// since only one tab should be active and in the current window at once
// the return variable should only have one entry
var activeTab = tabs[0];
var activeTabId = activeTab.id; // or do whatever you need
});
// Replace the User-Agent header
var headers = info.requestHeaders;
headers.forEach(function(header) {
if (header.name.toLowerCase() == 'user-agent') {
header.value = 'Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/28.0.1468.0 Safari/537.36';
}
});
hasSetUA = true;
return {requestHeaders: headers};
},
// Request filter
{
// Modify the headers for these pages
urls: [
"https://dropbox.com/*"
],
tabId: activeTabId
},
["blocking", "requestHeaders"]
);
任何帮助都会很棒。我已将webrequest
,webrequestblocking
和选项卡添加到清单权限列表中。