Задать вопрос
@patsanchique

Как реализовать https прокси с авторизацией в своем расширении хрома?

Появилась необходимость в расширении - переключателе https проксей с авторизацией по определенному тригеру, собственно вопрос: как прикрутить эти самые прокси? Буду благодарен за любую информацию по данному вопросу.
  • Вопрос задан
  • 847 просмотров
Подписаться 3 Простой Комментировать
Решения вопроса 1
zkrvndm
@zkrvndm
Архитектор решений
В фоновом процессе расширения background.js прописываете:
Развернуть
// Записываем параметры прокси в глобальную переменную:

window.proxy_auth = {
	'address': 'Адрес_прокси:Порт_прокси',
	'proxy_user': 'Логин от прокси',
	'proxy_password': 'Пароль от прокси'
};

// Устсновка прокси через назначение PAC-скрипта:

chrome.proxy.settings.set(
	{
		value: {
			mode: 'pac_script',
			pacScript: {
				data: 'function FindProxyForURL(url, host) { return "PROXY '+proxy_auth.addres+'"; }'
			}
		},
		scope: 'regular'
	},
	function() {
		console.log('Прокси '+proxy_auth.addres+' установлен');
	}
);

// Автоматическая авторизация для установленного прокси:

chrome.webRequest.onAuthRequired.addListener(
	function(info, callback) {
		if (info.isProxy && typeof window.proxy_auth !== 'undefined') {
			callback({
				authCredentials: {
					username: window.proxy_auth.proxy_user,
					password: window.proxy_auth.proxy_password
				}
			});
		}
		else {
			callback();
		}
	},
	{ urls: [ '<all_urls>' ] },
	[ 'asyncBlocking' ]
);

В манифесте расширения у вас должны быть прописаны разрешения:
Развернуть
{
	
	"name" : "Имя расширения",
	
	"manifest_version" : 2,
		
	"permissions" : [ "proxy", "webRequest", "webRequestBlocking", "<all_urls>" ],
	
	"background" : { "persistent": true, "scripts": [ "background.js" ] }

}


P. S. Сбросить ранее установленный прокси можно установив пустой PAC-скрипт, примерно так:
Развернуть
chrome.proxy.settings.set(
	{
		value: {
			mode: 'pac_script',
			pacScript: {
				data: 'function FindProxyForURL(url, host) { return "DIRECT"; }'
			}
		},
		scope: 'regular'
	},
	function() {
		console.log('Прокси сброшены');
	}
);
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
Rsa97
@Rsa97
Для правильного вопроса надо знать половину ответа
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы