7

Google Chrome 拡張機能を開発しており、他のページやタブに影響を与えずに、特定のユーザー エージェントをタブ/ページ、またはポップアップ (「バブル ポップアップ」として表示される iframe) に設定したいと考えています。

出来ますか?

4

1 に答える 1

18

webRequestAPIを使用して、ユーザー エージェント ヘッダーを変更できます。
注: 開発者ツールの [ネットワーク] タブには、古いヘッダーが表示されます。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
}

ドキュメンテーション

于 2012-04-26T19:17:12.263 に答える