Макрос загружает список прокси серверов с сайта 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 чтобы всего лишь вытянуть несколько байт данных. Все равно что на Белазе возить тещу на дачу.
Отправить комментарий