Периодически не открывается страница

tiptopvkr

Client
Регистрация
26.09.2019
Сообщения
189
Благодарностей
14
Баллы
18
Привет всем. Столкнулся с такой проблемой:

Иногда при переходе на страницу открывается не то что нужно а "about:blank" - пустой лист. При этом кубик отмечается как выполненный. Следовательно дальше всюду будут ошибки. И это происходит не в новой вкладке а в текущей.

Я то конечно создал кубик с проверкой текущего адреса в сроке таба но все равно во первых это не правильно во вторых я не нашел в настройках кубиков как нажать в браузере кнопку "назад" чтобы вернуть на предыдущую страницу.
Итого имеем вопросы:
1) Как избежать таких переходов на пустые страницы (они появляются не часто и без какой либо системы)
2) Как настроить нажатие кнопки "назад" в браузере чтобы вернуть на предыдущую страницу.
 

Phoenix78

Client
Read only
Регистрация
06.11.2018
Сообщения
11 790
Благодарностей
5 705
Баллы
113
1. Никак
2. Никак
about:blank означает что перехода не было . плохой инет, пинг, прокси медленные/зависающие/глючные в общем с сетью траблы.
Проверять куда попадает бот это не только правильно , а жизненно необходимо для бота. еще надо проверять прогруз контрольного элемента на странице, а то запросто может быть что урл тот, а элемента нет. и следующий шаг для бота становиться фатальным.
а что бы вернуться на предыдущую страницу , ведите лог посещенных урл. при сбое можно попытаться перезагрузить текущую страницу раза 2 или вернуться на предыдущую. опять же не факт что она загрузиться если есть проблемы с сетью.
 
  • Спасибо
Реакции: tiptopvkr

Sergodjan

Administrator
Команда форума
Регистрация
05.09.2012
Сообщения
19 803
Благодарностей
8 865
Баллы
113

Phoenix78

Client
Read only
Регистрация
06.11.2018
Сообщения
11 790
Благодарностей
5 705
Баллы
113
там ниже написали что не всегда срабатывает. и да еще, ява под файрфоксом на некоторых сайтах может и критануть и шаблон вывалиться по бад энд.
лучше уж в переменной хранить.
 
  • Спасибо
Реакции: tiptopvkr и Sergodjan

tiptopvkr

Client
Регистрация
26.09.2019
Сообщения
189
Благодарностей
14
Баллы
18
Всем спасибо за помощь. Нашел в сети вот такой код чтобы избавиться от проблемы с проксей (я какраз с мобильными и работаю)

Код для вставки в “Общий Код”::
class CheckProxy
{
public void Checked(string MyProxy, bool w8)
{
for(int i = 0; i <= 4; i++)
{
string httpResponse = null;
if (w8 == true) i = 0;
httpResponse = ZennoPoster.HttpGet(“https://zennoclub.com/files/download/check_proxy.html”, MyProxy, “UTF-8”, ZennoLab.InterfacesLibrary.Enums.Http.ResponceType.BodyOnly, 3000, “”, “Mozilla/5.0 (Windows NT 6.3; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/67.0.3396.99 Safari/537.36”, true, 5);
if (i >= 3) throw new Exception(“Не работает прокси: ” + MyProxy);
if (httpResponse != “ok”) Thread.Sleep(1500);
if (httpResponse == “ok”)break;
}
}
}
Код для вставки в кубик C#::
string proxy = project.Variables[“proxy”].Value;
CheckProxy cp = new CheckProxy();
cp.Checked(proxy, true);
Инфу брал Отсюда там есть видео. Я смотрел и по нему делал.

Я затестил но не получилось.
Выдает ошибку в логе:
Компиляция кода проекта Ошибка при компиляции общего кода "CS1056" "Непредусмотренный символ "”"". [Строка: 32; Cтолбец: 24]

Разобрался в чем проблема. Кавычки нужно сменить на латинской раскладке. Там в коде стоят какие то не правильные. И все заработало)
 
Последнее редактирование:

Phoenix78

Client
Read only
Регистрация
06.11.2018
Сообщения
11 790
Благодарностей
5 705
Баллы
113
чекать прокси конечно надо. а еще с мобильными есть такая засада. иногда автоматика передергивания не срабатывает и IP не меняется. прокси будет дальше работать на старом адресе. если не важна смена адреса , то можно и забить на это, но если нужен уникальный адрес за последние N ребутов, то надо бы делать такую проверку.
 

tiptopvkr

Client
Регистрация
26.09.2019
Сообщения
189
Благодарностей
14
Баллы
18
Все верно. В некоторых задачах мне требуется именно новый прокси. Ну и всегда при перезагрузке айпи - слетает задача.

