Этот вызов VBA выглядит так, будто выбирает прокси, сохранённый в proxyServer:

http.setProxy 1, proxyServer, bypassList

В MSXML ServerXMLHTTP первый аргумент выбирает режим прокси. Документированные значения: 0 для конфигурации по умолчанию, 1 для прямого подключения и 2 для явно заданного прокси. Передача адреса после 1 не превращает прямой режим в режим ручного прокси.

Минимальный пример ручного прокси:

Dim http As Object
Set http = CreateObject("MSXML2.ServerXMLHTTP.6.0")
http.setProxy 2, "proxy.example:8080", "<local>"
http.Open "GET", "https://example.com/", False
http.send

Конечная точка в примере — заполнитель. Для проверки публичного прокси замените её HTTP-адресом из списка HTTP-прокси. Третий аргумент — список обхода; здесь <local> использует документированное исключение для локального имени. Это не второй прокси, который пробуют, если первый не сработал. Поэтому указание там IP и порта другого прокси выражает неверный тип настройки.

Используйте именованные константы там, где ваши ссылки VBA их предоставляют, или определяйте нужную константу локально при позднем связывании, чтобы режим был виден при проверке.

Также учитывайте тип объекта. ServerXMLHTTP, ориентированный на браузер XMLHTTP и WinHttpRequest — разные интерфейсы COM. Работающий пример для одного не доказывает источник конфигурации другого. После того как правильный объект выберет режим ручного прокси, исследуйте любую оставшуюся ошибку подключения, аутентификации или TLS на этом маршруте.

Похожие статьи