Автоконфигурация прокси - 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";

Рекомендации

  1. ^ "Формат файла автоматической настройки прокси-сервера Navigator". Документация Netscape Navigator. Март 1996. Архивировано с оригинал на 2007-06-02. Получено 2013-07-05.
  2. ^ https://developer.mozilla.org/en-US/docs/Web/HTTP/Proxy_servers_and_tunneling/Proxy_Auto-Configuration_(PAC)_file
  3. ^ «Ошибка 1492938 - сценарии автонастройки прокси должны загружаться как UTF-8, если они действительны в UTF-8, в противном случае как Latin-1 (байт - это кодовая точка)». Получено 2019-04-10.
  4. ^ Лемос, Роберт (2013-03-06). «Киберпреступники, вероятно, расширят использование браузерных прокси». Получено 2016-04-20.

дальнейшее чтение

де Бойн Поллар, Джонатан (2004). «Автоматическая настройка HTTP-прокси-сервера в веб-браузерах». Часто задаваемые ответы. Получено 2013-07-05.

внешняя ссылка