Заготовки для типового шаблона ZennoPoster и ZennoDroid Pro/Lite

LaGir

Client
Регистрация
01.10.2015
Сообщения
231
Благодарностей
955
Баллы
93
Всем привет! :-)

При создании обычного браузерного шаблона для ZennoPoster у нас всегда есть те действия/кубики/сниппеты, которые мы делаем заново под каждый новый сайт/проект/сервис, а есть те, которые раз за разом одни и те же, повторяются практически в каждом проекте. Часто такие кубики просто копируют из старых проектов. Просто, но не всегда удобно. Кто-то выделяет такие повторяющееся действия в наборы кубиков или сниппетов, кто-то вообще их выносит в подпроекты или даже отдельные либы.

Материал данной темы как раз про это - выделим наиболее используемые и распространённые действия, и представим их виде заготовок-шаблонов.

Сразу скажу, что материал ориентирован в первую очередь на новичков в использовании ZennoPoster и ZennoDroid, хоть и оформлен в коде. Код удобен компактностью и гибкостью, а проблемы с его пониманием в нынешнее время легко решают большинство нейронок. Поэтому, если вы далеки даже от использования C#-сниппетов в своих проектах - не стесняйтесь пробовать разобраться с конкретными кусками кода/сниппетами с условным ChatGPT, ныне это большое подспорье в работе + нет необходимости разбираться в коде самостоятельно.

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

Основная работа в данном случае - те действия, ради которых мы создаём шаблон. Т.е., например, идём на какой-то сайт, что-то там делаем, может быть ищем, кликаем, заполняем и т.д.

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

А после основной работы с нужным сайтом, соответственно:
Сохранить профиль, или же переместить или удалить его вовсе, отключить инстанс, сделать какие-либо дополнительные вещи типа записи лога или запуска другого шаблона в ZP, и т.д.

Можно заметить, что именно в этих местах, в начале и конце работы браузерного шаблона, существует набор однотипных действий, над которыми стоит меньше всего париться, когда приступаешь к созданию нового шаблона. И они особо не зависят от внешних факторов. Например, какие-нибудь клики-заполнения форм на сайтах - тоже можно неплохо загнать в универсальные заготовки, но там больше зависимостей, которые надо "трогать" из проекта в проект - зависимость от конкретных сайтов, от расположений HTML-элементов и путей к ним и т.п.
Поэтому заготовки из данной темы рассчитаны ровно на эти этапы - на начало работы шаблона, и на его окончание.

Перейдём непосредственно к разбору содержимого заготовок.
Каждая из них содержит по 2 нужных сниппета, с соответствующими названиями, Start и End.

1.jpg


В них находятся по паре строк кода:
C#:
// Объект текущего потока для доступа к настройкам и переменным
var ct = new CurrentThread(instance, project);
// Выполнение всех подготовительных задач (загрузка профиля, инстанса и т.д.)
Starter.RunAll(ct);
Первая строка, по сути, ответственна за сбор необходимых переменных проекта (в том числе из входных настроек), а вторая - за вызов всех действий, нужных в начале и конце шаблона.
Весь основной код находится в блоке Общий код, откуда и дергается в сниппетах. Поэтому, если надо что-то отредактировать или изменить в заготовках под себя - идём туда.
Также отмечу, что важные переменные также выведены во входные настройки, т.е. можно посмотреть что затрагивается в коде в таком наглядном виде.

2.jpg



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

3.jpg


Вот пример для сниппета Start в шаблоне для ZennoDroid:
C#:
project.SendInfoToLog($"*** Подготовка к работе потока...", true);

// Объект текущего потока для доступа к настройкам и переменным
var ct = new CurrentThread(instance, project);

// == Выполнение всех подготовительных задач (загрузка и настройка устройства, прокси и т.д.)

// Получение устройства
bool isOk = Starter.GetDevice(ct);
if (!isOk) throw new Exception("Проблемы с получением устройства");

// Установка параметров экрана, если надо
Starter.SetScreen(ct);

// Выбор профиля
isOk = Starter.GetProfile(ct);
if (!isOk) throw new Exception("Проблемы с получением профиля");

// Установка прокси
Starter.SetProxy(ct);

// Применение профиля
isOk = Starter.ApplyProfileToDevice(ct);
if (!isOk) throw new Exception("Проблемы с применением профиля");

// Проверка прокси
isOk = Starter.CheckProxy(ct);
if (!isOk) throw new Exception("Проблемы с проверкой прокси");

// Установка днс, времени, таймзоны
Starter.SetPrivateDns(ct);
Starter.SetDateTime(ct);
Starter.SetTimeZone(ct);

// Установка целевого приложения, если надо
Starter.InstallApp(ct);
// Загрузка данных целевого приложения, если есть
Starter.LoadAppData(ct);

project.SendInfoToLog($"*** Подготовка к работе потока завершена", true);
Эти варианты сниппетов Start и End удобно использовать тогда, когда вам нужно добавить что-то своё в заготовку. Например, если вам нужно вставить строчку блокировки рекламы, которой в заготовке нет:
C#:
instance.UseAdds = true;
В целом, этого достаточно, чтобы начать пользоваться заготовками. Ещё немного информации представлено в видео ниже. Также, в случае каких-либо непоняток, разумеется можно и нужно спрашивать в теме. :-)



К теме прикреплены 2 шаблона:
StartEnd_ZP.zp - заготовка для ZennoPoster
StartEnd_ZD.droid - заготовка для ZennoDroid Pro/Lite

Дисклеймер к файлам заготовок
  • Заготовки предназначены в первую очередь для новичков. При использовании в своих проектах их можно (и нужно) дополнять своим кодом, сниппетами с форума или от нейронок. Материал ни в коем случае не претендует на исчерпывающее освещение темы - скорее призван служить минималистичной отправной точкой.
  • Заготовка для ZennoDroid предназначена только Pro и Lite версий с эмулятором Memu. При желании использовать заготовку для иных эмуляторов и ZDE - адаптировать её под них вам необходимо самостоятельно.
  • Материалу по ZennoDroid уделено больше внимания - так как у него "начало" и "конец" отличаются от привычных многим вещей из ZP. Если вы давно пользуетесь ZennoPoster, но всё ещё не добрались до ZennoDroid - возможно, изучение этой заготовки поможет вам освоиться в ZD Pro/Lite.
 

Вложения

Последнее редактирование модератором:

BAZAg

Client
Регистрация
08.11.2015
Сообщения
1 874
Благодарностей
2 588
Баллы
113
Я уже давненько новичком себя не считаю.
Но, материал мне полезен однозначно - всегда люблю почитать чужой код и подчерпнуть оттуда что-то для себя!

Спасибо за статью!
 
  • Спасибо
Реакции: LaGir

OlegR

Client
Регистрация
11.06.2015
Сообщения
247
Благодарностей
253
Баллы
63
нужно упрощать кодинг
 

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