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

Mikhail B.

Client
Регистрация
23.12.2014
Сообщения
14 427
Благодарностей
5 453
Баллы
113
И как в шаблоне вывести настройку где можно указать "Время отклика страницы"?
28 строка. 5000 - значит 5 сек.
при добавлении прокси в начало то удаляется последняя
Прокси берется сначала и кладется в конец. С конца ничего не берется и уж тем более не удаляется.
 
Последнее редактирование:

kagorec

Client
Регистрация
24.08.2013
Сообщения
978
Благодарностей
521
Баллы
93
как понять удаляется последняя, это с чего она удаляется ?
незнаю как ты добавляешь, но мой пример такой
Код:
proxyList.Insert(0, proxy);
Такая модификация нужна для непостоянных прокси, которые максимум пару часов работают. Надо держать список с актуальными проксями.
1. Скачивание списка прокси с источника по ссылке, периодически например раз в 2 часа.
2. Проверка каждой прокси на соединение с указанным сайтом и если в течении 10 сек не отвечает соединение то прокси нерабочая.
3. Рабочая прокся добавляется в начало списка, список ограничен 500 строками и при добавлении первой строки тогда удаляется последняя.

П.С. Это скорее всего предложение к альтернативной проверке.
 

ssXXXss

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

kagorec

Client
Регистрация
24.08.2013
Сообщения
978
Благодарностей
521
Баллы
93
Накидал простой вариант на кубиках, но там задействован ProxyChecker =\
 

Matemat

Client
Регистрация
20.01.2018
Сообщения
45
Благодарностей
5
Баллы
8
А подскажите, если это возможно. Беру код из первого сообщения. Код проверяет все прокси. Но мне нужно немного по другому. У меня есть профиль. Я из профиля достаю прокси. Потом кладу эту прокси в список прокси. Первой строкой. В списке есть другие прокси. Это следующие строки.
http://prntscr.com/ngxcpf

Я хочу, чтобы Кубик проверил рабочая прокси или нет, если прокси рабочая, то
instance.SetProxy(protocol + proxy); // назначить прокси в проект
project.Variables["proxy"].Value = protocol + proxy; // назначить прокси в переменную
Если прокси не рабочая, то брал следующую, до того момента, как найдет рабочую и запищет ее в прокси проекта и в переменную. Ина этом все. Заканвивал работу.

Был бы очень признателен за подсказку.
 

Mikhail B.

Client
Регистрация
23.12.2014
Сообщения
14 427
Благодарностей
5 453
Баллы
113
А подскажите, если это возможно. Беру код из первого сообщения. Код проверяет все прокси. Но мне нужно немного по другому. У меня есть профиль. Я из профиля достаю прокси. Потом кладу эту прокси в список прокси. Первой строкой. В списке есть другие прокси. Это следующие строки.
http://prntscr.com/ngxcpf

Я хочу, чтобы Кубик проверил рабочая прокси или нет, если прокси рабочая, то
instance.SetProxy(protocol + proxy); // назначить прокси в проект
project.Variables["proxy"].Value = protocol + proxy; // назначить прокси в переменную
Если прокси не рабочая, то брал следующую, до того момента, как найдет рабочую и запищет ее в прокси проекта и в переменную. Ина этом все. Заканвивал работу.

Был бы очень признателен за подсказку.
Не смог уловить мысль. Снипет делает, то что вам нужно. Чекает прокси до тех пор, пока не найдет рабочую или кол-во попыток не превысит установленный лимит.
 

Matemat

Client
Регистрация
20.01.2018
Сообщения
45
Благодарностей
5
Баллы
8
Не смог уловить мысль. Снипет делает, то что вам нужно. Чекает прокси до тех пор, пока не найдет рабочую или кол-во попыток не превысит установленный лимит.
У меня этот кубик проверяет все прокси.
Вот что делаю я.
Загружаю профиль.
Screenshot_1.jpg

Загружаю профиль.
Screenshot_2.jpg
Получаю прокси из профиля
Screenshot_3_1.jpg
Получаю юзерагент из профиля

Screenshot_3.jpg
Кладу прокси в список прокси в начало
Screenshot_4.jpg
Список прокси, как я и говорил, не пустой, на тот случа, если прокси окажется не рабочим Так как я использую публичные прокси.
Screenshot_5.jpg

Далее ставлю куби из этой темы. Убираю только строку про proxyList.Add(proxy); // записываем живую проксю в конец списка*
Screenshot_6.jpg

