Jump to content

Автонастройка прокси

Файл автоматической настройки прокси-сервера ( PAC ) определяет, как веб-браузеры и другие пользовательские агенты могут автоматически выбирать соответствующий прокси-сервер (метод доступа) для получения заданного URL-адреса .

Файл PAC содержит JavaScript. функцию FindProxyForURL(url, host). Эта функция возвращает строку с одной или несколькими спецификациями метода доступа. Эти спецификации заставляют пользовательский агент использовать определенный прокси-сервер или подключаться напрямую. [1]

Множественные спецификации обеспечивают запасной вариант, когда прокси-сервер не отвечает. Браузер извлекает этот PAC-файл перед запросом других URL-адресов. URL-адрес файла PAC либо настраивается вручную, либо определяется автоматически протоколом автоматического обнаружения веб-прокси.

Контекст

[ редактировать ]

Современные веб-браузеры реализуют несколько уровней автоматизации; пользователи могут выбрать уровень, соответствующий их потребностям. Обычно применяются следующие методы:

  • Автоматический выбор прокси: укажите имя хоста и номер порта, которые будут использоваться для всех URL-адресов. Большинство браузеров позволяют указать список доменов (например, localhost), который будет обходить этот прокси.
  • Автоматическая настройка прокси-сервера (PAC). Укажите URL-адрес для файла PAC с помощью функции JavaScript, которая определяет подходящий прокси-сервер для каждого URL-адреса. Этот метод больше подходит для пользователей ноутбуков, которым требуется несколько различных конфигураций прокси-серверов или сложные корпоративные настройки с множеством разных прокси-серверов.
  • Протокол автоматического обнаружения веб-прокси (WPAD). Позвольте браузеру угадать местоположение файла PAC с помощью поиска DHCP и DNS .

Формат файла автоматической настройки прокси-сервера был первоначально разработан Netscape в 1996 году для Netscape Navigator 2.0. [2] и представляет собой текстовый файл , определяющий хотя бы одну функцию JavaScript.

По соглашению файл PAC обычно называется proxy.pac. Стандарт WPAD использует wpad.dat. .pac Ожидается, что файл будет содержать хотя бы одну функцию:

FindProxyForURL(url, host), с двумя аргументами и возвращаемым значением в определенном формате:
* url это URL-адрес объекта
* host — это имя хоста, полученное из этого URL-адреса. Синтаксически это та же строка, что и между :// и первый : или / после этого. [3]
* return "..." представляет собой строку подписей в следующем формате (см. примеры ниже): [примечание 1]
  returnValue  =   тип хоста  ,  ":"  ,  порт  ,[{   ";"  ,  returnValue  }];    тип  =   "ПРЯМОЙ"   |   "ПРОКСИ"   |   "НОСКИ"   |   «HTTP»   |   «HTTPS»   |   "НОСКИ4"   |   «SOCKS5»    Хост  =   UTF16String  (* ECMA262-совместимая строка UTF16 *)    порт  =   UTF16String  (* Цифры *) 


Для его использования PAC-файл публикуется на HTTP-сервере , и клиентские пользовательские агенты получают указание использовать его либо путем ввода URL-адреса в настройках прокси-соединения браузера, либо с помощью протокола WPAD. URL-адрес также может ссылаться на локальный файл, например: file:///etc/proxy.pac.

Несмотря на то, что большинство клиентов будут обрабатывать сценарий независимо от типа MIME , возвращаемого в ответе HTTP , для полноты и максимальной совместимости HTTP-сервер должен быть настроен так, чтобы объявлять тип MIME этого файла: application/x-ns-proxy-autoconfig или application/x-javascript-config.

Существует мало доказательств в пользу использования одного типа MIME перед другим. Однако было бы разумно предположить, что application/x-ns-proxy-autoconfig будет поддерживаться больше клиентов, чем application/x-javascript-config как это было определено в исходной спецификации Netscape, последний тип стал использоваться совсем недавно.

Очень простой пример файла PAC:

