Загрузка списка прокси-серверов с проверкой на доступность

Макрос загружает список прокси серверов с сайта free-proxy-list.info
При поиске адресов прокси серверов на странице сайта используются регулярные выражения.

Каждый найденный Proxy Server проверяется на доступность (для последующего использования в других макросах)
Функция проверки доступности прокси-сервера есть в этой статье: http://excelvba.ru/code/ProxyServer

Sub ПримерПроверкиСпискаПроксиСерверовНаДоступность()
    Dim ProxyServers As Collection
    Set ProxyServers = ProxyServersList    ' запрашиваем список прокси серверов
    Debug.Print "Найдено прокси-серверов: " & ProxyServers.Count
 
    ' перебираем все прокси-серверы, проверяя их на доступность
    ' (время отклика менее 2 секунд)
    For Each ProxyServer In ProxyServers
        If CheckProxyServer(ProxyServer) Then
            Debug.Print "Прокси сервер с адресом " & ProxyServer & " доступен!"
        Else
            Debug.Print "Прокси сервер с адресом " & ProxyServer & " недоступен!"
        End If
    Next
End Sub

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

Function ProxyServersList() As Collection
    ' возвращает колекцию адресов прокси-серверов (c номерами портов)
    ' (каждый адрес в формате XXX.XXX.XXX.XXX:YYYY)

    'On Error Resume Next: Err.Clear:
    Set ProxyServersList = New Collection
    URL$ = "http://www.free-proxy-list.info/free-proxy-list/anon-elite-proxy.php"
    With CreateObject("MSXML2.ServerXMLHTTP.6.0")
        .Open "GET", URL$, False: .setTimeouts 2000, 2000, 2000, 2000:
        .send (""): DoEvents: txt$ = .responseText    ' запрашиваем список прокси

        ' обрабатывать результаты запроса будем с использованием регулярных выражений
        Set RegExp = CreateObject("VBScript.RegExp"): RegExp.Global = True
 
        ' шаблон для адреса и порта прокси-сервера (взят с сайта regexlib.com)
        RegExp.Pattern = "(25[0-5]|2[0-4][0-9]|[0-1]{1}[0-9]{2}|[1-9]{1}[0-9]{1}|[1-9])\." & _
                         "(25[0-5]|2[0-4][0-9]|[0-1]{1}[0-9]{2}|[1-9]{1}[0-9]{1}|[1-9]|0)\." & _
                         "(25[0-5]|2[0-4][0-9]|[0-1]{1}[0-9]{2}|[1-9]{1}[0-9]{1}|[1-9]|0)\." & _
                         "(25[0-5]|2[0-4][0-9]|[0-1]{1}[0-9]{2}|[1-9]{1}[0-9]{1}|[0-9]):" & _
                         "(6553[0-5]|655[0-2][0-9]\d|65[0-4](\d){2}|6[0-4](\d){3}|[1-5](\d){4}|[1-9](\d){0,3})"
 
        If Not RegExp.test(txt$) Then Exit Function
        Set Matches = RegExp.Execute(txt$)    ' находим все адреса прокси серверов в тексте txt$
        ' заносим все найденные адреса в коллекцию ProxyServersList
        For i = 0 To Matches.Count - 1: ProxyServersList.Add Matches.Item(i).Value: Next
    End With
End Function

Результаты работы макроса (проверялись только российские прокси серверы):

Найдено прокси-серверов: 6

193.19.82.112:3128 недоступен
Прокси сервер с адресом 212.45.5.172:3128 доступен!
62.117.124.122:443 недоступен
78.36.103.192:8080 недоступен
85.237.46.141:8080 недоступен
91.143.175.49:8080 недоступен

Комментарии

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

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

Боже, какой кошмар! Загружать эту многотонную громадину Excel чтобы всего лишь вытянуть несколько байт данных. Все равно что на Белазе возить тещу на дачу.

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

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

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

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