2014-11-16 6 views
0

В настоящее время я разрабатываю расширение chrome, которое позволяет пользователю установить прокси-сервер, однако моя проблема заключается в том, что прокси-сервер не смог загрузить, chrome возвращает с net::ERR_PROXY_CONNECTION_FAILED в консоли и html-страницу, в которой говорится: «Не удалось для подключения к прокси-серверу ". Я искал способ обнаружить этот отказ подключения, поэтому я могу восстановить соединение либо с другим прокси, либо с обычным ip без прокси. Странная проблема - мой код расширения не запускается на этой странице.chrome extension обнаружить ERR_PROXY_CONNECTION_FAILED

Я пропустил конкретные «соответствия» в «content_scripts» в файле манифеста, специально предназначенном для страниц с ошибками? (хотя URL страницы ошибки является URL-адресом страницы, которую я пытаюсь посетить, и код расширения работает, если есть рабочий прокси-соединение)

Есть ли способ поймать эту ошибку? Любые мысли приветствуются. Заранее спасибо!

Вот как я настроил прокси-сервер. Но в качестве напоминания этот код работает, проблема в том, что если вы попытаетесь подключиться к прокси-серверу, который недоступен, браузер просто выключается, а мой код расширения больше не запускается со страницей.

var config = { 
     mode: "fixed_servers", 
     rules: { 
      singleProxy: { 
       scheme: "http", 
       host: request.ip 
      } 
     } 
    }; 
    chrome.proxy.settings.set({ 
     value: config, 
     scope: 'regular' 
    }, function() {}); 

Мой манифест код (который работает, как это должно до прокси не удается)

"content_scripts": [ { 
"js": [ "jquery-1.11.1.min.js", "myscript.js" ], 
"matches": ["https://*/*","http://*/*","http://*/"], 
"run_at": "document_end" 
}, 

И картинка страницы ошибки хромированными возвращается, когда прокси-сервер не доступен: enter image description here

+0

Вы должны указать код и указать, какой прокси-сервер вы используете. С отсутствием деталей в текущем вопросе трудно сказать, что случилось. –

+0

Хорошо, я добавлю какой-то код, но мой вопрос скорее о том, как я могу сделать это не то, что я делаю неправильно. – Osman

ответ

1

Если вы хотите поддерживать несколько прокси-серверов, просто используйте PAC script и укажите резервную копию, как в следующем примере (при невозможности подключения к proxy1:80, проверяется proxy2:8080, и если это не удается , то Chrome попытается установить прямое соединение из-за "DIRECT").

var config = { 
    mode: 'pac_script', 
    pacScript: { 
     data: 'function FindProxyForURL(url, host) {\n' + 
       ' if (url.substring(0, 5) == "http:")\n' + 
       '  return "PROXY proxy1:80; PROXY proxy2:8080; DIRECT";\n' + 
       ' return "DIRECT";\n' + 
       '}' 
    } 
}; 
chrome.proxy.settings.set({ 
    value: config, 
    scope: 'regular' 
}, function() { 
}); 
Смежные вопросы