MyTetra Share
Делитесь знаниями!
Загрузка списка прокси-серверов с проверкой на доступность
16.03.2019
23:43
Текстовые метки: vba,Скачивание файлов,прокси
Раздел: !Закладки - VBA - Разобрать

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

Макрос загружает список прокси серверов с сайта 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 недоступен

  • 72485 просмотров
Так же в этом разделе:
 
MyTetra Share v.0.52
Яндекс индекс цитирования