Текст площадки «Складчик». Упомянутые цены и обещанные результаты могут быть неактуальны; условия покупки проверяйте у продавца.
Долгое время библиотека SibboraHelper развивалась в составе другого моего продукта - ZennoPro Academy. В то время библиотека была (по моему мнению) скорее тестовым полигоном, чем полностью законченным решением. Тем не менее это не помешало тому чтобы на базе первой версии появилось множество проектов, в том числе и ком
Читать полное описание
Долгое время библиотека SibboraHelper развивалась в составе другого моего продукта - ZennoPro Academy. В то время библиотека была (по моему мнению) скорее тестовым полигоном, чем полностью законченным решением. Тем не менее это не помешало тому чтобы на базе первой версии появилось множество проектов, в том числе и коммерческих.
Вторая версия библиотеки призвана перевернуть всеобщее представление о процессе создания проектов ZennoPoster с использованием языка программирования C#. Основная идея, заложенная в SibboraHelper 2.0 - сместить фокус с программирования отдельных действий над переменными и объектами к программированию одной строкой отдельных операций на сайте.
В процессе разработки библиотеки была поставлена задача предоставить разработчикам проектов следующие возможности:
1) Адаптировать библиотеку для работы с конкретным сайтом;
2) Выполнять один и тот же код как с полной эмуляцией мыши и клавиатуры, так и без неё;
3) Реализовывать проверки состояния страницы одной строкой;
4) Использовать результаты предыдущих операций в последующих операциях;
5) Предоставлять разработчику выбор из нескольких вариантов для действий при неудаче;
6) Анализировать причины ошибок не на основе кратких логов, а на основе полной информации.
Давайте поговорим о каждом пункте подробнее.
1. Библиотека может быть приспособлена для работы с конкретным сайтом.
Казалось бы, что может быть проще чем найти на странице элемент с тегом input:checkbox, и кликнуть по нему? Или выбрать значение из выпадающего списка (теги select-opiton)? На древних сайтах - действительно всё относительно просто, хотя и там придётся сначала дождаться появления элемента на странице, после чего произвести над ним необходимое действие.
Но возьмите любой современный сложный сайт: соцсеть, буксу, доску объявлений, развлекательную платформу. Практически везде выпадающие списки - это набор дивов, не имеющий ничего общего со стандартной конструкцией select-option. Чекбоксы (input:radio) - скрыты и не отображаются на странице, а за их визуальное представление отвечают всё те же сложные структуры из дивов и спанов. Не говоря о том что есть такие элементы, как слайдеры (ползунки) или поля для быстрого поиска, при вводе в которых первых букв появляются предлагаемые варианты, по одному из которых необходимо кликнуть.
Да, работать с элементами на современных сайтах непросто. Но вот в чём соль: реализация однотипных элементов в рамках одного сайта - одинакова! А это значит, что научившись работать с одним слайдером, скажем, на авито, встретив затем слайдер на другой странице этого же сайта - вы с ним уже справитесь легко. Но вам по прежнему придётся копировать 10-20-50-100500 строк разработанного ранее кода в каждое место, где вы работаете с таким слайдером.
Что в данной ситуации делает для вас библиотека SibboraHelper 2.0? Она берёт на себя базовую логику работы со следующими типами элементов:
+ Поле для ввода;
+ Кнопка;
+ Чекбокс;
+ Группа радиобаттонов;
+ Выпадающий список;
+ Поле для ввода с отображением результатов поиска;
+ Слайдер (ползунок).
В базовую логику входит ожидание появления элемента на странице и установка его значения, а также сбор логов и фиксация вспомогательных параметров (об этом позже). Однако вы можете не только использовать уже заложенный в методах функционал, но и адаптировать его под конкретный сайт. Для этого вам нужно создать небольшой фрагмент кода, решающий три задачи:
- Определение текущего значения элемента данного типа;
- Определение видимости/невидимости этого элемента;
- Определение заблокированности элемента/его доступности для взаимодействия.
Создав этот фрагмент, вы подключаете его к библиотеке, и с этого момента библиотека умеет проверять необходимость действия до его совершения и успешность после его завершения исходя из структуры именно того сайта, с которым вы работаете.
В чём заключается мощь такого подхода? Для примера, для подачи объявления и для его редактирования на авито мной используется один и тот же код. Код просто не взаимодействует с элементами, состояние которых ему не нужно менять, плюс исключается ситуация, когда код выполнился, а одно из действий на странице почему-то не отразилось.
2. Выполнение одного и того же кода как с эмуляцией, так и без неё.
Эмуляция мыши и клавиатуры повышает "человекоподобность" поведения вашего бота, но при этом сильно замедляет его выполнение. При этом создание кода, использующего обычный метод (Click), и реализующего полную эмуляцию (FullEmulationMouseMoveToHtmlElement, FullEmulationMouseClick), строится совершенно по разному.
Библиотека SibboraHelper 2.0 позволяет написать код, в котором каждому действию на сайте будет соответствовать всего одна строка, а затем, изменяя всего одно настроечное свойство, выполнять данные действия как с полной эмуляцией мыши и клавиатуры, так и без таковых. Таким образом вы сможете включать полную эмуляцию в случае, если сервис начнёт массово блокировать аккаунты. И вам для этого не придётся переписывать код, нужно будет лишь изменить единственный параметр в настройках.
3. Быстрые проверки состояния страницы
Помимо действий над элементами страницы, не менее важным является правильное выстраивание ожидания необходимого состояния страницы. Что умеет делать библиотека в этом направлении? Она может ожидать:
+ Наличия/отсутствия на странице отдельного элемента;
+ Наличия/отсутствия на странице необходимого количества элементов;
+ Наличия/отсутствия на странице элементов, атрибуты которых соответствуют заданным параметрам;
+ Наличия на странице элементов, стилевое оформление которых отвечает заданным требованиям.
Благодаря этому в вашем коде будет меньше циклов, запутывающих его структуру.
4. Использование предыдущих результатов в последующих операциях
Этот пункт вытекает из предыдущего. Допустим, мы дождались загрузки на странице количества фотографий, большего чем 10. Но сколько точно картинок загрузилось? 11? 150? Точное количество вы сможете получить как результат предыдущей операции, и кроме этого, все эти картинки уже будут заботливо собраны для вас в объект класса HtmlElementCollection для последующего перебора.
5. Несколько вариантов действий при неудаче
6. Подробная информация для анализа ошибок
Что делает разработчик, отлаживая свой код? Зачастую пичкает его строками, выводящими информационные сообщения в лог. Но это слабо помогает, если ошибки возникают, например, каждое 10 выполнение проекта. Библиотека же собирает следующую информацию:
+ Базовая информация о результатах вызова каждого метода библиотеки с момента запуска проекта;
+ Скриншоты страницы до и после каждого действия с настраиваемой глубиной хранения;
+ Полные исходные коды страницы для каждого шага, также с настраиваемой глубиной хранения.
Всё это позволяет производить подробных анализ даже эпизодических ошибок, возникающих как у вас так и у покупателей ваших ботов.
Всё перечисленное выше позволяет очень быстро создавать проекты, которые затем очень легко сопровождать и развивать.
Что входит в состав продукта:
1) dll-библиотека, xml-файл со всплывающими подсказками;
2) документация в формате pdf;
3) видео с разбором всех методов;
4) демо-проект.
Кроме этого, покупатели получат следующие бонусы (из состава материала "ZennoPro Academy"):
1) Подкурс по XPath;
2) Материалы по основам языка программирования C#.
Первый бонус поможет разобраться с поиском целевых элементов на странице а второй - создать базу для тех, кто по разным причинам раньше избегал создания проектов на языке C#.
Порядок проведения складчины:
Проверяющие найдены, продукт будет выдан на проверку 7 февраля (в среду). Также к среде дополню данный текст примерами со скриншотами. Дальше, если с проверкой уложимся быстро, сбор ориентировочно на 15-20 февраля.
Важные моменты:
1. По минимальному уровню участников. Слоган "проекты на C# так же просто, как на кубиках" говорит о том что благодаря библиотеке вы сможете одной строкой кода задать очень сложную логику (здесь прямая аналогия с визуальным экшеном постера, который благодаря множеству возможных настроек может быть очень удобным универсальным средством по работе со страницей). Несмотря на то что в составе материала есть в том числе и бонус в виде раздела по основам C# из Академии - он больше предназначен для того чтобы участники могли освежить свои знания по написанию проектов на C#, но не осваивать их с нуля. Если вы ранее не создали ни одного проекта на C# - данный продукт пока не для вас.
2. По поддержке. В теме поддержки буду отвечать на вопросы по работе с библиотекой. Если не хватает базовых знаний - буду подсказывать где их получить, не более того;
Самое главное: для участников Академии первая коммерческая версия библиотеки будет на треть (на тысячу рублей) дешевле: 2500 рублей вместо 3500.
Дальше - в виде вопросов и ответов:
1) Чем первая версия второй ветки отличается от последней версии первой ветки, доступной в рамках академии?
- Основное: с использованием второй версии код получается намного более лаконичным, плюс механизма адаптации под конкретные сайты, методов по работе с чекбоксами и радиобатонами в первой версии не было. Больше вы сможете прочесть 07.02, когда будет обновлена шапка.
2) Почему продукт данной складчины не выдан в виде обновления в Академии?
- Только начиная Академию, я сразу писал что библиотека со временем превратится в отдельный коммерческий продукт. Последние несколько месяцев я работал над одним крупным проектом, который позволил переосмыслить концепцию и кардинально улучшить библиотеку. Во вторую версию вложено огромное количество сил, достаточное, чтобы сделать её отдельным продуктом.