Uragan66
13-01-2020, 16:48
Добрый день всем!
Есть текстовый файл со ссылками. Необходимо проверить доступность серверов по ним. В ответе достаточно простого StatusCode, поэтому применил, вроде самый быстрый способ проверки, посредством NET класса WebRequest:
$url = 'http://5.28.31.65:4022/udp/232.1.19.6:1235'
$a = ([System.Net.WebRequest]::Create($url)).GetResponse()
$a.StatusCode
Ссылки могут быть на разные типы серверов. Пример ссылок:
http://tviptv.iptv-channel.ru:8000/streaming/clients_live.php?extension=m3u8&username=valerikmosoyan@gmail.com&password=89183640164&stream=17&type=hls&playlist.m3u8
http://mu01.v5iptv.com:8880/BL12MA000587/91417327/2985
http://5.28.31.65:4022/udp/232.1.19.6:1235
http://37.49.181.239:4022/udp/238.1.1.1:1234
http://193.201.98.123:7000/play/a02p
По большинству ссылок, если сервер доступен, ответ будет "ОК"
Но есть некоторые сервера, которые прерывают подключение. К примеру по этой ссылке:
http://heraiptv.vip:25461/QOPuVsib0M/mXi8xlbXG7/3689
сервер отдаёт:
Exception calling "GetResponse" with "0" argument(s): "Удаленный сервер возвратил ошибку: (401) Несанкционированный."
At I:\Проекты\Cecker\Untitled266.ps1:2 char:1
+ $a = ([System.Net.WebRequest]::Create($url)).GetResponse()
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : NotSpecified: (:) [], MethodInvocationException
+ FullyQualifiedErrorId : WebException
Или по такой ссылке:
ttp://2.62.216.214:1234/udp/225.54.203.1:5000
ошибка:
Exception calling "GetResponse" with "0" argument(s): "Сервер нарушил протокол. Section=ResponseStatusLine"
At I:\Проекты\Cecker\Untitled266.ps1:2 char:1
+ $a = ([System.Net.WebRequest]::Create($url)).GetResponse()
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : NotSpecified: (:) [], MethodInvocationException
+ FullyQualifiedErrorId : WebException
Может кто сталкивался с использованием WebRequest в коде Powershell, подскажите, пожалуйста, можно ли добавить к запросу какие параметры, чтобы обойти такие ошибки серверов ?
При использовании командлета Invoke-WebRequest с методом HEAD возникают те же ошибки. Другие методы неприменимы в данном случае, так как по некоторым ссылкам, вместо ответа, идёт скачивание потока.
Есть текстовый файл со ссылками. Необходимо проверить доступность серверов по ним. В ответе достаточно простого StatusCode, поэтому применил, вроде самый быстрый способ проверки, посредством NET класса WebRequest:
$url = 'http://5.28.31.65:4022/udp/232.1.19.6:1235'
$a = ([System.Net.WebRequest]::Create($url)).GetResponse()
$a.StatusCode
Ссылки могут быть на разные типы серверов. Пример ссылок:
http://tviptv.iptv-channel.ru:8000/streaming/clients_live.php?extension=m3u8&username=valerikmosoyan@gmail.com&password=89183640164&stream=17&type=hls&playlist.m3u8
http://mu01.v5iptv.com:8880/BL12MA000587/91417327/2985
http://5.28.31.65:4022/udp/232.1.19.6:1235
http://37.49.181.239:4022/udp/238.1.1.1:1234
http://193.201.98.123:7000/play/a02p
По большинству ссылок, если сервер доступен, ответ будет "ОК"
Но есть некоторые сервера, которые прерывают подключение. К примеру по этой ссылке:
http://heraiptv.vip:25461/QOPuVsib0M/mXi8xlbXG7/3689
сервер отдаёт:
Exception calling "GetResponse" with "0" argument(s): "Удаленный сервер возвратил ошибку: (401) Несанкционированный."
At I:\Проекты\Cecker\Untitled266.ps1:2 char:1
+ $a = ([System.Net.WebRequest]::Create($url)).GetResponse()
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : NotSpecified: (:) [], MethodInvocationException
+ FullyQualifiedErrorId : WebException
Или по такой ссылке:
ttp://2.62.216.214:1234/udp/225.54.203.1:5000
ошибка:
Exception calling "GetResponse" with "0" argument(s): "Сервер нарушил протокол. Section=ResponseStatusLine"
At I:\Проекты\Cecker\Untitled266.ps1:2 char:1
+ $a = ([System.Net.WebRequest]::Create($url)).GetResponse()
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : NotSpecified: (:) [], MethodInvocationException
+ FullyQualifiedErrorId : WebException
Может кто сталкивался с использованием WebRequest в коде Powershell, подскажите, пожалуйста, можно ли добавить к запросу какие параметры, чтобы обойти такие ошибки серверов ?
При использовании командлета Invoke-WebRequest с методом HEAD возникают те же ошибки. Другие методы неприменимы в данном случае, так как по некоторым ссылкам, вместо ответа, идёт скачивание потока.