функция   FindProxyForURL  (  url  ,   хост  )   {    return   'PROXY proxy.example.com:8080; ПРЯМОЙ'  ;  } 

Эта функция указывает браузеру получать все страницы через прокси-сервер через порт 8080 сервера. proxy.example.com. Если этот прокси-сервер не отвечает, браузер связывается с веб-сайтом напрямую, без использования прокси-сервера. Последнее может дать сбой, если межсетевые экраны или другие промежуточные сетевые устройства отклоняют запросы от источников, отличных от прокси-сервера (обычная конфигурация в корпоративных сетях).

Более сложный пример демонстрирует некоторые доступные функции JavaScript, которые можно использовать в FindProxyForURL функция:

function   FindProxyForURL  (  url  ,   host  )   {    // нашим локальным URL-адресам из доменов ниже example.com не нужен прокси:    if   (  shExpMatch  (  host  ,   '*.example.com'  ))   {      return   'DIRECT'  ;    }    // Доступ к URL-адресам внутри этой сети осуществляется через    // порт 8080 на fastproxy.example.com:    if   (  isInNet  (  host  ,   '10.0.0.0'  ,   '255.255.248.0'  ))   {      return   'PROXY fastproxy.example.com: 8080'  ;    }    // Все остальные запросы проходят через порт 8080 proxy.example.com.    // если он не отвечает, перейдите непосредственно в WWW:    return   'PROXY proxy.example.com:8080; ПРЯМОЙ'  ;  } 

По умолчанию ключевое слово PROXY означает, что используется прокси, соответствующий протоколу исходного запроса, будь то http, https или ftp. Другие поддерживаемые типы ключевых слов и прокси включают:

НОСКИ
Используйте SOCKS- прокси.
HTTP, HTTPS
Представлено в более поздних версиях Firefox. Указывает прокси-сервер HTTP(S).
НОСКИ4, НОСКИ5
Представлено в более поздних версиях Firefox. Указывает версию протокола SOCKS.

Ограничения

[ редактировать ]

Кодировка символов PAC

[ редактировать ]

Кодировка сценариев PAC обычно не определена, и разные браузеры и сетевые стеки имеют разные правила кодирования сценариев PAC. В общем, полностью ASCII- скрипты PAC будут работать с любым браузером или сетевым стеком. Mozilla Firefox 66 и более поздних версий дополнительно поддерживает сценарии PAC в кодировке UTF-8 . [4]

Функция dnsResolve (и подобные другие функции) выполняет поиск DNS , который может заблокировать браузер на долгое время, если DNS-сервер не отвечает.

The myIpAddress Часто сообщается, что функция дает неправильные или непригодные для использования результаты, например 127.0.0.1, IP-адрес локального хоста. [5] Это может помочь удалить файл хоста системы (например, /etc/hosts в Linux) любые строки, относящиеся к имени хоста машины, а строка 127.0.0.1 localhost можно и нужно остаться. [ нужна ссылка ]

Безопасность

[ редактировать ]

В 2013 году исследователи начали предупреждать об угрозах безопасности, связанных с автоматической настройкой прокси. [6] Угроза заключается в использовании PAC, автоматически обнаруженного системой, для перенаправления трафика браузера жертвы на сервер, контролируемый злоумышленником.

Другая проблема с pac-файлом заключается в том, что типичная реализация включает получение открытого HTTP-текста, который не включает в себя какие-либо функции безопасности, такие как подписывание кода или веб-сертификаты. Злоумышленники могут легко выполнить атаку «человек посередине» .

Старые проблемы Microsoft

[ редактировать ]

Кэширование результатов автоматической настройки прокси-сервера по имени домена в Microsoft Internet Explorer 5.5 или новее ограничивает гибкость стандарта PAC. Фактически вы можете выбрать прокси-сервер на основе имени домена, а не пути URL-адреса. Как вариант, нужно отключить кэширование результатов автонастройки прокси, отредактировав реестр . [7]

Рекомендуется всегда использовать IP-адреса вместо доменных имен хостов в isInNet функция для совместимости с другими компонентами Windows, которые используют конфигурацию PAC Internet Explorer, например .NET 2.0 Framework . Например,

if   (  isInNet  (  host  ,   dnsResolve  (  sampledomain  ),   '255.255.248.0'  ))   {}   // .NET 2.0 правильно разрешит прокси  if   (  isInNet  (  host  ,   sampledomain  ,   '255.255.248.0'  ))   {}   // .NET 2.0 не будет правильно разрешать прокси 

Текущее соглашение заключается в переключении на прямое соединение, когда файл PAC недоступен.

Вскоре после переключения между конфигурациями сети (например, при входе в VPN или выходе из нее) dnsResolve может давать устаревшие результаты из-за кэширования DNS.

Например, Firefox обычно хранит 20 записей домена в кэше в течение 60 секунд. Это можно настроить через network.dnsCacheEntries и network.dnsCacheExpiration переменные конфигурации. Также может помочь очистка системного кэша DNS , чего можно добиться, например, в Linux с помощью sudo service dns-clean start или в Windows с помощью ipconfig /flushdns.

В Internet Explorer 9 isInNet('localHostName', 'second.ip', '255.255.255.255') возвращает true и может быть использован в качестве обходного пути.

The myIpAddress предполагает, что устройство имеет один IPv4-адрес. Результаты не определены, если устройство имеет более одного адреса IPv4 или имеет адреса IPv6.

Дальнейшие ограничения связаны с движком JavaScript на локальном компьютере.

Расширенная функциональность

[ редактировать ]

Более продвинутые PAC-файлы могут снизить нагрузку на прокси, выполнить балансировку нагрузки, аварийное переключение или даже внесение в черный / белый список перед отправкой запроса через сеть.Можно вернуть несколько прокси:

вернуть   'ПРОКСИ proxy1.example.com:80; ПРОКСИ proxy2.example.com:8080'  ; 

Вышеуказанное сначала пробует прокси1, а если он недоступен, затем пробует прокси2.

Примечания

[ редактировать ]
  1. ^ EBNF по W3C обозначениям
  1. ^ «Файл автоматической настройки прокси (PAC) — HTTP | MDN» . http://developer.mozilla.org . 23 апреля 2023 г. Проверено 2 июля 2023 г.
  2. ^ «Формат файла автоматической настройки прокси-сервера Navigator» . Документация Netscape Navigator . Март 1996 г. Архивировано из оригинала 2 июня 2007 г. Проверено 5 июля 2013 г.
  3. ^ «Файл автоматической настройки прокси (PAC) — HTTP | MDN» . 23 апреля 2023 г.
  4. ^ «Ошибка 1492938 — сценарии автоконфигурации прокси-сервера должны загружаться как UTF-8, если они действительны UTF-8, в противном случае — как Latin-1 (байт — это кодовая точка)» . Проверено 10 апреля 2019 г.
  5. ^ «Ошибка 347307. Нужен способ определить лучший локальный IP-адрес для использования файлов PAC» . Проверено 18 апреля 2022 г.
  6. ^ Лемос, Роберт (06 марта 2013 г.). «Киберпреступники, вероятно, расширят использование браузерных прокси» . Проверено 20 апреля 2016 г.
  7. ^ «Microsoft KB 271361 — Как отключить автоматическое кэширование прокси-сервера в Internet Explorer» . Проверено 27 июня 2024 г.
[ редактировать ]


Arc.Ask3.Ru: конец переведенного документа.
Arc.Ask3.Ru
Номер скриншота №: 19205bb8d68e119723c405cc2b8c7291__1719507360
URL1:https://arc.ask3.ru/arc/aa/19/91/19205bb8d68e119723c405cc2b8c7291.html
Заголовок, (Title) документа по адресу, URL1:
Proxy auto-config - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть. Любые претензии, иски не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, вы не можете использовать данный сайт и информация размещенную на нем (сайте/странице), немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, Денежную единицу (имеющую самостоятельную стоимость) можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)