Google Chrome 拡張機能を開発しており、他のページやタブに影響を与えずに、特定のユーザー エージェントをタブ/ページ、またはポップアップ (「バブル ポップアップ」として表示される iframe) に設定したいと考えています。
出来ますか?
Google Chrome 拡張機能を開発しており、他のページやタブに影響を与えずに、特定のユーザー エージェントをタブ/ページ、またはポップアップ (「バブル ポップアップ」として表示される iframe) に設定したいと考えています。
出来ますか?
webRequest
APIを使用して、ユーザー エージェント ヘッダーを変更できます。
注: 開発者ツールの [ネットワーク] タブには、古いヘッダーが表示されます。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
}