Макрос загружает список прокси серверов с сайта free-proxy-list.info Каждый найденный Proxy Server проверяется на доступность (для последующего использования в других макросах) 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 Результаты работы макроса (проверялись только российские прокси серверы):
|
|||

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