Автоматическое определение прокси: How to.

Zevs

Member
Joined
Oct 2, 2005
Messages
220
Reaction score
77
Age
21
[size=+2][highlight]Автоматическое определение прокси. (proxy auto-discovery, proxy auto-config)[/highlight][/size]

[highlight]Общее[/highlight]
Должен быть локальный www сервер.

[highlight]DHCP-способ[/highlight]
Добавляем в параметры области или сервака параметр с кодом 252.
В винде для этого сначала в остнастке DHCP кликаем на сервер, в меню "Действие" выбираем "Установить предопределенные параметры...", выбираем класс "Параметры Microsoft Windows 2000" и жмем кнопку "Добавить". Прописываем код 252, тип - строка, обзываем его как-нибудь (типа "Адрес скрипта auto-proxy") и задаем какое-нибудь описание.
Затем в параметрах области или сервера задаем значение этого параметра - URL скрипта ("http://www.domain.local/autoproxy.js"). Естественно, этот скрипт должен там быть. :) По поводу его содержания - ниже.

[highlight]DNS-способ[/highlight]
Для www.domain.local делаем в DNS алиас с именем "wpad". В корне этого www должен находиться текстовичок "wpad.dat", содержащий тот же скрипт "autoproxy.js", или можно сделать редирект куда надо.

[highlight]autoproxy.js[/highlight]
Этот скрипт должен содержать одну функцию "FindProxyForURL", внутри которой можно использовать ряд других (isPlainHostName, dnsDomainIs, localHostOrDomainIs, isResolvable, isInNet, shExpMatch, substring, dnsResolve, myIpAddress, dnsDomainLevels, weekdayRange, ...). Приведу простой пример.

Code:
function FindProxyForURL(url, host) {
if (isPlainHostName(host) ||
  dnsDomainIs(host, "domain.local") || // Локальные адреса
  dnsDomainIs(host, "domain1.local") ||
  isInNet(host, "192.168.1.0", "255.255.255.0") || // Локальные подсети
  isInNet(host, "192.168.2.0", "255.255.255.0"))
  {
    return "DIRECT"; // Напрямую
  }
else // Иначе - через проксю
  {
    return "PROXY proxy.domain.local:8080; DIRECT";
  }
}

[highlight]!!![/highlight]
Есть возможность при наличии нескольких проксей распараллелить запросы клиента. Смотрим _http://naragw.sharp.co.jp/sps/. Или поиск в гугле "proxy auto hash" (Вводить без кавычек :)).

[highlight]Клиенты[/highlight]
Не знаю про все браузеры, но эта фича по-моему полностью работает только в IE. Для Оперы, например, URL скрипта надо в настройках явно прописывать.

[highlight]P.S.[/highlight]
Судя по логу моего сервака у большинства клиентов используется не DHCP а DNS-способ, хотя почти у всех DHCP включен (только пару человек вручную прописывают на своих кампах TCP/IP-адрес). ХЗ эту винду и IE.
 

sw2

New member
Joined
Nov 15, 2004
Messages
2
Reaction score
1
Age
49
Может кому пригодится -

У меня IIS упорно оказывался отдавать клиентам wpad.dat. Раследование показало - что надо в настройках сервера прописать mime.types для .dat файлов: application/x-ns-proxy-autoconfig dat

После чего всё заработало.

В DHCP способе можно указывать тот же файлик что и в DNS способе - wpad.dat т.е. _http://doman.local/wpad.dat
 
Top