Кстати нашел выход на форуме как чекать айпи и настрою в конце каждой задачи брать айпи и сравнивать с новой задачей. Если сходится - ждем 30 сек если нет работаем дальше.
http://api.ipify.org тут очень удобно брать айпи Гет запросом. Ничего лишнего)
 

tiptopvkr

Client
Регистрация
26.09.2019
Сообщения
189
Благодарностей
14
Баллы
18
Привет всем. Тот метод глюкнул что я писал выше в ветке. Долго не может подключиться к нужной странице. Вручную пытался зайти на
https://zennoclub.com/files/download/check_proxy.html Тоже не работает.

Подскажите еще варианты как проверять на валид прокси регулярно. У меня перед каждый кубиком который должен что-то выполнить на странице или перейти на другую страницу стоит этот код.
 

Mikhail B.

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

tiptopvkr

Client
Регистрация
26.09.2019
Сообщения
189
Благодарностей
14
Баллы
18
А им я проверяю айпи в конце проекта. Если йпи сменился переходим к следующему акку если не сменился то ждем 30 сек и проверяем еще раз. Он работает

У меня проблема с этим методом https://zennolab.com/discussion/threads/periodicheski-ne-otkryvaetsja-stranica.70020/post-481632

Им я проверяю на доступность прокси. Иначе если прокси тормознул то выдает about:blank а у меня это недопустимо
 

Mikhail B.

Moderator
Регистрация
23.12.2014
Сообщения
14 359
Благодарностей
5 441
Баллы
113
Так что мешает проверять доступность прокси методом http://api.ipify.org ?
 

tiptopvkr

Client
Регистрация
26.09.2019
Сообщения
189
Благодарностей
14
Баллы
18
Я не умею это в коде написать) Для этого метода у меня несколько кубиков а для того что перестал работать - 1
 

Mikhail B.

Moderator
Регистрация
23.12.2014
Сообщения
14 359
Благодарностей
5 441
Баллы
113
Я не умею это в коде написать) Для этого метода у меня несколько кубиков а для того что перестал работать - 1
Можно без кода. Просто в заголовке если 200 то нормально. Если пусто или что-то другое то нет.
Запрос
Регулярка
Логика
Пауза
Цикл
 

tiptopvkr

Client
Регистрация
26.09.2019
Сообщения
189
Благодарностей
14
Баллы
18
Это 5 кубиков и так я умею но пытаюсь понять как упросить это дело до 1 кубика как в первом примере и пока ничего не получается)
 

Mikhail B.

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

tiptopvkr

Client
Регистрация
26.09.2019
Сообщения
189
Благодарностей
14
Баллы
18

Mikhail B.

Moderator
Регистрация
23.12.2014
Сообщения
14 359
Благодарностей
5 441
Баллы
113
Так вот же он (в этой теме только выше). https://zennolab.com/discussion/threads/periodicheski-ne-otkryvaetsja-stranica.70020/post-481632 Не знаю что с ним делать чтобы переделать на этот урл например http://api.ipify.org

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

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

tiptopvkr

Client
Регистрация
26.09.2019
Сообщения
189
Благодарностей
14
Баллы
18
Не получается у меня с ним совсем... Все время выдает результат "ok". Я вырубал интернет - следовательно прокси не должен работать а мне все время результат "ok".

Все переменные которые в коде - создал. Пробовал вставлять в переменную CHECK_ADRESS урл http://api.ipify.org и пробовал заменять как в инструкции на этот адрес. Ничего не выходит.

тестирую с одним мобильным прокси в списке.

Вот код который я исправил под себя:

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

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["http://api.ipify.org"].Value, // CHECK_ADRESS - url для проверки
          protocol + proxy,
          "UTF-8",
          ZennoLab.InterfacesLibrary.Enums.Http.ResponceType.HeaderAndBody,
          5000);

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

   //  proxyList.Add(proxy); // записываем проксю в конец списка в любом случае (предыдущее за комментировать!)*

   project.SendWarningToLog(proxy+" Прокся плохая,чекаю ещё!");  // если прокся плохая пишем,что она плохая.
  }

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

Mikhail B.

Moderator
Регистрация
23.12.2014
Сообщения
14 359
Благодарностей
5 441
Баллы
113
Надо в зенке создать пременную Protocol
И вписать туда http://

