Проверка доступности прокси сервера макросом VBA

Этот код проверяет заданного доступность прокси сервера при помощи функции CheckProxyServer:

Sub ПримерПроверкиПроксиСервера()
    myProxy$ = "212.45.5.172:3128"
 
    If CheckProxyServer(myProxy$) Then
        MsgBox "Прокси сервер с адресом " & myProxy$ & " доступен!", vbInformation
    Else
        MsgBox "Прокси сервер с адресом " & myProxy$ & " недоступен!", vbExclamation
    End If
End Sub

Прокси-сервер (Proxy Server) позволяет скрыть ваш IP адрес, что позволяет вам выполнять запросы к одному и тому же серверу как-бы с разных компьютеров.

Это может быть полезно при выполнении многократных запросов к серверам типа Яндекс и Google,
которые блокируют автоматические запросы от программы по истечении некоторого времени.

Загрузить список прокси-серверов вам поможет этот код: http://excelvba.ru/code/ProxyServersList

Код функции CheckProxyServer:

Function CheckProxyServer(ByVal Proxy$) As Boolean
    ' функция проверяет работоспособность прокси сервера Proxy$,
    ' выполняя запрос IP на сайте internet.yandex.ru
    ' Если Яндекс возвращает IP адрес прокси-сервера в течение
    ' непродолжительного времени, считаем данный прокси-сервер рабочим
    ' Функция возвращает TRUE, если прокси сервер рабочий
    On Error Resume Next: Err.Clear
    With CreateObject("MSXML2.ServerXMLHTTP.6.0")
        .setProxy 2, Proxy$
        .Open "GET", "http://internet.yandex.ru/", False
        .setTimeouts 10000, 10000, 10000, 10000
        .send ("")
 
        txt = Split(Split(.responseText, "Мой IP: ")(1), "<")(0)
    End With
    CheckProxyServer = (Proxy$ Like txt & ":*") And (Err = 0)
End Function

Комментарии

Настройки просмотра комментариев

Выберите нужный метод показа комментариев и нажмите "Сохранить установки".

Ой забыл вернуть CreateObject("MSXML2.ServerXMLHTTP.6.0")

Сейчас как-то так:

Sub CheckProxyServer()
Dim proxy As String
'You'll need to Add a reference to Microsoft HTML Object Libarary
Dim html As MSHTML.HTMLDocument

proxy = "185.8.4.105:8080"
On Error Resume Next: Err.Clear
With CreateObject("MSXML2.XMLHttp")
.setProxy 2, proxy
.Open "GET", "http://yandex.ru/internet/", False
.setTimeouts 10000
.send ("")

If .Status = 200 Then
Set html = CreateObject("htmlfile")
html.body.innerHTML = .responseText
Set ipv4 = html.getElementsByClassName("client__item_type_ipv4")
MsgBox (ipv4(0).innerText)
End If

End With
End Sub

Как по мне удобнее в HTML или XML потрошить ответы сервера.

Спасибо! А как изменить код функции, чтобы это работало в современных реалиях? Сейчас эта страницы доступна по адресу https://yandex.ru/internet/, и вместо "Мой IP: ", видимо нужно что-то другое прописать. Только не соображу что именно.

Спасибо большое!
Нужно заменить "<" на vbLf
добавить DoEvents, чтоб остановить можно было.

Отправить комментарий

Содержание этого поля является приватным и не предназначено к показу.
CAPTCHA
Подтвердите, пожалуйста, что вы - человек:
         _____   _   _   _____   __  __   ____  
___ | ____| | | | | | ___| | \/ | | ___|
/ _ \ | _| | |_| | | |_ | |\/| | |___ \
| __/ | |___ | _ | | _| | | | | ___) |
\___| |_____| |_| |_| |_| |_| |_| |____/
Введите код, изображенный в стиле ASCII-арт.

Не получается применить макрос? Не удаётся изменить код под свои нужды?

Оформите заказ у нас на сайте, не забыв прикрепить примеры файлов, и описать, что и как должно работать.