И в итоге, кубик проверяет все прокси из списка.
Screenshot_7.jpg

Можете подсказать, что я делаю не так.
 

Mikhail B.

Client
Регистрация
23.12.2014
Сообщения
14 427
Благодарностей
5 453
Баллы
113
Можете подсказать, что я делаю не так.
Сделайте запрос к сайту гугл, и проверьте на наличие этих слов.
На 31 строке
Код:
blocked|заблокирован|407 Proxy
Если такие слова встречаются при нормальной загрузке страницы, то их надо удалить, составлялись они для авито.

Видно много пустых ответов, это означает, то, что прокси не отрабатывает должным образом. Естественно такие прокси пропускаются.
На 28 строке значение 5000 означает 5 секунд таймаут. Можете его увеличить ,если прокси тормозные.
 
  • Спасибо
Реакции: Matemat

Matemat

Client
Регистрация
20.01.2018
Сообщения
45
Благодарностей
5
Баллы
8
Спасибо, это исправлю. Но кубик продолжает проверять прокси, несмотря на то, что находит живые.
Может, я что-то не понимаю, но у меня создалось основанное на логе убеждение, что кубик проверяет все прокси из списка.
Screenshot_8.jpg
 

Mikhail B.

Client
Регистрация
23.12.2014
Сообщения
14 427
Благодарностей
5 453
Баллы
113
несмотря на то, что находит живые
Как я выше написал, он чекает код, на наличие слов. Возможно эти слова встречаются и по этому он воспринимает прокси как не рабочие.
 
  • Спасибо
Реакции: Matemat

Matemat

Client
Регистрация
20.01.2018
Сообщения
45
Благодарностей
5
Баллы
8
Как я выше написал, он чекает код, на наличие слов. Возможно эти слова встречаются и по этому он воспринимает прокси как не рабочие.
Спасибо. Поменял гугл на авито (мне как бы все-равно чем проверять живую прокси) поправил свою ошибочку при обработке текста. И все работает на 5+
 
  • Спасибо
Реакции: Mikhail B.

Matemat

Client
Регистрация
20.01.2018
Сообщения
45
Благодарностей
5
Баллы
8
@Mikhail B.
Еще позволю себе один вопрос. Вроде все работало. Но запускаю сейчас проект в ПМ:
Код:
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://)
lock (SyncObjects.ListSyncer)
{
  for (int i = 0; i < count; i++)
  {
   if (proxyList.Count == 0)
   break;
   string 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,
          18000);
   project.Variables["debug"].Value = content;
    if (!Regex.Match(content, "^$|blocked|заблокирован|407 Proxy").Success) // ""- если ответ пустой, && - или, содержит blocked в заголовках или ответе, то прокси не подходит
   {
      instance.SetProxy(protocol + proxy); // назначаем прокси в проект
      project.Variables["proxy"].Value = protocol + proxy; // назначем прокси в переменную
      return proxy; // возвращаем в ответе снипета прокси
   }
   //  proxyList.Add(proxy); // записываем проксю в конец списка в любом случае (предыдущее за комментировать!)*
   project.SendWarningToLog(proxy+" Прокся плохая,чекаю ещё!");  // если прокся плохая пишем,что она плохая.
  }
  throw new Exception("Все прокси полное говнo!");//Если израсходовали все попытки подключения , то выходим из блока c# с таким сообщением.
}
}
Если прокси живая, то шаблон сразу уводит путь шаблона в "Все прокси полное говно". Проверяет один раз.

Screenshot_1.png Screenshot_2.png
 

Mikhail B.

Client
Регистрация
23.12.2014
Сообщения
14 427
Благодарностей
5 453
Баллы
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
Если прокси живая, то шаблон сразу уводит путь шаблона в "Все прокси полное говно". Проверяет один раз.
Если так пишет, то так и есть. Либо нарушена логика составления списков или протокол неверно указан.
 

udder

Client
Регистрация
28.03.2017
Сообщения
618
Благодарностей
128
Баллы
43
Скажите, в этом решении есть вариант проверять пинг до сайта под прокси?
Хочу отсеить медленные прокси
 

Mikhail B.

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

Таймаут ставьте какой хотите

28 строка
5000 это 5 сек
 
Последнее редактирование:

Mexanikus

Client
Регистрация
27.06.2018
Сообщения
17
Благодарностей
1
Баллы
3
А как сейчас дела с этим снипетом ? Есть изменения в работе? Использовать снипет на первой странице или второй?
 

Mikhail B.

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

