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

  • Автор темы Автор темы Mikhail B.
  • Дата начала Дата начала
И как в шаблоне вывести настройку где можно указать "Время отклика страницы"?
28 строка. 5000 - значит 5 сек.
при добавлении прокси в начало то удаляется последняя
Прокси берется сначала и кладется в конец. С конца ничего не берется и уж тем более не удаляется.
 
Последнее редактирование:
как понять удаляется последняя, это с чего она удаляется ?
незнаю как ты добавляешь, но мой пример такой
Код:
Развернуть Свернуть Копировать
proxyList.Insert(0, proxy);
Такая модификация нужна для непостоянных прокси, которые максимум пару часов работают. Надо держать список с актуальными проксями.
1. Скачивание списка прокси с источника по ссылке, периодически например раз в 2 часа.
2. Проверка каждой прокси на соединение с указанным сайтом и если в течении 10 сек не отвечает соединение то прокси нерабочая.
3. Рабочая прокся добавляется в начало списка, список ограничен 500 строками и при добавлении первой строки тогда удаляется последняя.

П.С. Это скорее всего предложение к альтернативной проверке.
 
так вставь в нужное место и будет тебе как надо
 
Накидал простой вариант на кубиках, но там задействован ProxyChecker =\
0wplb5a.png
 
А подскажите, если это возможно. Беру код из первого сообщения. Код проверяет все прокси. Но мне нужно немного по другому. У меня есть профиль. Я из профиля достаю прокси. Потом кладу эту прокси в список прокси. Первой строкой. В списке есть другие прокси. Это следующие строки.
http://prntscr.com/ngxcpf

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

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

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

Был бы очень признателен за подсказку.
Не смог уловить мысль. Снипет делает, то что вам нужно. Чекает прокси до тех пор, пока не найдет рабочую или кол-во попыток не превысит установленный лимит.
 
Не смог уловить мысль. Снипет делает, то что вам нужно. Чекает прокси до тех пор, пока не найдет рабочую или кол-во попыток не превысит установленный лимит.
У меня этот кубик проверяет все прокси.
Вот что делаю я.
Загружаю профиль.
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

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

Видно много пустых ответов, это означает, то, что прокси не отрабатывает должным образом. Естественно такие прокси пропускаются.
На 28 строке значение 5000 означает 5 секунд таймаут. Можете его увеличить ,если прокси тормозные.
 
  • Спасибо
Реакции: Matemat
Спасибо, это исправлю. Но кубик продолжает проверять прокси, несмотря на то, что находит живые.
Может, я что-то не понимаю, но у меня создалось основанное на логе убеждение, что кубик проверяет все прокси из списка.
Screenshot_8.jpg
 
несмотря на то, что находит живые
Как я выше написал, он чекает код, на наличие слов. Возможно эти слова встречаются и по этому он воспринимает прокси как не рабочие.
 
  • Спасибо
Реакции: Matemat
Как я выше написал, он чекает код, на наличие слов. Возможно эти слова встречаются и по этому он воспринимает прокси как не рабочие.
Спасибо. Поменял гугл на авито (мне как бы все-равно чем проверять живую прокси) поправил свою ошибочку при обработке текста. И все работает на 5+
 
  • Спасибо
Реакции: Mikhail B.
@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
 
В данный момент использую такой сниппет.

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# с таким сообщением.
}
 
Если прокси живая, то шаблон сразу уводит путь шаблона в "Все прокси полное говно". Проверяет один раз.
Если так пишет, то так и есть. Либо нарушена логика составления списков или протокол неверно указан.
 
Скажите, в этом решении есть вариант проверять пинг до сайта под прокси?
Хочу отсеить медленные прокси
 
Скажите, в этом решении есть вариант проверять пинг до сайта под прокси?
Хочу отсеить медленные прокси
Да.

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

28 строка
5000 это 5 сек
 
Последнее редактирование:
А как сейчас дела с этим снипетом ? Есть изменения в работе? Использовать снипет на первой странице или второй?
 
А как сейчас дела с этим снипетом ? Есть изменения в работе? Использовать снипет на первой странице или второй?
Нормально работает. Под себя меняю время от времени.
 
Нормально работает. Под себя меняю время от времени.
Использовать вариант снипета , который на 2 странице темы? Так и не понял где переключать тип прокси? Пробую для начала запустить шаблон в прожект мейкере. Заменяю в 9строке на socks5, а всеравно в кладке трафик идут запросы через http, В итоге все плохие прокси
 
Использовать вариант снипета , который на 2 странице темы? Так и не понял где переключать тип прокси? Пробую для начала запустить шаблон в прожект мейкере. Заменяю в 9строке на socks5, а всеравно в кладке трафик идут запросы через http, В итоге все плохие прокси
Там шаблон в первом посте. Во входных нсстройках переключение.
 
т.е. его запускать только в зенопостере, а не в прожект мейкере? И шапке темы постоянно снипет обновляется?
 
т.е. его запускать только в зенопостере, а не в прожект мейкере? И шапке темы постоянно снипет обновляется?
Запускать можно где угодно.
Дата обновления была в 18 году))
 
В данный момент использую такой сниппет.

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# пока непонятен,
 
Я вот почему и спрашиваю, какой снипет использовать? Так как в 19 году выписали что используете вот такой снипет. Я посмотрел, он отличаются от шапки, только для меня C# пока непонятен,
Оба рабочие должны быть.
 
вас понял, подскажите только что я делаю не так: Пишет что все прокси плохие, я попробовал запустил в прожектмейкере - зашел в трафик посмотреть на запросы как проходят - а увидел что запросы всеравно идут через http , а не через socks5 ?
 
вас понял, подскажите только что я делаю не так: Пишет что все прокси плохие, я попробовал запустил в прожектмейкере - зашел в трафик посмотреть на запросы как проходят - а увидел что запросы всеравно идут через http , а не через socks5 ?
Завтра гляну шаблон. В обычном кубике работает?

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

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

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

Тип socks5
 
Запускаю шаблон в логе выдаёт ошибку, что все прокси плохие в чём может быть проблема

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

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

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

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