Не совсем: это зависит от того, как настроен клиент. Давайте использовать IE в качестве основного примера.
Если вы настраиваете IE с явным прокси: например, никакие другие опции не отмечены, прокси установлен на что-то: 8080.
Пользователь вводит адрес
IE проверяет адрес на совпадение строк со списком исключений прокси-сервера IE (т. Е. «Обойти прокси для этих адресов:»)
а. Если он соответствует записи в списке обхода , клиент использует собственный DNS для разрешения имени, а затем клиент подключается напрямую к целевому IP-адресу через порт 80 (предположительно), а затем отправляет запрос следующим образом:
GET /something.htm HTTP/1.1
Host: fulldomainame.example.com
б. Если записи в списке обхода не совпадают , продолжайте:
IE подключается к своему настроенному прокси и отправляет запрос в форме:
GET http://fulldomainname.example.com/something.htm HTTP/1.1
Фактический бонус: это использование полного доменного имени в URL-адресе - это один из способов сказать, что клиент думает, что он говорит с прокси, а не с реальным веб-сервером.
Прокси-сервер разрешает это имя хоста, используя собственный DNS, а затем подключается к целевому сайту (действует как клиент в шаге 2 выше) и т. Д. И т. Д.
При использовании WPAD / PAC:
В случае использования сценария автоматического обнаружения веб-прокси (WPAD) или автоматической настройки прокси (PAC или Autoconfig), например, предоставляемого ISA / TMG при включенной автоматической настройке, он отличается:
Пользователь вводит адрес
Клиент загружает текущий файл wpad.dat / autoproxy.js / .pac из своего настроенного расположения
Клиент ищет функцию « FindProxyForUrl » в файле js и выполняет ее
Сценарий Autoproxy обрабатывает имя хоста и URL . Это файл javascript с ограниченными функциями, но многое еще возможно:
а. это может включать разрешение имен (IsInNet, DnsResolve)
б. это может включать сопоставление строк (ShExpMatch)
с. это может включать в себя подсчет до миллиона (i ++)
д. это может включать в себя всплывающие сообщения Narky оповещения, если администратор придурок
- (или просто смешно)
- ((или отладка))
Функция FindProxyForUrl возвращает хотя бы одну строку : упорядоченный список лучших прокси-серверов для использования (через точку с запятой)
а. либо «DIRECT» , в этом случае клиенту необходимо разрешить само имя и подключиться напрямую, как в случае обхода выше
б. или «PROXY proxyname: 8080» или подобное, в этом случае клиент подключается к этому порту на этом прокси, сообщает ему ПОЛУЧИТЬ полный URL , и прокси выполняет разрешение имен .
- В качестве примера : если функция сценария вернула «PROXY yourProxy: 8080; DIRECT», который говорит клиенту подключиться к вашему прокси через TCP-порт 8080, чтобы запросить этот URL, и если это соединение не может быть установлено, попробуйте перейти напрямую.
Обратите внимание, что сбой настройки сеанса TCP не совсем быстрый, так что это вряд ли будет приятным переключением при сбое для пользователя, но ничего не сравнится. Может быть.
Иногда бывают сбои, тонкости и необъяснимое поведение, но по большей части, когда вещи не ломаются странными и интересными способами, выше, как я видел, это работает на протяжении многих лет. Новые браузеры оптимизируют поведение, распараллеливают вещи и постоянно пробуют интересные вещи, поэтому ознакомьтесь с последними документами для вашего браузера, чтобы понять мелкие детали.
WinSock Proxy / ISA Firewall Client / TMG Client :
Если вы заинтересованы в Winsock Proxy Client (от TMG / ISA Server), это другая история, с большей гибкостью и подвижностью деталей. Здесь слишком много информации, но есть документы, которые описывают, как это работает. Вкратце: он подключается к Windows Sockets и может перехватывать как трафик на основе TCP / UDP, так и запросы разрешения имен для каждого приложения и для каждого пользователя. Очень мощный, но также устарел и не обновлялся в течение нескольких лет.
Клиенты могут быть действительно Clingy:
И последнее замечание : как только HTTP-клиент решил обратиться к прокси-серверу для данного сайта / URL-адреса, прокси-сервер не может сказать ему об этом .
Нет никакого HTTP-кода состояния или заголовка для «Я не обслуживаю вас, вы должны просто перейти непосредственно к нему» ...
Как только клиент решает, что конкретный URL-адрес обслуживается через прокси-сервер, наступает захват прокси-смерти .
Единственный способ избежать этого - получить логику выбора прямо перед тем, как клиент установит соединение, в списке PAC или Bypass.
Последнее замечание о зонах и файлах PAC
IE рассматривает сайты, которые имеют прямое подключение - даже если они имеют точки в URL - как часть зоны локальной интрасети (по умолчанию - устанавливается в свойствах зоны), и поэтому делает такие вещи, как разрешить встроенную проверку подлинности Windows для этих сайтов (т.е. Kerberos и / или NTLM-аутентификация (прозрачно). Таким образом, управление тем, находится ли что-то в зоне локальной интрасети, определяет, насколько доверенным оно является с точки зрения автоматической аутентификации. Опять же, по крайней мере, по умолчанию.