Тестирование автоматической настройки прокси FindProxyForURL() через консоль Javascript
Можно ли протестировать сценарий автоматической настройки прокси (PAC), выполнив вручную функцию FindProxyForURL(url, host) из консоли браузера браузера?
Можно ли получить доступ к внутренней реализации функций PAC (таких как dnsDomainIs, shExpMatch, isInNet) из консоли?
Или же эти функции могут быть реализованы в стандартном JavaScript, чтобы позволить функции FindProxyForURL выполняться вручную?
Единственный способ найти отладочный скрипт proxy.pac в браузере - это добавить операторы alert () и позволить браузеру выполнить его внутри. Возможность добавления точек останова и ручного пошагового выполнения функции FindProxyForURL упростит его отладку.
Существует много внешних инструментов для тестирования PAC-скриптов, таких как pacparser (который использует Spidermonkey) и autoprox (который использует реализацию Microsoft)
Аналогичные вопросы были заданы:
Как обнаружить де-прокси, используемый в пакете
Как получить журнал доступа PAC(прокси-автоконфигурация)
Отладка javascript с автопрокси (PAC) с помощью alert()?
Где в Windows находится файл Javascript, который содержит функции для выполнения файлов PAC?
1 ответ
Некоторые функции PAC были реализованы pactester и доступны в pac_utils.js: https://github.com/manugarg/pactester/blob/master/pac_utils.js
Однако в нем отсутствуют функции dnsResolve и myIpAddress, как отмечено в файле readme:
Файлы PAC используют определенные функции JavaScript. Эти функции были определены в файле pac_utils.js, включенном в этот инструмент (этот файл был создан с использованием другого файла из исходного кода Mozilla). Кроме того, поскольку JavaScript не имеет возможности разрешения DNS, которая требуется для функций "dnsResolve" и "myIpAddress" в файлах PAC, эти функции были определены в perl и затем экспортированы в контекст JavaScript.
Существуют реализации этих функций с использованием веб-сервисов, но они не будут работать с локальными адресами без запуска вашего собственного сервера:
dnsResolve:
Могу ли я выполнить поиск DNS (имя хоста по IP-адресу) с использованием клиентского Javascript?
Выполните поиск DNS, чтобы преобразовать имя хоста в IP-адрес с помощью JavaScript.
myIpAddress:
Как получить IP-адрес клиента, используя только javascript?
Я не знаю, возможно ли заставить какие-либо браузеры предоставлять доступ для ручного выполнения сценариев в среде изолированной программной среды PAC, в которой размещена собственная реализация этих функций.
Файлы PAC запускаются в изолированной программной среде браузера, поэтому не имеют доступа ко всему языку программирования JavaScript. Вместо этого функциональность файла PAC реализована в браузере с набором настраиваемых функций sanboxed.