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

LaGir

Client
Регистрация
01.10.2015
Сообщения
240
Благодарностей
972
Баллы
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 900
Благодарностей
2 634
Баллы
113
Я уже давненько новичком себя не считаю.
Но, материал мне полезен однозначно - всегда люблю почитать чужой код и подчерпнуть оттуда что-то для себя!

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

OlegR

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

Gotcha!

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

Вот вроде бы отличная штука для новичка и статья имеет некоторое описание, но не хватает объяснения "на пальцах".
Не хватает приведения конкретных примеров на шаблоне между Start и End, с объяснением как пользоваться шаблоном.
Лично я и есть тот самый новичок и не понял как использовать предоставленную ценную информацию.

Gemini не дала проливающих свет ответов, но пояснила что сниппеты из шаблона - фундамент для работы с проектами.
Она рассказала что делают отдельные части кода, но как при этом новичку догадаться как применять этот классный шаблон с заготовками?

Представим ситуацию: абсолютный новичок в Zennoposter скачивает шаблон, осматривает его содержимое в разных вкладках вроде "переменные", "общий код", "входные настройки" и так далее. Получает кучу инфы, мимолетное описание, но как ему понять что именно делать с набором заготовок? Как применять? Что за что отвечает конкретно в Zennoposter? Какие взаимосвязи одного с другим? То что было описано в тексте и видео было подано несколько сжато (для новичка) и дает очень смутное представление. Хотелось бы получить немного более детальное предоставление информации.. Я уверен, шаблон очень полезный и я бы за него проголосовал.

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

Просто вспомните себя в то время, когда вы еще совсем ничего не знали. Судя по дате вашей регистрации в Zenno вы уже давно не новичок. Да, когда вы были им, было сложнее получить информацию, ведь не было никаких нейронок. Но и порог входа в тематику заработка на автоматизации скорее всего был гораздо ниже. Сейчас же совсем новичку достаточно сложно влиться в движуху и заработать первые деньги. Системы защиты, поисковые системы, фильтрация ботов повысились. Щит прогрессировал вместе с мечом и поднял планку. Новичкам приходится пытаться чрезвычайно быстро освоиться, если нет стартового капитала и фин. подушки. Иначе иди и херачь на условный завод.

На этом прекращаю эмоционировать.

Не смотря на всё что написал выше благодарю вас за проделанную работу! Видно что вы старались и выбрали важную тему. Спасибо!
 
  • Спасибо
Реакции: LaGir

LaGir

Client
Регистрация
01.10.2015
Сообщения
240
Благодарностей
972
Баллы
93
@Gotcha!
Благодарю за обратную связь!
Да, базовую информацию по использованию явно стоило чуть нагляднее показать. Попробую прям сейчас это сделать, на примере 2 ситуаций, когда эти заготовки могут помочь:
1) когда пользователь хочет создать новый шаблон на основе этих заготовок;
2) когда у пользователя есть какой-то созданный шаблон, и он хочет добавить в него те заготовки.

Рассмотрим, что именно нужно делать в каждом из этих случаев.

1. Создание шаблона на основе заготовок.

В данном случае всё предельно просто. Когда нужно создать новый шаблон, не нажимаем "Новый проект", а копируем шаблон с заготовками, и начинаем работу именно в нём. В том месте, где стоит кубик "Основная часть шаблона", и нужно начинать собирать свой проект из кубиков.

2025-05-10_21-32-51.jpg


Если брать простой пример с тестовым шаблоном, то результат должен выглядеть примерно таким:

2025-05-10_21-33-09.jpg


Заготовка-сниппет Start - наш вход, он между круглым Start и первым вашим кубиком.
Заготовка-сниппет End - наш выход, к нему надо вести стрелочки от крайних кубиков (в идеале и красные, и обычные - но тут больше зависит от специфики ваших шаблонов).


2. Внедрение заготовок в имеющийся шаблон.

Тут следующий порядок действий.
Из шаблона с заготовками в свой шаблон копируем:
  • сниппеты Start и End
  • блок "Общий код" снизу
  • переменные проекта
  • входные настройки (полностью блок при отсутствии своих, либо вручную те настройки, которые нужны вам)

2025-05-10_21-43-10.jpg


Далее, сниппет Start размещаем так же, как и в предыдущем случае (между круглым Start и первым вашим кубиком).
Сниппет End размещаем в любом месте, и ведём к нему стрелочки от всех выходов.
Если выходов слишком много, то можно просто повесить на него стрелки от Good End и Bad End.

2025-05-10_21-46-44.jpg


В конце концов, проверяем, не дублируют ли какие-либо части имеющегося шаблона то, что есть в заготовках (или наоборот). Удаляем дублирующие операции (при редактировании заготовок удобнее использовать "альтернативные сниппеты" из шаблона статьи). Тестим и дорабатываем по необходимости итоговый шаблон, если возникают какие-либо конфликты.


PS: для изображений использовался шаблон-пример из самого ZennoPoster, который лежит по умолчанию по такому пути:
%папка_с_zennoposter%\Progs\Samples\1. Simple registration.zp
 

LaGir

Client
Регистрация
01.10.2015
Сообщения
240
Благодарностей
972
Баллы
93
Просто вспомните себя в то время, когда вы еще совсем ничего не знали. Судя по дате вашей регистрации в Zenno вы уже давно не новичок. Да, когда вы были им, было сложнее получить информацию, ведь не было никаких нейронок. Но и порог входа в тематику заработка на автоматизации скорее всего был гораздо ниже. Сейчас же совсем новичку достаточно сложно влиться в движуху и заработать первые деньги. Системы защиты, поисковые системы, фильтрация ботов повысились. Щит прогрессировал вместе с мечом и поднял планку. Новичкам приходится пытаться чрезвычайно быстро освоиться, если нет стартового капитала и фин. подушки. Иначе иди и херачь на условный завод.
Именно по этому поводу тоже немного добавлю пояснения, почему описано так, как описано.
Под понятием "новичок" можно довольно разное понимать. В контексте раздела конкурсных статей и конкретно темы самостоятельной разработки шаблонов, по крайней мере лично я, подразумеваю не тех новичков, кто вчера узнал о существовании ZennoPoster. А тех, которые уже знакомы с его устройством (н-р использовали чужие шаблоны), плюс-минус знают кубики и/или официальную справку, создавали по крайней мере парочку своих относительно простых проектов (ну или же проходили любой из базовых видеокурсов по ZP).
Так как статья не про способ заработка и не с шаблоном для решения условной бизнес-задачи, то как будто она автоматически не очень подходит для "первой категории" новичков. Т.е. ориентировка на "вторую категорию" - у кого есть некая "база", но кому нужно и хочется развиваться/улучшать свои шаблоны дальше.
Возможно, данное определение новичка стоило указать в самой статье. Чисто имхо - описанного в первом дисклеймере статьи вполне достаточно, для понимания для кого это.
 

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