MyTetra Share
Делитесь знаниями!
Загрузка списка прокси-серверов с проверкой на доступность
Время создания: 31.07.2019 22:37
Текстовые метки: vba, Скачивание файлов, прокси
Раздел: Разные закладки - VBA
Запись: xintrea/mytetra_db_adgaver_new/master/base/1514720009rl8rn7a7mm/text.html на raw.githubusercontent.com

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



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