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

ink

Client
Регистрация
24.12.2013
Сообщения
19
Благодарностей
0
Баллы
1
Всем привет. Иногда случается так, что прокся дохнет во время проекта, для того что бы это отловить использовал это код. С выходом 5.4.3.0 этот код перестал работать, всё время выдаёт ProxyOFF. Что случилось? Помогите починить код.
Код:
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
Регистрация
30.05.2013
Сообщения
4 591
Благодарностей
1 014
Баллы
113
get запрос а потом проверка наличия 502 не катит?
 

ink

Client
Регистрация
24.12.2013
Сообщения
19
Благодарностей
0
Баллы
1
Разложи на пальцах, не понял.
 

Radzhab

Client
Регистрация
23.05.2014
Сообщения
1 500
Благодарностей
1 268
Баллы
113

rostonix

Известная личность
Регистрация
23.12.2011
Сообщения
29 067
Благодарностей
5 714
Баллы
113
Непонятно почему с 8 подстрока берется.
С 9 наверное нужно
 

ink

Client
Регистрация
24.12.2013
Сообщения
19
Благодарностей
0
Баллы
1
С 9 то же не работает.(
 

rostonix

Известная личность
Регистрация
23.12.2011
Сообщения
29 067
Благодарностей
5 714
Баллы
113
Ну сделайте return resultHttpGet.ToString().Substring(9,3)
Посмотрите что выводится
 

ink

Client
Регистрация
24.12.2013
Сообщения
19
Благодарностей
0
Баллы
1
Код:
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
Регистрация
27.12.2012
Сообщения
1 775
Благодарностей
901
Баллы
113
А вы напишите такой сниппет и посмотрите что ж там блин
Код:
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
Регистрация
24.12.2013
Сообщения
19
Благодарностей
0
Баллы
1

rostonix

Известная личность
Регистрация
23.12.2011
Сообщения
29 067
Благодарностей
5 714
Баллы
113
Код:
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";
Сайт полноценно просто прописал
 
  • Спасибо
Реакции: Serg24, SilverSun и ink

ink

Client
Регистрация
24.12.2013
Сообщения
19
Благодарностей
0
Баллы
1

Roman*

Client
Регистрация
25.09.2013
Сообщения
1 657
Благодарностей
656
Баллы
113
А подскажите, где этот экшен ставить, у меня просто бывает тоже дохнут на середине и не знаю как с этим бороться(
 

Irbis

Client
Регистрация
02.03.2014
Сообщения
195
Благодарностей
120
Баллы
43

Roman*

Client
Регистрация
25.09.2013
Сообщения
1 657
Благодарностей
656
Баллы
113
Я имею ввиду в начале проекта когда берутся прокси или в середину или в конец, просто я не понимаю сам код что там делается ,поэ тому и спрашиваю, что он будет делать после того как проверит например и обнаружит что прокся невалидная, перейдет к екшену взять прокси или автоматом возьмет?
 

Irbis

Client
Регистрация
02.03.2014
Сообщения
195
Благодарностей
120
Баллы
43
Если прокси может умереть на любом шаге, то наверное нужно поставить его в блок "Bad End".
Код вернет результат проверки. Если прокси невалидная - код вернет строку с кодом ошибки, в противном случае строку - "Proxy ON".
И в соответствии с результатом можно выстроить логику дальнейшего выполнения шаблона.
Например: Если прокси невалидная - установить новую прокси и продолжить выполнение.
 
  • Спасибо
Реакции: Roman*

rostonix

Известная личность
Регистрация
23.12.2011
Сообщения
29 067
Благодарностей
5 714
Баллы
113
Только вопрос с какого места продолжать) Bad end он для отработки разовой ошибки, не для зацикливания шаблона для успешного итогового выполнения
 

SilverSun

Client
Регистрация
31.10.2013
Сообщения
172
Благодарностей
24
Баллы
18
Подскажите, пожалуйста, этот код проверяет socksЫ ?
 

SilverSun

Client
Регистрация
31.10.2013
Сообщения
172
Благодарностей
24
Баллы
18
Код:
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

Известная личность
Регистрация
23.12.2011
Сообщения
29 067
Благодарностей
5 714
Баллы
113
По идее так же и должно с socks работать
 

SilverSun

Client
Регистрация
31.10.2013
Сообщения
172
Благодарностей
24
Баллы
18

rostonix

Известная личность
Регистрация
23.12.2011
Сообщения
29 067
Благодарностей
5 714
Баллы
113
Попробуйте так:
socks4://ip:port
 

Melkumyann

Client
Регистрация
22.09.2011
Сообщения
3
Благодарностей
1
Баллы
3
Здравствуйте! Я полный ноль в C#, помогите, пожалуйста. Как проверить этим кодом прокси с авторизацией? Я присвоил переменной proxy = login:pass@ip:port и у меня отрабатывается ошибка. Как правильно прописать настройки? Спасибо.

Код:
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
Регистрация
25.09.2013
Сообщения
1 657
Благодарностей
656
Баллы
113
Здравствуйте! Я полный ноль в C#, помогите, пожалуйста. Как проверить этим кодом прокси с авторизацией? Я присвоил переменной proxy = login:pass@ip:port и у меня отрабатывается ошибка. Как правильно прописать настройки? Спасибо.

Код:
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
Регистрация
26.08.2014
Сообщения
117
Благодарностей
7
Баллы
18
Код:
//регулярка
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 не все прокси его потдерживают
 
  • Спасибо
Реакции: CSS

ssXXXss

Client
Регистрация
23.12.2014
Сообщения
7 379
Благодарностей
2 041
Баллы
113
иногда может придти пустой ответ, но это не означает что прокси умер, поэтому он его выкинет в этом коде
 

Vladimir-AWM

Client
Регистрация
26.08.2014
Сообщения
117
Благодарностей
7
Баллы
18
иногда может придти пустой ответ, но это не означает что прокси умер, поэтому он его выкинет в этом коде
Тесть заголовка нет от страницы гугл. Это уже настараживает
 

ssXXXss

Client
Регистрация
23.12.2014
Сообщения
7 379
Благодарностей
2 041
Баллы
113
Тесть заголовка нет от страницы гугл. Это уже настараживает
это понятно что гугл вроде всегда в норме ну а вдруг инет упадёт, или гугл на час ревизию решил сделать а тебя в это время нет дома, и в течение часа все прокси улетят в трубу, у самого гугл на проверке стоит но немного по другому
 

ssXXXss

Client
Регистрация
23.12.2014
Сообщения
7 379
Благодарностей
2 041
Баллы
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
Регистрация
13.01.2014
Сообщения
819
Благодарностей
231
Баллы
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


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

Кто просматривает тему: (Всего: 2, Пользователи: 0, Гости: 2)