Настройте расширение настроек Chrome Proxy - PullRequest
0 голосов
/ 03 ноября 2019

Я разрабатываю расширение Chrome для прокси-серверов. Я получаю список серверов (и данных авторизации) через API, после того как я установил IP и PORT в настройки chrome:

connect: function(proxyData, callback) {

    this.setListener(proxyData);
    chrome.proxy.settings.set(
        {
            value: {
                mode: "fixed_servers",
                rules: {
                    singleProxy: {
                        scheme: "http",
                        host: proxyData.ip,
                        port: parseInt(proxyData.port)
                    },
                }
            },
            scope: 'regular'
        },
        function() {
            if (typeof callback === 'function') {
                callback(proxyData);
            }
        }
    );
}

После этого я добавляю слушатель авторизации:

setListener: function(proxyData) {
    let username = proxyData.username,
        password = proxyData.password;
    this.proxyAuthFunction = function(details, callbackFn) {
        console.log(username, password, 'Init proxy auth function');
        callbackFn({authCredentials: { username: username, password: password}});
    };
    if (chrome.webRequest.onAuthRequired.hasListener(this.proxyAuthFunction)) {
        chrome.webRequest.onAuthRequired.removeListener(this.proxyAuthFunction);
    }
    chrome.webRequest.onAuthRequired.addListener(
        this.proxyAuthFunction,
        {urls: ["<all_urls>"]},
        ["asyncBlocking"]
    );
}

Это нене работает, и браузер все равно запрашивает базовую авторизацию.

Но жесткий код работает хорошо, и браузер не запрашивает базовую авторизацию:

setListener: function(proxyData) {
    let username = 'qwerty',
        password = 'qwerty';
    this.proxyAuthFunction = function(details, callbackFn) {
        console.log(username, password, 'Init proxy auth function');
        callbackFn({authCredentials: { username: username, password: password}});
    };
    if (chrome.webRequest.onAuthRequired.hasListener(this.proxyAuthFunction)) {
        chrome.webRequest.onAuthRequired.removeListener(this.proxyAuthFunction);
    }
    chrome.webRequest.onAuthRequired.addListener(
        this.proxyAuthFunction,
        {urls: ["<all_urls>"]},
        ["asyncBlocking"]
    );
}

Кто-нибудь сталкивался с подобной проблемой?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...