Автоконфигурация прокси - Proxy auto-config
А автоконфигурация прокси (PAC) файл определяет, как веб-браузеры и другие пользовательские агенты может автоматически выбрать подходящий Прокси сервер (метод доступа) для получения заданного URL.
Файл PAC содержит JavaScript функция FindProxyForURL (URL, хост)
. Эта функция возвращает строку с одной или несколькими спецификациями метода доступа. Эти спецификации заставляют пользовательский агент использовать конкретный прокси-сервер или подключаться напрямую.
Множественные спецификации обеспечивают откат, когда прокси не отвечает. Браузер извлекает этот файл PAC перед запросом других URL-адресов. URL-адрес файла PAC либо настраивается вручную, либо определяется автоматически Протокол автоматического обнаружения веб-прокси.
Контекст
Современные веб-браузеры реализуют несколько уровней автоматизации; пользователи могут выбрать уровень, соответствующий их потребностям. Обычно используются следующие методы:
- Автоматический выбор прокси: укажите имя хоста и номер порта, которые будут использоваться для всех URL-адресов. Большинство браузеров позволяют указать список доменов (например,
localhost
), который будет обходить этот прокси. - Автоконфигурация прокси (PAC): укажите URL-адрес для файла PAC с помощью функции JavaScript, которая определяет соответствующий прокси-сервер для каждого URL-адреса. Этот метод больше подходит для пользователей портативных компьютеров, которым требуется несколько различных конфигураций прокси или сложные корпоративные настройки с множеством разных прокси.
- Протокол автоматического обнаружения веб-прокси (WPAD): позвольте браузеру угадать местоположение файла PAC через DHCP и DNS поиски.
Файл PAC
Формат файла автоконфигурации прокси был первоначально разработан Netscape в 1996 году для Netscape Navigator 2.0[1] и является текстовый файл который определяет хотя бы одну функцию JavaScript, FindProxyForURL (URL, хост)
, с двумя аргументами:
url
это URL-адрес объектахозяин
- имя хоста, полученное из этого URL. Синтаксически это та же строка, что и между://
и первый:
или же/
после того.[2]
По соглашению файл PAC обычно называется proxy.pac
. В Стандарт WPAD использует wpad.dat
.
Чтобы использовать его, файл PAC публикуется в HTTP сервер, и клиентские пользовательские агенты получают указание использовать его либо путем ввода URL-адреса в настройках прокси-соединения браузера, либо с помощью протокола WPAD. URL-адрес также может ссылаться на локальный файл, например: файл: ///etc/proxy.pac
.
Хотя большинство клиентов будут обрабатывать сценарий независимо от Тип MIME вернулся в HTTP-ответ, для полноты и максимальной совместимости HTTP-сервер должен быть настроен так, чтобы объявлять MIME-тип этого файла либо приложение / x-ns-proxy-autoconfig
или же приложение / x-javascript-config
.
Существует мало свидетельств в пользу использования одного типа MIME перед другим. Однако было бы разумно предположить, что приложение / x-ns-proxy-autoconfig
будет поддерживаться большим количеством клиентов, чем приложение / x-javascript-config
как это было определено в исходной спецификации Netscape, последний тип вошел в употребление совсем недавно.
Очень простой пример файла PAC:
функция FindProxyForURL(url, хозяин){ возвращаться "PROXY proxy.example.com:8080; DIRECT";}
Эта функция указывает браузеру получить все страницы через прокси на порт 8080 сервера proxy.example.com
. Если этот прокси не отвечает, браузер связывается с веб-сайтом напрямую, без использования прокси. Последний может выйти из строя, если брандмауэры или другие промежуточные сетевые устройства отклоняют запросы от источников, отличных от прокси-сервера - обычная конфигурация в корпоративных сетях.
Более сложный пример демонстрирует некоторые доступные функции JavaScript для использования в функции FindProxyForURL:
функция FindProxyForURL(url, хозяин) { // наши локальные URL из доменов ниже example.com не нуждаются в прокси: если (shExpMatch(хозяин, "* .example.com")) { возвращаться "НЕПОСРЕДСТВЕННЫЙ"; } // URL-адреса в этой сети доступны через // порт 8080 на fastproxy.example.com: если (isInNet(хозяин, "10.0.0.0", "255.255.248.0")) { возвращаться "ПРОКСИ fastproxy.example.com:8080"; } // Все остальные запросы проходят через порт 8080 proxy.example.com. // если он не отвечает, перейдите прямо в WWW: возвращаться "PROXY proxy.example.com:8080; DIRECT";}
По умолчанию ключевое слово PROXY означает, что используется прокси, соответствующий протоколу исходного запроса, будь то http, https или ftp. К другим поддерживаемым типам ключевых слов и прокси относятся:
- НОСКИ
- Использовать НОСКИ прокси.
- HTTP, HTTPS
- Представлен в более поздних версиях Firefox. Задает прокси-сервер HTTP (S).
- НОСКИ4, НОСКИ5
- Представлен в более поздних версиях Firefox. Задает версию протокола SOCKS.
Ограничения
Кодировка символов PAC
Кодирование сценариев PAC обычно не определено, и разные браузеры и сетевые стеки имеют разные правила кодирования сценариев PAC. В общем, полностью ASCII Скрипты PAC будут работать с любым браузером или сетевым стеком. Mozilla Firefox 66 и выше дополнительно поддерживает сценарии PAC, закодированные как UTF-8.[3]
DnsResolve
Функция dnsResolve
(и аналогичные другие функции) выполняет DNS поиск, который может заблокировать браузер на долгое время, если DNS-сервер не отвечает.
myIpAddress
В myIpAddress
часто сообщалось, что функция дает неверные или непригодные для использования результаты, например 192.168.1.128
, IP-адрес локального хоста. Это может помочь удалить файл хоста системы (например, / etc / hosts
в Linux) любые строки, относящиеся к имени хоста компьютера, а строка 192.168.1.1 локальный хост
может и должен остаться.
Безопасность
В 2013 году исследователи начали предупреждать об угрозах безопасности автоконфигурации прокси.[4] Угроза предполагает использование PAC, автоматически обнаруживаемого системой, для перенаправления трафика браузера жертвы на сервер, контролируемый злоумышленником.
Еще одна проблема, связанная с файлом pac, - это типичная реализация, включающая извлечение открытого текста по протоколу HTTP, которое не включает никаких функций безопасности, таких как подпись кода или веб-сертификаты. Злоумышленник может легко выполнить атаку со спуфингом посредника.
Старые проблемы Microsoft
Кеширование результатов автоконфигурации прокси по доменному имени в Microsoft Internet Explorer 5.5 или новее ограничивает гибкость стандарта PAC. Фактически, вы можете выбрать прокси на основе имени домена, но не пути URL-адреса. Как вариант, вам нужно отключить кеширование результатов автоконфигурации прокси, отредактировав реестр, процесс, описанный де Бойном Полларом (перечислен в дальнейшее чтение ).
Рекомендуется всегда использовать IP-адреса вместо доменных имен хоста в isInNet
функция для совместимости с другими компонентами Windows, которые используют конфигурацию Internet Explorer PAC, например .NET 2.0 Framework. Например,
если (isInNet(хозяин, dnsResolve(sampledomain), "255.255.248.0")) // .NET 2.0 правильно разрешит проксиесли (isInNet(хозяин, sampledomain, "255.255.248.0")) // .NET 2.0 не распознает прокси должным образом
Текущее соглашение заключается в переключении на прямое соединение, когда файл PAC недоступен.
Вскоре после переключения между конфигурациями сети (например, при входе в VPN или выходе из нее), dnsResolve
может выдавать устаревшие результаты из-за кеширования DNS.
Например, Firefox обычно хранит в кеше 20 записей домена в течение 60 секунд. Это можно настроить через network.dnsCacheEntries
и network.dnsCacheExpiration
переменные конфигурации. Промывка системы Кеш DNS также может помочь, что может быть достигнуто, например, в Linux с служба sudo dns-clean start или в Windows с ipconfig / flushdns.
В Internet Explorer 9 isInNet ("localHostName", "second.ip", "255.255.255.255")
возвращается истинный
и может использоваться как обходной путь.
В myIpAddress
функция предполагает, что устройство имеет единственный адрес IPv4. Результаты не определены, если устройство имеет более одного адреса IPv4 или имеет адреса IPv6.
Другие
Дополнительные ограничения связаны с Движок JavaScript на локальной машине.
Расширенная функциональность
Более продвинутые файлы PAC могут снизить нагрузку на прокси-серверы, выполнить балансировку нагрузки, отработку отказа или даже чернить /белый список перед отправкой запроса по сети. Можно вернуть несколько прокси:
возвращаться "PROXY proxy1.example.com:80; PROXY proxy2.example.com:8080";
Рекомендации
- ^ "Формат файла автоматической настройки прокси-сервера Navigator". Документация Netscape Navigator. Март 1996. Архивировано с оригинал на 2007-06-02. Получено 2013-07-05.
- ^ https://developer.mozilla.org/en-US/docs/Web/HTTP/Proxy_servers_and_tunneling/Proxy_Auto-Configuration_(PAC)_file
- ^ «Ошибка 1492938 - сценарии автонастройки прокси должны загружаться как UTF-8, если они действительны в UTF-8, в противном случае как Latin-1 (байт - это кодовая точка)». Получено 2019-04-10.
- ^ Лемос, Роберт (2013-03-06). «Киберпреступники, вероятно, расширят использование браузерных прокси». Получено 2016-04-20.
дальнейшее чтение
де Бойн Поллар, Джонатан (2004). «Автоматическая настройка HTTP-прокси-сервера в веб-браузерах». Часто задаваемые ответы. Получено 2013-07-05.
внешняя ссылка
- "Файл автоматической настройки прокси (PAC)". 2019-01-27.
- «Использование файла автоконфигурации клиента». Руководство администратора прокси-сервера Netscape: Глава 11. 1998-02-25. Архивировано из оригинал на 2004-08-10.
- «Глава 26 - Использование автоматической настройки, автоматического прокси и автоматического обнаружения». Microsoft TechNet. Получено 2013-07-05.
- «Автоконфигурация прокси для Firefox (PAC). Полностью работающие примеры, включая правила фильтрации рекламы и взрослых». 2012-05-12. Архивировано из оригинал на 2015-07-01. Получено 2009-05-24.