Раздача [ZennoPoster] Швейцарский нож разработчика

930f2a068912.jpg


21518542733a.jpg
Проблемы при создании шаблонов?


В каждом шаблоне ZennoPoster приходится использовать однотипные действия будь то проверка или конвертация данных, которые пользователь указал во входных настройках, или же загрузка страниц и поиск элементов с последующей проверкой были ли они найдены.

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

Самые распространенные проблемы

dbbb60e1a195.jpg
Большой объем однотипного кода
dbbb60e1a195.jpg
Плохочитаемый код
dbbb60e1a195.jpg
Трудности с поиском и исправлением багов


c0324ae686b5.jpg


Продукт складчины состоит из следующего

- DLL файл библиотеки ZennoExtensions

- Файлы проекта с исходным кодом для самостоятельного изучения и доработки

- Документация и инструкции по использованию

- Демо шаблоны с примерами использования, открытые для просмотра

21518542733a.jpg
Что представляет из себя библиотека ZennoExtensions?

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

Содержимое

- Методы расширения для работы с типами ZennoPoster:

Instance, Project, Tab, HtmlElement, LocalVariable

- Модуль для работы с аккаунтами

- Модуль для работы с настройками браузера

- Модуль логирования

- Дополнительные классы-помощники

- Ниже будут рассмотрены примеры использования разных частей библиотеки.

9c1b58fe2dd0.jpg


Значительный функционал библиотеки представляет из себя набор методов расширения, благодаря чему можно напрямую работать с объектами стандартных классов ZennoPoster'а, не прибегая к созданию экземпляров сторонних классов.

Большинство из методов расширений в библиотеке реализованы в стиле Fluent Interface.

Что такое Fluent Interface

21518542733a.jpg
Методы расширения библиотеки

В библиотеке представлены методы расширения для следующих классов:
- Instance (ZennoLab.CommandCenter.Instance)
- Project (ZennoLab.InterfacesLibrary.ProjectModel.IZennoPosterProjectModel)
- LocalVariable (ZennoLab.InterfacesLibrary.ProjectModel.ILocalVariable)
- Tab (ZennoLab.CommandCenter.Tab)
- HtmlElement (ZennoLab.CommandCenter.HtmlElement)
- Некоторые системные типы

21518542733a.jpg
Проверка входных настроек

Рассмотрим использование методов расширения на примере проверки входных настроек шаблона.

Проверка входных настроек при запуске является хорошей практикой разработки шаблона.
Она несет следующие преимущества:

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

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

Здесь проверяются сразу 3 различных ситуации:

  1. Задал ли вообще пользователь файл с аккаунтами. Если файл задан, переходим ко второму шагу.
  2. Существует ли такой файл. Если файл существует, переходим к третьему шагу.
  3. Есть ли в файле содержимое.
В случае если какое-то условие не выполнено, будет выведено Warning сообщение в лог и выкинуто исключение (экшн завершится по ветви BadEnd). Сообщение можно не указывать, тогда будет выдано исключение с сообщение по умолчанию. Но ваши сообщения помогут пользователю лучше понять в чем именно проблема.

А вот как выглядит логика проверки без использования библиотеки.

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

8e28ee276d50.jpg


21518542733a.jpg
Мультилогер

В библиотеке представлен класс MultiLogger который позволяет удобно логировать в несколько мест одновременно. Одной строчкой кода вы можете записать сообщение в файл, вывести его пользователю в виде MessageBox и в лог ZennoPoster. Также можно добавить в мультилогер свой вариант логирования, например, в БД.

55a9dd0f52e0.jpg


21518542733a.jpg
Менеджер аккаунтов

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

Особенности
—————————————————————————————————
- Файл аккаунтов не подвергается изменениям
- Для файла аккаунтов создается свой файл конфигурации, в котором содержатся все необходимые данные для последовательного выполнения аккаунтов как при работе в одном, так и в нескольких потоках
- Аккаунты для работы распределяются равномерно - не возникнет такой ситуации, что один аккаунт отработает 10 раз, а другой 15
- Для каждого аккаунта можно сохранять дополнительную информацию


f425a3b485fd.jpg


21518542733a.jpg
Менеджер браузера

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


Генерируемые параметры
—————————————————————————————————
- Используемый браузер (Firefox, Chrome)
- Используемое устройство (на данный момент только Windows)
- Настройки браузера:
- Использование JavaScript
- Блокировка рекламы
- Использование веб хранилищ (LocalStorage, SessionStorage, Global Storage, Database Storage)
- Использование IndexedDB
- Использование WebGL
- Использование плагинов
- DoNotTrack
- Подмена часового пояса
- Эмуляция WebRTC
- Эмуляция Canvas
- Свойства навигатора и HTTP заголовки
- UserAgent
- Language


74eaa65e418c.jpg


21518542733a.jpg
Парсер строк

Данный класс-помощник позволяет в удобном формате работать с элементами строк. С помощью него можно дать возможность пользователям самостоятельно указывать формат используемых ресурсов. Это добавит гибкости в настройке и избавит от подстраивания используемых файлов под ваш шаблон.

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

login;password:proxy

6b52aa234768.jpg


Библиотека активно используется и дорабатывается. Участники складчины будут получать обновления бесплатно и смогут вносить предложения по доработке. Помимо самой библиотеки всем участникам будет также доступен проект Visual Studio с исходным кодом, что даст возможность изучать и дорабатывать функционал самостоятельно.

87144dd39cf3.jpg

Инструкция по разработке шаблонов через Visual Studio
Способы подключения библиотек к шаблону без использования ExternalAssemblies
Список полезных сервисов и инструментов для разработки
Подборка ссылок на обучающие материалы для самостоятельного изучения
Способы дополнительного заработка на шаблонах

Скачать [HIDEPL="20,20"]https://yadi.sk/d/ieFmKHcH3VXQm3 [/HIDEPL]
 

Рекламное сообщение
rt.jpg

💡 Вы когда-нибудь видели, чтобы по одному вашему запросу вам упали деньги на счет?

💸 Да-да, я сейчас не про банки и МФО, а про мецената с форума RuTOR, который раздает деньги просто за регистрацию и выполнение несложных условий.

Найдите Saraman'a на главной странице форума в чате, напишите "привет" и считайте, что бонус уже у вас в кармане!

💯 Деньги можно получать хоть каждый день!

💢 Заходите и убедитесь в этом самостоятельно! 💢
 



Обратите внимание

Назад
Сверху