C# код проверки прокси

ink

Client
Joined
Dec 24, 2013
Messages
19
Reaction score
0
Points
1
Всем привет. Иногда случается так, что прокся дохнет во время проекта, для того что бы это отловить использовал это код. С выходом 5.4.3.0 этот код перестал работать, всё время выдаёт ProxyOFF. Что случилось? Помогите починить код.
Code:
var Proxy = project.Variables["proxy"].Value;
var resultHttpGet = ZennoPoster.HttpGet("google.com", Proxy, "UTF-8", ZennoLab.InterfacesLibrary.Enums.Http.ResponceType.HeaderOnly);
if (resultHttpGet.ToString().Length == 0 || (resultHttpGet.ToString().Substring(8,3) == "502")) return "Proxy OFF";
else return "Proxy ON";
 

Gfoblin

Client
Joined
May 30, 2013
Messages
4,613
Reaction score
1,019
Points
113
get запрос а потом проверка наличия 502 не катит?
 

ink

Client
Joined
Dec 24, 2013
Messages
19
Reaction score
0
Points
1
Разложи на пальцах, не понял.
 

Radzhab

Client
Joined
May 23, 2014
Messages
1,500
Reaction score
1,268
Points
113
get запрос а потом проверка наличия 502 не катит?
проверка на 502 уже есть у него
 

rostonix

Известная личность
Joined
Dec 23, 2011
Messages
29,067
Reaction score
5,719
Points
113
Непонятно почему с 8 подстрока берется.
С 9 наверное нужно
 

ink

