Где в 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. Возможно, это то, что вы должны использовать вместо этого?

Другие вопросы по тегам