В строке 29 оставил ты проверку на пустоту. Но если слетит авторизация прокси, то ответ будет не пустой. Имей это ввиду.
C#:
// проверяем включены-ли прокси или нет.
IZennoList proxyList = project.Lists["proxy"]; //Получаем указатель на лист с проксями
int count = 10; // количество неудачных проверок подряд

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["http://api.ipify.org"].Value, // CHECK_ADRESS - url для проверки
          protocol + proxy,
          "UTF-8",
          ZennoLab.InterfacesLibrary.Enums.Http.ResponceType.HeaderAndBody,
          5000);

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

   //  proxyList.Add(proxy); // записываем проксю в конец списка в любом случае (предыдущее за комментировать!)*

   project.SendWarningToLog(proxy+" Прокся плохая,чекаю ещё!");  // если прокся плохая пишем,что она плохая.
  }

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

tiptopvkr

Client
Регистрация
26.09.2019
Сообщения
189
Благодарностей
14
Баллы
18
Попробовал. Все равно ОК выдает с выключенным интернетом.

Также попробовал по рекомендации создать несколько кубиков.
Глюк какой то вылазит.
Вот содержимое условия "{-Variable.test2-}"=="200 OK"
А вот скрин что в переменной все же есть 200 OK
48073

и все равно выдает ошибку
48074


Содержимое регулярки:
48075
 
Последнее редактирование:

Mikhail B.

Moderator
Регистрация
23.12.2014
Сообщения
14 359
Благодарностей
5 441
Баллы
113
Парси просто 200 без пробелов и ковычки убери в таком случае в if.

По поводу снипета, он берет из списка прокси. Ты список создал? Там в теме шаблон пример есть.
 
  • Спасибо
Реакции: tiptopvkr

tiptopvkr

Client
Регистрация
26.09.2019
Сообщения
189
Благодарностей
14
Баллы
18
Список создал. Просто в списке 1 прокси
 

tiptopvkr

Client
Регистрация
26.09.2019
Сообщения
189
Благодарностей
14
Баллы
18
Выкрутился другим способом. Может кому будет полезно.

Создал из 4 кубиков проверку на валид прокси. Запихнул в отдельный проект. А в рабочем проекте создал кубик проект в проекте чем собственно и сделал без С# кода одним кубиком то что требовалось - проверку прокси на валид.

Гет запрос отправляю на сюда http://api.ipify.org Они пока вроде не ругаются за частые запросы) Но его можно заменить на любой другой домен.
48084

В рзультате если успешно - значит прокси валид и идет дальше выполнение в родительском проекте. Если не валид то идут повторные проверки с паузой 3 сек пока не станет валид.

Если у кого то не так как у меня критично чтобы прокси стал валид либо продолжения не было то можно ставить проверку на количество невалидных попыток и при достижении количества отправлять на завершение или замену прокси или что еще.
 
  • Спасибо
Реакции: Mikhail B.

Mikhail B.

Moderator
Регистрация
23.12.2014
Сообщения
14 359
Благодарностей
5 441
Баллы
113
Для чисел кавычки надо убирать в логике.
 

tiptopvkr

Client
Регистрация
26.09.2019
Сообщения
189
Благодарностей
14
Баллы
18
У меня с ними работает... И верно вроде как... Почему с ними хуже?
 

Sergodjan

Administrator
Команда форума
Регистрация
05.09.2012
Сообщения
19 803
Благодарностей
8 865
Баллы
113
В этом конкретном случае, проблем не должно быть и с кавычками и без можно.
 

Malegik

Client
Регистрация
15.03.2019
Сообщения
21
Благодарностей
1
Баллы
3
Выкрутился другим способом. Может кому будет полезно.

Создал из 4 кубиков проверку на валид прокси. Запихнул в отдельный проект. А в рабочем проекте создал кубик проект в проекте чем собственно и сделал без С# кода одним кубиком то что требовалось - проверку прокси на валид.

Гет запрос отправляю на сюда http://api.ipify.org Они пока вроде не ругаются за частые запросы) Но его можно заменить на любой другой домен.
Посмотреть вложение 48084
В рзультате если успешно - значит прокси валид и идет дальше выполнение в родительском проекте. Если не валид то идут повторные проверки с паузой 3 сек пока не станет валид.

Если у кого то не так как у меня критично чтобы прокси стал валид либо продолжения не было то можно ставить проверку на количество невалидных попыток и при достижении количества отправлять на завершение или замену прокси или что еще.
вот таже проблема походу... в итоге то какой выход то?
по всему проекту распихана эта проверка прокси перед использованием... а этот код чето накрылся походу...
 

Malegik

Client
Регистрация
15.03.2019
Сообщения
21
Благодарностей
1
Баллы
3
вчитался и сделал так же) благодарю
 

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