Где в Windows находится файл Javascript, который содержит функции для выполнения файлов PAC?
Proxy Auto Config (PAC) - это традиционный метод, с помощью которого веб-браузеры автоматически настраиваются на использование соответствующего прокси для любого данного сайта. Файлы PAC состоят из единственной функции, реализованной в JavaScript.
Я хотел бы выполнить эту функцию для другой цели: я пытаюсь создать приложение, которое выбирает прокси для использования точно так же, как Microsoft Internet Explorer. Поскольку я не могу просто спросить IE, какой прокси он будет использовать для конкретного сайта, я пытаюсь эмулировать, что IE будет делать, когда выбирает, какой прокси использовать для данного веб-ресурса.
С хостом Windows Scripting легко вызвать функцию JS, но для выполнения файла PAC мне нужно несколько стандартных функций, таких как shExpMatch и isPlainHostName. Они обычно предоставляются браузером. Firefox предоставляет этот файл в виде простого в использовании файла JS - к сожалению, реализация FF, похоже, не полностью совместима с реализацией Microsoft Javascript.
Мне нужно выяснить, где находятся официальные реализации этих функций в Microsoft, чтобы я мог включить их в свою среду сценариев, прежде чем пытаться вызвать функцию.
Есть идеи, где они могут быть?
Спасибо
Обновление 0: я обнаружил документированную функцию Microsoft, которая может делать то, что мне нужно - вопрос в том, как я могу вызвать это из Win32Com в Python 2.4.4?
1 ответ
Я не знаю, где находится фактическая реализация, однако Microsoft предоставила код, который вы можете вызвать, который копирует функциональность в.NET Framework, в пространстве имен System.Net.
Класс называется WebProxyScriptHelper, но, к сожалению, он настроен на внутреннюю видимость, поэтому вы не можете вызывать его напрямую (вы не говорите, какой язык вы используете, так что это может даже не быть опцией). К счастью, Microsoft сделала исходный код доступным в любом случае.
Отредактировано, чтобы добавить:
Существует также функция Windows API WinHttpGetProxyForUrl. Возможно, это то, что вы должны использовать вместо этого?