Прокси взять из списка, чекнуть, назначить, положить в конец списка. Готовый сниппет. Proxy С# v.2

luisa

Client
Регистрация
17.06.2019
Сообщения
42
Благодарностей
6
Баллы
8
Ок, попробую разобраться
 

Roman48

Client
Регистрация
28.02.2016
Сообщения
2 058
Благодарностей
745
Баллы
113
В данный момент использую такой сниппет.

C#:
if (project.Variables["TurnProxy"].Value == "True" )
{
// проверяем включены-ли прокси или нет.
IZennoList proxyList = project.Lists["Proxy"]; //Получаем указатель на лист с проксями
int count = 100; // количество неудачных проверок подряд
string protocol = "";
if (project.Variables["Protocol"].Value == "") //(пустая переменная = http://)
project.Variables["Protocol"].Value = "http";
protocol = project.Variables["Protocol"].Value + "://"; // из переменной, в переменной значение socks5:// или http:// (пустая переменная = http://)

  for (int i = 0; i < count; i++)
  {
   if (proxyList.Count == 0)
   break;
  
string proxy = string.Empty;
lock (SyncObjects.ListSyncer)
{
   proxy = proxyList[0];
   proxyList.RemoveAt(0);
}
  
  
   var content = ZennoPoster.HttpGet(project.Variables["CHECK_ADRESS"].Value, // CHECK_ADRESS - url для проверки
          protocol + proxy,
          "UTF-8",
          ZennoLab.InterfacesLibrary.Enums.Http.ResponceType.HeaderAndBody,
          15000);

   project.Variables["debug"].Value = content;
   if (!Regex.Match(content, "^$|/blocked|заблокирован|407 Proxy").Success)
   // ""- если ответ пустой, && - или, содержит blocked в заголовках или ответе, то прокси не подходит
   {
    lock (SyncObjects.ListSyncer)
{
      proxyList.Add(proxy); // записываем живую проксю в конец списка*
}
      instance.SetProxy(protocol + proxy); // назначаем прокси в проект
      project.Variables["proxy"].Value = protocol + proxy; // назначем прокси в переменную
      return proxy; // возвращаем в ответе снипета прокси
   }
lock (SyncObjects.ListSyncer)
{
   //  proxyList.Add(proxy); // записываем проксю в конец списка в любом случае (предыдущее за комментировать!)*
}
   project.SendWarningToLog(proxy+" Прокся плохая,чекаю ещё!");  // если прокся плохая пишем,что она плохая.
  }

  throw new Exception("Плохие прокси!");//Если израсходовали все попытки подключения , то выходим из блока c# с таким сообщением.
}
Авто орпределение протокола не получилось сделать?
 

Mikhail B.

Client
Регистрация
23.12.2014
Сообщения
14 427
Благодарностей
5 453
Баллы
113

Roman48

Client
Регистрация
28.02.2016
Сообщения
2 058
Благодарностей
745
Баллы
113
Нет возможности прикрутить?, есть много сайтов, где есть возможность парсить бесплатно.
у меня знаний нет в C#, были бы знания прикрутил бы.
 

Mikhail B.

Client
Регистрация
23.12.2014
Сообщения
14 427
Благодарностей
5 453
Баллы
113
Нет возможности прикрутить?, есть много сайтов, где есть возможность парсить бесплатно.
у меня знаний нет в C#, были бы знания прикрутил бы.
Скорей нет желания заниматся. т.к. писать на шарпе это тяжело для меня. А так думаю можно было бы сделать двойную проверку на HTTP и SOCKS5 и уже назначать прокси которая успешно прошла по одному из протоколов.
 

one

Client
Регистрация
22.09.2015
Сообщения
6 831
Благодарностей
1 275
Баллы
113
Скорей нет желания заниматся. т.к. писать на шарпе это тяжело для меня. А так думаю можно было бы сделать двойную проверку на HTTP и SOCKS5 и уже назначать прокси которая успешно прошла по одному из протоколов.
Как то так. ))
72462
 
  • Спасибо
Реакции: Mikhail B. и Roman48

Roman48

Client
Регистрация
28.02.2016
Сообщения
2 058
Благодарностей
745
Баллы
113
Скорей нет желания заниматся. т.к. писать на шарпе это тяжело для меня. А так думаю можно было бы сделать двойную проверку на HTTP и SOCKS5 и уже назначать прокси которая успешно прошла по одному из протоколов.
Можешь подсказать, как это в шаблоне сделать, определить протокол?
 

Roman48

Client
Регистрация
28.02.2016
Сообщения
2 058
Благодарностей
745
Баллы
113

one

Client
Регистрация
22.09.2015
Сообщения
6 831
Благодарностей
1 275
Баллы
113
  • Спасибо
Реакции: Roman48

Roman48

Client
Регистрация
28.02.2016
Сообщения
2 058
Благодарностей
745
Баллы
113
Ну наводку я дал, дальше немного потрудиться придется.
Это я понял, спасибо большее, и сделать смогу, не могу понять куда запрос делать? Или просто запрос на SOCKS4,SOCKS5, HTTP, HTTPS и что ответит тот протокол и есть, бесплатные прокси бывают (чаще всего) через раз, работают, типа, сейчас сделал запрос, ответа нет, а через 20 секунд, ответ есть. Или какой-то другой запрос?
 

Mikhail B.

Client
Регистрация
23.12.2014
Сообщения
14 427
Благодарностей
5 453
Баллы
113
Это я понял, спасибо большее, и сделать смогу, не могу понять куда запрос делать? Или просто запрос на SOCKS4,SOCKS5, HTTP, HTTPS и что ответит тот протокол и есть, бесплатные прокси бывают (чаще всего) через раз, работают, типа, сейчас сделал запрос, ответа нет, а через 20 секунд, ответ есть. Или какой-то другой запрос?
Ну делай 3 проверки. Нафиг прокси которое в отваливаются каждые 20 сек)
 

Roman48

Client
Регистрация
28.02.2016
Сообщения
2 058
Благодарностей
745
Баллы
113
Я тут беру, hidemy.name/ru/proxy-list/?maxtime=2000&type=4#list сейчас сокс 4 выбираю, хотелось бы все парсить и больше сайтов добавить, но под каждый сайт шаблон пилить, это не универсально, сниппет было бы самый то что надо.
Придется сделать проверку, как посоветовали.
 

spbalexpiter

Client
Регистрация
24.11.2013
Сообщения
392
Благодарностей
90
Баллы
28
полезный шаблончик. а как сделать чтобы проверял прокси сразу на два сайта?
 

Mikhail B.

Client
Регистрация
23.12.2014
Сообщения
14 427
Благодарностей
5 453
Баллы
113
полезный шаблончик. а как сделать чтобы проверял прокси сразу на два сайта?
Думаю надо добавить еще if и туда второй запрос. Пока приостановил изучение шарпа, а так подправил бы. Сейчас пользуюсь версией с альтернативным методом запроса, метод в этом коде устарел.
 

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