Mexanikus

Client
Регистрация
27.06.2018
Сообщения
17
Благодарностей
1
Баллы
3
Нормально работает. Под себя меняю время от времени.
Использовать вариант снипета , который на 2 странице темы? Так и не понял где переключать тип прокси? Пробую для начала запустить шаблон в прожект мейкере. Заменяю в 9строке на socks5, а всеравно в кладке трафик идут запросы через http, В итоге все плохие прокси
 

Mikhail B.

Client
Регистрация
23.12.2014
Сообщения
14 427
Благодарностей
5 453
Баллы
113
Использовать вариант снипета , который на 2 странице темы? Так и не понял где переключать тип прокси? Пробую для начала запустить шаблон в прожект мейкере. Заменяю в 9строке на socks5, а всеравно в кладке трафик идут запросы через http, В итоге все плохие прокси
Там шаблон в первом посте. Во входных нсстройках переключение.
 

Mexanikus

Client
Регистрация
27.06.2018
Сообщения
17
Благодарностей
1
Баллы
3
т.е. его запускать только в зенопостере, а не в прожект мейкере? И шапке темы постоянно снипет обновляется?
 

Mikhail B.

Client
Регистрация
23.12.2014
Сообщения
14 427
Благодарностей
5 453
Баллы
113
т.е. его запускать только в зенопостере, а не в прожект мейкере? И шапке темы постоянно снипет обновляется?
Запускать можно где угодно.
Дата обновления была в 18 году))
 

Mexanikus

Client
Регистрация
27.06.2018
Сообщения
17
Благодарностей
1
Баллы
3
В данный момент использую такой сниппет.

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# с таким сообщением.
}
Я вот почему и спрашиваю, какой снипет использовать? Так как в 19 году выписали что используете вот такой снипет. Я посмотрел, он отличаются от шапки, только для меня C# пока непонятен,
 

Mikhail B.

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

Mexanikus

Client
Регистрация
27.06.2018
Сообщения
17
Благодарностей
1
Баллы
3
вас понял, подскажите только что я делаю не так: Пишет что все прокси плохие, я попробовал запустил в прожектмейкере - зашел в трафик посмотреть на запросы как проходят - а увидел что запросы всеравно идут через http , а не через socks5 ?
 

Mikhail B.

Client
Регистрация
23.12.2014
Сообщения
14 427
Благодарностей
5 453
Баллы
113
вас понял, подскажите только что я делаю не так: Пишет что все прокси плохие, я попробовал запустил в прожектмейкере - зашел в трафик посмотреть на запросы как проходят - а увидел что запросы всеравно идут через http , а не через socks5 ?
Завтра гляну шаблон. В обычном кубике работает?

UPD. Забыл глянуть. Ну никто не напомнил, значить и не сильно надо было :D
 
Последнее редактирование:

Mexanikus

Client
Регистрация
27.06.2018
Сообщения
17
Благодарностей
1
Баллы
3
ну честно сказать в обычном не пробовал, меня просто смутила запись http , а у меня socks5. Сейчас попробую с обычными гет запросами

Проверил прокси на кубиках - работает большая часть , но очень тормозные. Сейчас скорость поменяю в вашем шаблоне.

Вообщем все равно пишет, что это прокси http. И поэтому прокси плохие.
 
Последнее редактирование:

luisa

Client
Регистрация
17.06.2019
Сообщения
42
Благодарностей
6
Баллы
8
Запускаю шаблон в логе выдаёт ошибку, что все прокси плохие в чём может быть проблема

Тип socks5
 

Mikhail B.

Client
Регистрация
23.12.2014
Сообщения
14 427
Благодарностей
5 453
Баллы
113
Запускаю шаблон в логе выдаёт ошибку, что все прокси плохие в чём может быть проблема

Тип socks5
Я пару месяцев назад начал переводить снипет на новый метод запросов. С более детальным оповещением в лог. Процесс усложнен тем, что я владею С# на начальном уровне, даже ниже. Постараюсь глянуть на днях, и скинуть обновленный снипет.
 

Mikhail B.

Client
Регистрация
23.12.2014
Сообщения
14 427
Благодарностей
5 453
Баллы
113
Запускаю шаблон в логе выдаёт ошибку, что все прокси плохие в чём может быть проблема

Тип socks5
В общем я глянул снипет. Там много работы, пока нету мотивации его делать. Делал по фану, когда было свободное время.

Посмотри в мониторе трафика запросы. Тогда будет понятна причина такого ответа.
 

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