как использовать прокси в расширении chrome для определенного домена и URL-адреса

#javascript #google-chrome-extension #proxy #extension-methods

#javascript #google-chrome-extension #прокси #расширение-методы

Вопрос:

Как заставить браузеры использовать прокси-сервер для определенных доменов, таких как google.com или facebook.com

Вариант использования, если google.com или facebook.com заблокированы, и я хочу принудительно подключиться к этим сайтам через прокси-соединение, в то время как прямой доступ к Интернету для всего остального.

мой код:

backgroud.js

 function FindProxyForURL(url, host) {

    // use proxy for specific domains
    if (shExpMatch(host, "*.google.com|*.facebook.com"))
        return "PROXY yourproxy:8080";

    // by default use no proxy
    return "DIRECT";
}
 

menifest.json

 {
       "background": {
          "scripts": [ "background.js" ]
       },
      
       
       "description": "This chrome extension use for proxy.",
       
    
     
       "author": "no one",
    
     
       "manifest_version": 2,
       "minimum_chrome_version": "26.0",
       "name": "proxy",
       "permissions": [  "<all_urls>", "webRequest", "webRequestBlocking", "storage", "tabs", "proxy", "cookies", "management", "http://*/*", "https://*/*" ],
       "update_url": "https://clients2.google.com/service/update2/crx",
       "version": "0.10"
    }
 

Ответ №1:

Вам нужно ввести свою FindProxyForURL() функцию в конфигурацию PAC в виде текста, а затем передать ее через chrome.proxy.settings.set() . Так что в вашем случае background.js должно быть:

 function FindProxyForURL(url, host) {
    // use proxy for specific domains
    if (shExpMatch(host, "*google.com|*facebook.com"))
        return "PROXY yourproxy:8080";

    // by default use no proxy
    return "DIRECT";
}

config = {
  mode: "pac_script",
  pacScript: {}
};

config.pacScript.data = FindProxyForURL.toString();

chrome.proxy.settings.set(
  {value: config, scope: "regular"},
  function() {}
);