Client
Joined
Dec 24, 2013
Messages
19
Reaction score
0
Points
1
С 9 то же не работает.(
 

rostonix

Известная личность
Joined
Dec 23, 2011
Messages
29,067
Reaction score
5,719
Points
113
Ну сделайте return resultHttpGet.ToString().Substring(9,3)
Посмотрите что выводится
 

ink

Client
Joined
Dec 24, 2013
Messages
19
Reaction score
0
Points
1
Code:
var Proxy = project.Variables["proxy"].Value;
var resultHttpGet = ZennoPoster.HttpGet("google.com", Proxy, "UTF-8", ZennoLab.InterfacesLibrary.Enums.Http.ResponceType.HeaderOnly);
if (resultHttpGet.ToString().Length == 0 || (resultHttpGet.ToString().Substring(9,3) == "502")) return "Proxy OFF";
else return "Proxy ON";
Proxy OFF выдаёт. Да-же когда прокся жива.
 

Lexicon

Client
Joined
Dec 27, 2012
Messages
1,775
Reaction score
901
Points
113
А вы напишите такой сниппет и посмотрите что ж там блин
Code:
var Proxy = project.Variables["proxy"].Value;
var resultHttpGet = ZennoPoster.HttpGet("google.com", Proxy, "UTF-8", ZennoLab.InterfacesLibrary.Enums.Http.ResponceType.HeaderOnly);
if (resultHttpGet.ToString().Length == 0 || (resultHttpGet.ToString().Substring(9,3) == "502")) return resultHttpGet.ToString().Substring(9,3);
else return "Proxy ON";
 

ink

Client
Joined
Dec 24, 2013
Messages
19
Reaction score
0
Points
1

rostonix

Известная личность
Joined
Dec 23, 2011
Messages
29,067
Reaction score
5,719
Points
113
Code:
var Proxy = project.Variables["proxy"].Value;
var resultHttpGet = ZennoPoster.HttpGet("http://www.google.com", Proxy, "UTF-8", ZennoLab.InterfacesLibrary.Enums.Http.ResponceType.HeaderOnly);
if (resultHttpGet.ToString().Length == 0 || (resultHttpGet.ToString().Substring(8,3) == "502")) return resultHttpGet.ToString().Substring(8,3);
else return "Proxy ON";
Сайт полноценно просто прописал
 

ink

Client
Joined
Dec 24, 2013
Messages
19
Reaction score
0
Points
1

Roman*

Client
Joined
Sep 25, 2013
Messages
1,657
Reaction score
656
Points
113
А подскажите, где этот экшен ставить, у меня просто бывает тоже дохнут на середине и не знаю как с этим бороться(
 

Irbis

Client
Joined
Mar 2, 2014
Messages
195
Reaction score
121
Points
43
А подскажите, где этот экшен ставить, у меня просто бывает тоже дохнут на середине и не знаю как с этим бороться(
Свой код C#
 

Roman*

Client
Joined
Sep 25, 2013
Messages
1,657
Reaction score
656
Points
113
Свой код C#
Я имею ввиду в начале проекта когда берутся прокси или в середину или в конец, просто я не понимаю сам код что там делается ,поэ тому и спрашиваю, что он будет делать после того как проверит например и обнаружит что прокся невалидная, перейдет к екшену взять прокси или автоматом возьмет?
 

Irbis

Client
Joined
Mar 2, 2014
Messages
195
Reaction score
121
Points
43
Если прокси может умереть на любом шаге, то наверное нужно поставить его в блок "Bad End".
Код вернет результат проверки. Если прокси невалидная - код вернет строку с кодом ошибки, в противном случае строку - "Proxy ON".
И в соответствии с результатом можно выстроить логику дальнейшего выполнения шаблона.
Например: Если прокси невалидная - установить новую прокси и продолжить выполнение.
 
  • Thank you
Reactions: Roman*

rostonix

Известная личность
Joined
Dec 23, 2011
Messages
29,067
Reaction score
5,719
Points
113
Только вопрос с какого места продолжать) Bad end он для отработки разовой ошибки, не для зацикливания шаблона для успешного итогового выполнения
 

SilverSun

Client
Joined
Oct 31, 2013
Messages
172
Reaction score
24
Points
18
Подскажите, пожалуйста, этот код проверяет socksЫ ?
 

SilverSun

Client
Joined
Oct 31, 2013
Messages
172
Reaction score
24
Points
18
Code:
var Proxy = project.Variables["proxy"].Value;
var resultHttpGet = ZennoPoster.HttpGet("http://www.google.com", Proxy, "UTF-8", ZennoLab.InterfacesLibrary.Enums.Http.ResponceType.HeaderOnly);
if (resultHttpGet.ToString().Length == 0 || (resultHttpGet.ToString().Substring(8,3) == "502")) return resultHttpGet.ToString().Substring(8,3);
else return "Proxy ON";
Сайт полноценно просто прописал
Каким скриптом проверить SOCKS4 и SOCKS5 ?
 

rostonix

Известная личность
Joined
Dec 23, 2011
Messages
29,067
Reaction score
5,719
Points
113
По идее так же и должно с socks работать
 

SilverSun

Client
Joined
Oct 31, 2013
Messages
172
Reaction score
24
Points
18
По идее так же и должно с socks работать
Беру заведомо рабочие соксы, но скрипт по всем соксам отвечает, что они не работают.
 

rostonix

Известная личность
Joined
Dec 23, 2011
Messages
29,067
Reaction score
5,719
Points
113
Попробуйте так:
socks4://ip:port
 

Melkumyann

Client
Joined
Sep 22, 2011
Messages
3
Reaction score
1
Points
3
Здравствуйте! Я полный ноль в C#, помогите, пожалуйста. Как проверить этим кодом прокси с авторизацией? Я присвоил переменной proxy = login:pass@ip:port и у меня отрабатывается ошибка. Как правильно прописать настройки? Спасибо.

Code:
var Proxy = project.Variables["proxy"].Value;
var resultHttpGet = ZennoPoster.HttpGet("http://www.google.com", Proxy, "UTF-8", ZennoLab.InterfacesLibrary.Enums.Http.ResponceType.HeaderOnly);
if (resultHttpGet.ToString().Length == 0 || (resultHttpGet.ToString().Substring(8,3) == "502")) return resultHttpGet.ToString().Substring(8,3);
else return "Proxy ON";
 

Roman*

Client
Joined
Sep 25, 2013
Messages
1,657
Reaction score
656
Points
113
Здравствуйте! Я полный ноль в C#, помогите, пожалуйста. Как проверить этим кодом прокси с авторизацией? Я присвоил переменной proxy = login:pass@ip:port и у меня отрабатывается ошибка. Как правильно прописать настройки? Спасибо.

Code:
var Proxy = project.Variables["proxy"].Value;
var resultHttpGet = ZennoPoster.HttpGet("http://www.google.com", Proxy, "UTF-8", ZennoLab.InterfacesLibrary.Enums.Http.ResponceType.HeaderOnly);
if (resultHttpGet.ToString().Length == 0 || (resultHttpGet.ToString().Substring(8,3) == "502")) return resultHttpGet.ToString().Substring(8,3);
else return "Proxy ON";
Еще же бывает 402, 407 и 404 ошибки, на них нужно бы тоже делать проверку. И то, мне кажется, что может страницы еще не полностью загрузиться, а екшен следующий уже начнет выполнять далее.
 

Vladimir-AWM

Client
Joined
Aug 26, 2014
Messages
117
Reaction score
7
Points
18
Code:
//регулярка
string regex = @"200 OK";
//парсим
var reg = new System.Text.RegularExpressions.Regex(regex, System.Text.RegularExpressions.RegexOptions.None);

        var resultHttpGet = ZennoPoster.HttpGet("http://www.google.com", "Проверяемый прокси", "UTF-8", ZennoLab.InterfacesLibrary.Enums.Http.ResponceType.HeaderOnly, 5000);
        var list = reg.Matches(resultHttpGet).Cast<Match>().OrderBy(a => Guid.NewGuid()).ToList();

        if(list.Count > 0)
        {
            //"GOOD"
        }
        else
        {
            // "BAD"
        }
Может кому понадобится, лучше использовать Post не все прокси его потдерживают
 
  • Thank you
Reactions: CSS

ssXXXss

Client
Joined
Dec 23, 2014
Messages
7,375
Reaction score
2,042
Points
113
иногда может придти пустой ответ, но это не означает что прокси умер, поэтому он его выкинет в этом коде
 

Vladimir-AWM

Client
Joined
Aug 26, 2014
Messages
117
Reaction score
7
Points
18
иногда может придти пустой ответ, но это не означает что прокси умер, поэтому он его выкинет в этом коде
Тесть заголовка нет от страницы гугл. Это уже настараживает
 

ssXXXss

Client
Joined
Dec 23, 2014
Messages
7,375
Reaction score
2,042
Points
113
Тесть заголовка нет от страницы гугл. Это уже настараживает
это понятно что гугл вроде всегда в норме ну а вдруг инет упадёт, или гугл на час ревизию решил сделать а тебя в это время нет дома, и в течение часа все прокси улетят в трубу, у самого гугл на проверке стоит но немного по другому
 

ssXXXss

Client
Joined
Dec 23, 2014
Messages
7,375
Reaction score
2,042
Points
113
У меня вот так, только прокси сюда приписать, я его на проверку подключения инета делал
C#:
try
    {
        HttpWebRequest reqFP = (HttpWebRequest)HttpWebRequest.Create("http://www.google.com");
        HttpWebResponse rspFP = (HttpWebResponse)reqFP.GetResponse();
        if (HttpStatusCode.OK == rspFP.StatusCode)
        {
            // HTTP = 200 - Интернет безусловно есть!
            rspFP.Close();
        }
        else
        {
            project.SendInfoToLog("", "Сервер вернул отрицательный ответ, возможно что нет инета или проверьте подключение прокси", true);
            rspFP.Close();
            return null; // выход по красной или повторную проверку можно сделать
        }
    }catch (WebException){
        project.SendInfoToLog("", "Ошибка!!! Интернета у нас нет. Плачем :(", true);
        return null;
    }
 

ezotonal

Client
Joined
Jan 13, 2014
Messages
821
Reaction score
232
Points
43
У меня вот так, только прокси сюда приписать, я его на проверку подключения инета делал
C#:
try
    {
        HttpWebRequest reqFP = (HttpWebRequest)HttpWebRequest.Create("http://www.google.com");
        HttpWebResponse rspFP = (HttpWebResponse)reqFP.GetResponse();
        if (HttpStatusCode.OK == rspFP.StatusCode)
        {
            // HTTP = 200 - Интернет безусловно есть!
            rspFP.Close();
        }
        else
        {
            project.SendInfoToLog("", "Сервер вернул отрицательный ответ, возможно что нет инета или проверьте подключение прокси", true);
            rspFP.Close();
            return null; // выход по красной или повторную проверку можно сделать
        }
    }catch (WebException){
        project.SendInfoToLog("", "Ошибка!!! Интернета у нас нет. Плачем :(", true);
        return null;
    }
При использовании данного кода в логе ошибки ...

upload_2016-12-11_12-56-58.png


Как это исправить? Заранее благодарен
 

Users Who Are Viewing This Thread (Total: 1, Members: 0, Guests: 1)