This topic has been deleted. Only users with topic management privileges can see it.
Улучшения системы смены отпечатков.
В первую очередь данные улучшения касаются именно эмуляции мобильного браузера.
Сенсорный экран.
Добавлена эмуляция тачпада. Вот как это выглядит в режиме ручного управления:
Для перехода в новый режим достаточно применить мобильный отпечаток.
Чтобы проверить, используется ли эмуляция сенсорного экрана нужно посмотреть на курсор в режиме ручного управления. Если он имеет круглую форму, значит эмуляция включена.
Альтернативный способ — использовать действие «Режим сенсорного экрана». Но так как оно заменяет не все параметры касающиеся мобильных платформ, использовать его без отпечатка затруднительно.
Прокрутка экрана.
Реализована прокрутка экрана с помощью касания в режиме автоматизации:
Касания выполняются так, чтобы быть максимально похожими на движения человека.
Прокрутка происходит автоматически при использовании любых действий по работе с элементами, таких как: «Двигать Мышь И Кликнуть На Элемент», «Ввод текста», и т. д.
Для прокрутки к определенному элементу используйте действие «Двигать Мышь Над Элементом».
Для прокрутки к координатам, действие «Прокрутка» с параметром «Использовать колесо мыши или касания».
Если нужна горизонтальная прокрутка, подойдут действия «Начать Перетаскивание» и «Закончить Перетаскивание»:
Эмуляция событий.
Список событий, который получает сайт при использовании мобильного браузера значительно отличается от событий, который генерирует desktop. Кроме очевидного, как например, отсутствия событий передвижения мыши или появления тач событий, есть и менее очевидные вещи, например отсутствие keypress для некоторых клавиш, измененные параметры which, code для событий связанных с нажатием клавиш, и т. д.
Все эти особенности эмулируются BAS при переходе в новый режим.
Более того, некоторые клавиши, которые отсутствуют на мобильной клавиатуре можно использовать в BAS. При этом сайт не получит уведомления о произошедшем событии, но брaузер фактически выполнит функциональную часть. Например, если выполнить действие «Ввод» с параметром «<CONTROL>a» то текст в активном поле по факту выделится, но сайт не получит уведомлений о нажатии клавиш ctrl или a.
Использование «<CONTROL>a», «<CONTROL>c», «<CONTROL>v» или стрелок перемещения на клавиатуре является безопасным, потому что на мобильном тоже самое можно сделать с помощью специальных элементов интерфейса:
Использование других клавиш, таких как delete, page up, page down является менее безопасным, так как сайт теоретически может отследить изменения текста или положения экрана без причины повлекшей за собой эти изменения.
Протестировать список событий можно на данной странице:
https://data.bablosoft.com/events/
Внутренние методы браузера.
Многие внутренние методы браузера работают так, как если бы браузер запускался с мобильного устройства. Например:
-
document.createEvent('TouchEvent')
не будет выдавать ошибку только в мобильном браузере или в BAS с мобильным отпечатком. -
Событие ontouchstart не определено в десктопной версии.
И многое другое.
Причем все изменения сделаны на уровне браузера, а не внедрением javascript кода. Например, событие ontouchstart не только будет присутствовать в списке методов, но на него можно подписаться и получать уведомления.
Видео по работе с мобильным браузером: https://www.youtube.com/watch?v=iLU1PlIeoPA
Новые факторы отпечатков.
Добавлены новые факторы: список голосов для синтеза речи установленных в системе, объем оперативной памяти.
Улучшение окна выбора переменных.
В этой версии мы постарались сделать выбор переменных, ресурсов и функций максимально удобным для пользователя.
- Был добавлен поиск переменных.
- Новое окно с списком переменных и последними использованными переменными.
- Последние переменные в списке меню.
- Создание новых переменных из нового окна.
Все это позволяет сократить количество кликов для выбора переменной. Если вы использовали ее недавно, то для выбора необходимо всего 2 клика: по полю для вставки и по самой переменной.
Все эти изменения также касаются ресурсов.
Работа с новой версией стала значительно удобней, например, вот как просто вывести текущий урл в лог в новой версии:
Разработкой занимался @Oyasumi-Punpun
Добавлен Excel модуль.
Модуль позволяет работать с excel файлами: читать/изменять как отдельные ячейки, так и столбики, листы, работать с разными типами данных, импорт/экспорт в ресурсы или json, работать со списком листов, формулами, стилями, поддерживает многопоточность, асинхронный и синхронный тип сохранения файлов.
Разработкой модуля занимался @GhostZ
Как обстоят дела с Perfect Canvas у мобильных устройств?
Как обстоят дела с анонимностью у мобильных отпечатков, типо разрешений камеры, микрофона и т.д?
Как обстоят дела с тем что мобильный браузер часто предлагает перейти в приложение? Что вернет браузер на запрос такой?
Думал не доживу до этого события)))) Разработчику как обычно респект. Теперь ждем смену движка)
@FastSpace
Как обстоят дела с Perfect Canvas у мобильных устройств?
Ничем не отличаются от обычных.
Как обстоят дела с анонимностью у мобильных отпечатков, типо разрешений камеры, микрофона и т.д?
Без изменений.
Permission API.
Данное апи выдает результаты как в реальном Chrome браузере. Получение разрешений для уведомлений и геолокации соответствуют выбранным пользователем настройкам.
Как обстоят дела с тем что мобильный браузер часто предлагает перейти в приложение? Что вернет отпечаток на запрос такой?
Ну сайт отправит на урл с протоколом, который браузер не сможет открыть. А что вы хотели чтобы происходило?
@support said in Выпущена 23.2.0 версия BrowserAutomationStudio:
Данное апи выдает результаты как в реальном Chrome браузере. Получение разрешений для уведомлений и геолокации соответствуют выбранным пользователем настройкам.
Для уведомлений и геолокации. Я про другое, ладно я попозже скачаю проверю.
@support said in Выпущена 23.2.0 версия BrowserAutomationStudio:
Ну сайт отправит на урл с протоколом, который браузер не сможет открыть. А что вы хотели чтобы происходило?
И что произойдет? Браузер зависнет белым экраном? Стоило бы отвергать такие предложения.
@artSamDev said in Выпущена 23.2.0 версия BrowserAutomationStudio:
Теперь ждем смену движка)
Да, как раз сейчас этим буду заниматься. Нужно еще посмотреть, что происходит здесь https://bitbucket.org/chromiumembedded/cef/issues/2969/support-chrome-windows-with-cef-callbacks, но 99% процентов, что CEF будет использоваться, только для интерфейса, а автоматизация и любая работа с браузером будет происходить с кастомной сборкой Chromium с некоторыми фишками Chrome.
Это сильно улучшит аутентичность браузера и сильно уменьшит проблемы при обновлении версии браузера.
@FastSpace Если найдете что-то существенное, пишите. Я добавлю в патче.
@support Как всегда огонь) Большое Спасибо!
Очень нужная функция,спасибо.Так же жду возможные обновления движка,а то на базе хрома часть функций прост не работает (.
@WinTarOgar said in Выпущена 23.2.0 версия BrowserAutomationStudio:
а то на базе хрома часть функций прост не работает (.
Можно подробнее?
@support Спасибо за отличное обновление!
При попытке отмены действия загрузки кук из браузера в http клиент в режиме записи, БАС намертво зависает.
К примеру: возьмём очень жирный профиль. Попытаемся загрузить все куки из него в http клиент. На каком-то моменте нам становиться лень ждать, пока все куки догрузяться, либо же нам надо отменить действие по каким-либо другим причинам. Нажимаем на кнопку отмены — БАС зависает:
Это на гифке показано небольшое время зависания. В действительности я ждал где-то минут 5, и оно так и не отвисло. Пришлось через диспетчер задач процесс БАСа вырубать. Просьба пофиксить. Версия, понятное дело, 23.2
(Загрузка 92%) БАГ: Если в поиск по скрипту вписывать что-то, то он находит и подсвечивает его. Но не переводит на этот элемент.
https://youtu.be/F5ZYKg5_Mqg
На видео видно как не находит при листании вперёд.
При листании назад находит лишь первый элемент.
После ничего не ищет.
Огого вот это релиз спасибо большое, очень долго ждал, пошел тестить.
Появились вопросы —
-
Я так понимаю без ключа фингрепринта ничего потестить не получится ? Так как если выбирать Android, Chrome — то попросит ключ.
-
Можно ли использовать старые мобильные отпечатки ?
@Bigma Можно в настройках браузера включить сенсорный режим. Конечно палево для сайтов, но пощупать можно
@UserTrue да это я понял, мне интересно, что то там принципиально в отпечатках добавляется и прийдется собирать новые отпечатки под мобильники ? Но это скорее не к тебе вопрос. Пусть лучше разработчик ответит.
Если открыть окно браузера, то почти невозможно менять его размер, только в левом верхнем углу и при этом курсор не меняется.
Windows 10 Pro x64
Отличное обновление. Очень понравился интерфейс переменных. Но в попытке сократить количество кликов, вылезла другая проблема. К примеру, кликаю на строку, чтобы открыть список с переменными. Нажимаю на плюсик, чтобы создать новую переменную. Если передумал и нажимаю отмену, то возвращает не обратно к списку с переменными, а к окну с действиями в выбранном разделе.
Нахватает кнопки назад, в окне со списком переменной. Либо сместить крестик у строки поиска, который возвращает назад, влево, потому что находится в другой части экрана, так же можно было бы вместо крестика сделать строку размером со строки поиска при клике на которую возвращает назад. Сугубо мое мнение, вы уж смотрите сами. Спасибо за обновление.
Если выбрать вставку ресурса, перейти в список с ресурсами и нажать плюсик, то вылезет окно, где пишут, как можно создать ресурс. Можно было бы добавить в этом же окне экшен «Создать ресурс» и предложить альтернативу с ресурсом из панели ресурсов. Или если список с ресурсами пуст, то по-умолчанию был бы текст, где пишет, как его создать
Спасибо за обновление.
Как посоветуете работать со встроенным модулем «Эмуляция бездействия» или как наиболее просто запрограммировать случайную прокрутку на мобильных отпечатках? Сейчас этот модуль просто меняет расположение страницы на + — 50 пикселей без тача.
В новой версии был осуществлен переход на новый браузерный движок. Это означает, что архитектура проекта значительно изменилась, теперь автоматизация браузера работает так:
1) В начале работы потока в фоне запускается экземпляр браузера.
2) Данный экземпляр ничем не уступает обычному браузеру и не имеет тех ограничений, что раньше.
3) Браузер управляется BAS с помощью стабильного протокола поддерживаемого Google.
4) Действия BAS по работе с браузером не изменились.Что получают наши пользователи?
Такую автоматизацию очень сложно обнаружить. Можно делать это по косвенным признакам, таким как: повторение одних и тех же действий, неправдоподобные паузы между действиями, и т. д. Но сделать это отсутствию какого-то функционала уже крайне проблематично, а система смены отпечатков затрудняет сбор информации об оборудовании.
Старые проекты BAS легко портировать. Несмотря на то, что внутри софта поменялось очень многое, кое что было и совсем переписано с нуля, портировать старый проект просто. В некоторых случаях достаточно открыть его в новой версии, есть небольшие исключения, они описаны ниже.
Новые возможности. Новая система управления браузером дает также и возможности добавить новые фичи. Некоторые уже добавлены сейчас, некоторые мы надеемся добавить позже.
Поддержка расширений.
В новой версии появилась возможность подключать расширения браузера. Для этого нужно:
1) Скачать расширение с помощью этой утилиты. При сохранении нужно выбрать zip.
2) Разархивировать в любую папку.
3) Указать эту папку в действии «Настройки Браузера».К сожалению пока работа с интерфейсом расширения не поддерживается. Планируется реализовать это в следующих версиях.
Обновление версии браузера в будущем.
Очень важным фактором аутентичности браузера является наличие всех методов, классов, констант javascript. Иначе говоря, если версия движка старая — это можно обнаружить. Чтобы избежать этого, планируется обновлять браузер достаточно часто. В идеале, это будет делаться каждый месяц вместе с обновлением Chrome.
Для обеспечения постоянных обновлений было написаны тесты для действий по работе с браузером, была добавлена подробная документация по каждому патчу, улучшены инструменты для внедрения патчей, в ближайшее время будут написаны тесты для изменения отпечатков.
Переход на новый движок так же поможет в этом деле. Багов автоматизации при обновлении версии браузера в нем ожидается значительно меньше.
Тест piхеlscan.
Многие наши пользователи спрашивали об этом тесте, сейчас BAS успешно его проходит, для этого:
1) Нужно сменить отпечаток с помощью сервиса FingerprintSwitcher.
2) Разрешить получать данные canvas и webgl в действии «Настройки Браузера» ИЛИ использовать PerfectCanvasНа момент написания статьи в тесте есть баг. Обычный браузер определяется как фреймворк для автоматизации, скрин. Происходит так потому, что совсем недавно свойство navigator.webdriver в обычном Chrome поменяло значение с undefined на false и тест не успели обновить. В данном случае, BAS также определяется как фреймворк для автоматизации, так же как и обычный Chrome.
Еще один момент, при использовании прокси в данном тесте, нужно иметь резидентский ip.
В новой версии «родные» данные canvas не являются уникальными, это можно проверить на странице https://browserleaks.com/canvas
Оптимизации в работе CPU.
Дополнительная нагрузка на процессор по сравнению с обычным Chrome может возникать при постоянной передаче изображения из браузера в BAS. Снизить ее оказалось совсем не простой задачей, для этого был переписан протокол передачи данных. Оригинальная версия тратила время на сжатие данные и передачу их по websocket, этот подход давал просто неприличные результаты при большой частоте кадров.
Новый протокол помог, но решение все еще не было совершенным. Поэтому был добавлен адаптивное снижение частоты кадров. Если пользователь активирует браузер — fps повышается, при сворачивании браузера, он снова падает. Данный метод помогает значительно снижать нагрузку в многопотоке, а также не является опасным для выполнения скриптов, поскольку оптимизация не затрагивает никакой другой части браузера кроме передачи изображения.
Если хотите узнать больше, рекомендую ознакомиться с видео https://www.youtube.com/watch?v=GHYMfwFJiHY&t=1279s
Оптимизация использования жесткого диска.
Размер профилей был значительно уменьшен по сравнению с обычным браузером.
1) Отключен Crashpad.
2) Отключена метрика браузера. Используется для получения сведений об удобстве использования браузера.
3) В файл chrome_command_line.txt добавлены флаги запрещающие некоторые виды кеша. Это можно отключить отредактировав файл.Размер профилей сказался позитивно не только на количестве используемого дискового пространства, но и на времени запуска потока.
Widevine
В новой версии widevine нужно включать в настройках, либо в действии «Настройки Браузера». К сожалению, лицензирование BAS не произведено, поэтому сайты вроде spotify воспроизводить контент не будут.
Действие «Яваскрипт»
Добавлено новое действие «Яваскрипт», как и старое, оно может выполнять код в контексте браузера, но делает это намного качественней:
1) Добавлена работа с переменными BAS.
2) Ожидание асинхронных действий.
3) Получение информации об исключениях.Старое действие продолжит работать, но теперь оно считается устаревшим.
Установка referrer.
Установка referrer теперь производится через действие «Загрузить» или «Добавить вкладку». Это нужно учитывать при портировании проекта.
Смайлики.
В новой версии добавлена поддержка смайликов при вводе текста. Такой метод ввода все равно не является достоверным, потому что смайликов нет на клавиатуре, а следовательно события keyup, keydown и keypress не эмулируются.
Наличие смайликов в ресурсах проекта не позволит скомпилировать проект с защитой.
Ввод символов состоящих из 4 байт еще не реализован, сюда относятся флаги стран.
Новые факторы отпечатка.
Для новой версии были добавлены новые факторы отпечатка. База еще не успела обновиться, поэтому рекомендуется использовать отпечатки не старше 2 недель.
Обновления модулей.
Были добавлены новые модули «Строка» и «SQL». Первый расширяет возможности BAS по работе со строками, есть действия для форматирования, редактирования, поиска строк, а также для парсинга текста. Второй — позволяет работать с популярными SQL базами данных: mysql, mariadb, postgres, sqlite, mssql. Есть возможность выполнять примитивные действия не вникая в синтаксис, а также выполнять произвольные запросы к базе.
Ограничения новой версии.
Некоторые вещи мы сделать не успели.
1) Drag and Drop не поддерживается. Это значит что ползунок громкости в видео плеере перетащить можно, но перетащить файл в браузер пока нет.
2) Запись http запросов пока не работает https://i.imgur.com/P1JxkxC.png.
3) Отображение элементов select пока не работает https://i.imgur.com/ZkDmTBy.png. Но само значение элемента выбрать можно.
4) HTTP аутентификация пока не работает.
5) Отображение разных типов курсоров пока не работает https://i.imgur.com/fVAHclk.png
6) Инструменты разработчика открываются в системном браузере в отдельном окне.
7) Открыть инструменты разработчика для конкретного элемента пока невозможно.Это не самые важные вещи, поэтому откладывать выпуск версии до их завершения нецелесообразно. Тем не менее, все они будут исправлены в будущих релизах.
Достижение максимальной аутентичности.
Если сайту все равно удается обнаружить новую версию BAS и вы уверены, что дело не в прокси, не в номере телефона, последовательности действий, а именно в браузере, то вот список действий, которые необходимо предпринять:
1) Убедитесь, что в хроме в режиме инкогнито или с новым профилем проблема повторяется.
2) Отключите модуль AjaxReCaptcha2. Увы, его можно обнаружить.
3) Отключите защиту canvas, webgl либо используйте PerfectCanvas.
4) Попробуйте выполнить действия в режиме ручного управления(без автоматизации).Если ничего не помогло, используйте алгоритм в этой теме https://community.bablosoft.com/topic/12198/.
Как портировать старый проект.
Для этого нужно открыть старый проект в новой версии и внести такие изменения:
1) Все действия «Установить заголовок» с параметром «Referer» нужно заменить на действия «Загрузить» либо «Добавить вкладку».
2) Пересоздать действия: «Сброс», «Установить Значение Комбобокса», «Установить Индекс Комбобокса», «Выбрать Случайный Элемент Из Комбобокса», «Предыдущая Страница», «Добавить вкладку», «Проверить Существование»Нужно помнить, что формат cookies и профилей изменился. Если проект полагается на использование профилей старого формата, их нужно обновить.
Дальнейшее развитие проекта.
Планы по дальнейшему развитию браузера следующие:
1) Обновить версию браузера до 90. Развивать инструменты ускоряющие обновление.
2) Вернуть возможности, которые не были перенесены в новую версию. Добавить взаимодействие с интерфейсом расширений, в том числе и автоматизацию.
3) Адаптировать PerfectCanvas для webgl, разрешить сбор данных в индивидуальном порядке.План может меняться со временем.
В видео многие особенности новой версии показаны детальней https://www.youtube.com/watch?v=GHYMfwFJiHY.
!ВАЖНО Обладатели 32-битной версии Windows не смогут обновиться в автоматическом порядке. После скачивания произойдет краш. Новую версию нужно перекачать. Для 64-битной версии проблем не будет.
This repository is not updated regularly, if you want actual source code, check out premium version https://bablosoft.com/shop/BASPremium
Browser Automation Studio
BrowserAutomationStudio is a solution that allows you to quickly create applications using browser, http client, email client, and other libraries. Programming skills are not required. Main application types: creation of posters, spammers, parsers, uploaders, apps for the social networks.
Projects compiled with BAS are standalone executables and does not require any other software installed on your PC(including BAS).
Software operates like macro recorder: all actions that a user makes are recorded and can be played or edited afterwards.
BrowserAutomationStudio supports arbitrary javascript execution.
Here is how main window look like:
This is compiled script user interface:
Visual editor to generate javascript expression:
Account manager:
Features
- Absolutely 100% Free.
- Can create standalone bots in two clicks.
- Well documented.
- No coding skills required! Code in visual constructor.
- Drag&Drop actions.
- Conditions, loops.
- Easy and powerful multithreading.
- Visual expression editor.
- Supports socks and http proxies.
- Captcha services integration including ReCaptcha 2.0 and invisible ReCaptcha.
- Capmonster 2 integration.
- Captcha sniper integration.
- Receive sms modules.
- Email module. Search in mailbox.
- 100% browser emulation with chrome.
- Emulate other browsers with fingerprint switcher module.
- Native mouse click and move. Native keyboard emulation.
- Tabs support.
- Frames support.
- Easy drag & drop.
- Special keys emulation: Tab, Ctrl, etc.
- Disabled ip tracking through WebRTC.
- Timezone change.
- Very fast http client(up to 2000 threads).
- User interface constructor.
- Load data from file/url/string. Delete lines, mix.
- Random string generator(tags).
- Works with database. Powerful database editor.
- Regular expressions.
- Xpath queries.
- Image queries.
- Spintax.
- Ability to write your own actions in javascript.
- Supports flash(can be disabled).
- Custom css, xpath, text queries.
- Developer tools integration.
- Network filters and cache captures.
- Autoupdater.
- Application store.
- Extendable module system. Write your own in javascript or c++.
Download
Download from https://bablosoft.com/shop/BrowserAutomationStudio
Compile
See instructions: https://wiki.bablosoft.com/doku.php?id=how_can_i_change_bas_and_compile
Learn how to use it
Read wiki https://wiki.bablosoft.com/
Kriket
Гарант BLB.team[TG GODS]
-
#1
Всем привет, это первая статья из цикла работы с Browser Automation Studio — в дальнейшем просто BAS
Что же такое Browser Automation Studio?
Если простыми словами, это автоматизация любых процессов в браузере, все что можно сделать руками в браузере, можно повторить в BAS!
Но это не просто кликер, функционал огромен, поддерживает прокси, отпечатки браузеров, юзер агенты, может перехватывать запросы и т.д.
Перечислять можно очень долго, но поверьте если вы не хотите взломать Пентагон а задачи чуть попроще, вам хватит того что есть в стандартном функционале!
Что можно сделать на BAS?
ну например я делал:
- Комбайн по работе с яндекс дзен (накрутка, клики по рекламе, подписки, комменты и т.д.)
- Регер аккаунтов в Дискорд
- Парсер авито (веб и пост гет)
- Граббер постов для ВК
- Чекер телефонов на наличие регистрации в телеграм
- Регистратор аккаунтов инстаграм
- Накрутчик просмотров в телеграмме, который работает без аккаунтов (Posr Get)
- Софт для создания редиректов на 10 бесплатных сервисах (goo.gl, vk.cc, u.to и т.д.)
- Чекер гифтов на валидность (post get)
- Различные сборщики крипты с кранов как веб так и на запросах
Это только те проекты которые я вспомнил на ходу, если подумать список будет длиннее раза в 4)
Так вот к чему я это, не для того что бы похвастаться, а показать что делать можно все что угодно, из ограничений — только ваша фантазия)
В следующих статьях буду показывать и рассказывать как что делать) Пойдем от простого к сложному, но если у вас есть вопросы, задавайте их в этой теме и скорее всего в ближайшее время выйдет статья посвященная этому вопросу!
С уважением. Kriket
-
#2
Можно ли регистрировать аккаунты гугл адс и запускать рекламу с помощью BAS?
Kriket
Гарант BLB.team[TG GODS]
-
#3
Можно ли регистрировать аккаунты гугл адс и запускать рекламу с помощью BAS?
конечно можно, все что можно сделать руками в браузере, можно автоматизировать через BAS
-
#4
Накрутчик просмотров в телеграмме, который работает без аккаунтов (Posr Get)
можно немного информации
This short tutorial is about automating Internet Explorer browser from an Excel VBA macro using Open Twebst, an open source IE automation framework.
- download and install Open Twebst from: http://codecentrix.com/download.html
- start recording your web actions and choose VBA code generator
- open Excel, create an workbook and insert a new macro: View/Macros/View Macros => fill out a Macro name + Create
- copy the VBA code from Twebst recorder window and paste it into VBA macro editor
- add reference to Open Twebst library from Excel VBA macro editor: Tools/References => Open Twebst 1.0 Type Library
- save the workbook; choose Excel Macro-Enabled Workbook (*.xslm) type in Save dialog box
Here is the whole story in pictures:
Введение
СКАЧИВАЙТЕ И ИСПОЛЬЗУЙТЕ
BROWSER AUTOMATION STUDIO
Этот гайд был разработан с целью помочь новичкам более быстро и эффективно освоить BAS. Все модули, экшн-блоки, функции и сценарии используются внутри конструктора.
Устанавливайте и начинайте творить!
Об авторе
Меня зовут Павел Дуглас и я профессиональный RPA-Developer и успешный digitаl-предприниматель. Одним из инструментов автоматизации для меня является BAS.
С помощью BAS за 3.5 года я:
• разработал 888+ ботов разных задач
• заработал 4 867 198+ руб. чистой прибыли
• автоматизировал все бизнес процессы
• вышел на постоянный пассивный доход
Кроме этого я основал свою онлайн-школу по BAS, маркетплейс авто-ботов DefiNova, являюсь автором многих онлайн-проектов в интернете, имею сотни кейсов в сфере автоматизации.
Я помог сотням разных клиентов внедрить автоматизацию в их бизнес и онлайн-заработок.
Хочу выразить огромную благодарность разработчикам BAS и его команде за то, что сделали такой колоссальный вклад и разработали действительно лучший инструмент автоматизации на рынке.
Это пособие для тех, кто хочет освоить новую IТ-профессию и стать ВАS-разработчиком в кратчайшие сроки.
А теперь не буду вас задерживать, погружайтесь и жадно изучайте BAS, ведь это действительно наше будущее!
Как использовать гайд? ГЛАВНАЯ ЦЕЛЬ ГАЙДА: «БЕРИ И АВТОМАТИЗИРУЙ»
Многие новички в Browser Automation Studio задают множество вопросов по модулям, действиям, даже элементарно не могут найти нужный блок для своих скриптов. Также главной проблемой является то, что многие не понимают как применить автоматизацию в повседневных рутинных операциях.
В главе №1 вы познакомитесь с модулями BAS и поймете как они устроены.
В главе №2 вы узнаете об экшн-блоках и их применении.
В главе №З вы узнаете о функциях, куда помещаются экшн-блоки.
И наконец в главе №4 вы узнаете об основных вариантах применения автоматизации в интернет-деятельности.
КАЖДАЯ ИЗ ГЛАВ НЕСЁТ ПРАКТИЧЕСКУЮ ИНФОРМАЦИЮ
Эта книга не расскажет «Как» создавать сценарии автоматизации на Browser Automation Studio, но она покажет правильный путь освоения конструктора. Самое важное на первом этапе – это изучить основные компоненты и модули BAS прежде чем начать творить.
На втором этапе – это понять на конкретных примерах где можно применить автоматизацию.
И на третьем этапе – автоматизировать все рутинные процессы для своих, а после и пользовательских нужд.
Пройдите все этапы и изучите BAS.
ВСЕГДА ДЕРЖИТЕ ГАЙД ПОД РУКОЙ И ПОЛЬЗУЙТЕСЬ ВО ВРЕМЯ ПОЛЬЗОВАНИЯ КОНСТРУКТОРОМ.
Представьте, что весь сценарий автоматизации строится на кубиках «LEGO». Вы наверняка в детстве любили это занятие и вот сейчас настало время вспомнить и уподобиться фантазии ребёнка.
Я собираюсь поведать вам о нескольких видах автоматических сценариев, которые применяю сам каждый день. Но это лишь малая часть из того, что можно вообще представить…
С помощью BAS вы можете даже зажечь лампочку вашего холодильника если захотите, ваша фантазия не должна ограничиваться лишь моими примерами.
Но примеры авто-сценариев вам помогут быстрее и проще начать осваивать Browser Automation Studio.
Модули·-> Экшн-блоки·-> Функции -> Авто-Сценарии BAS WORKLAB СТРУКТУРА BAS
Модули
Экшн-блоки
Функции
Авто-сценарии
Типы взаимодействия в BAS
BAS внутри имеет 2 разных типа взаимодействия с сайтами:
1. Открытие URL страниц в браузере (обычная загрузка страниц как в вашем обычном браузере на ПК)
2. Посыл запросов к серверу веб-страниц напрямую без открытия страниц в браузере и отрисовки визуальной составляющей.
Когда какой тип взаимодействия использовать?
Следует понимать, что загрузка страницы в браузере нагружает ресурсы компьютера, следовательно, больше 100-200 потоков работать не получится.
Если же вам необходима работа в 1 000 потоков и более, то следует использовать НТТР-клиент, который оптимизирован под такие нагрузки и работает полностью без браузера.
Параметры максимального быстродействия мыши
Глава 1. Модули BAS
«Системы состоят из подсистем, подсистемы – из под подсистем и так до бесконечности – именно поэтому мы проектируем снизу вврх.»
Алан Перлис
Представьте, что вы идете в магазин и берете с собой корзину для продуктов. В лего магазине в красивой коробке и вы его положили в корзину. Но коробка то не пустая, а состоит из маленьких деталей LEGO.
Корзина это и есть модуль в BAS, в которую вы кладете наборы с лего (функции). И каждый по себе отдельный набор вмещает маленькие части конструктора LEGO (действия экшн-блоки).
Каждый модуль уникален и содержит в себе необходимые компоненты (экшн-блоки), которые вы будете использовать при создании функций и автоматических сценариев.
Основные модули Концепция модульной структуры
НАБОР ДЕЙСТВИЙ
Разработчик использует набор действий для решения какой-либо задачи
ФУНКЦИЯ
Действия помещаются е специальные контейнеры для многократных вызовов с параметрами
МОДУЛЬ
Из функций создаются специальные блоки именуемые модулями для подключения к проектам
Модули в BAS делятся на 2 основных вида:
• Основные
• Дополнительные
Основные модули — это набор экшн-блоков, которые вы будете использовать в автоматизации чаще всего.
К основным модулям относятся: браузер, логика скрипта, инструменты, сеть, ожидание, HTTP-клиент, дата и время, файловая система, смена отпечатков браузера, список, путь, работа с профилями, ресурсы, строка, XPATH, JSON, статистика скрипта, регулярные выражения.
Каждый из этих модулей помогает решить конкретную задачу. Например, модуль браузер позволяет вызывать действие «Загрузить», которое загружает указанный вами сайт по URL.
Все из этих модулей мы разберем по отдельности и посмотрим для каких еще функций они предназначены.
Дополнительные модули – это набор экшн-блоков, которые вы будете использовать по мере необходимости и без них вполне можно обойтись если перед вами не стоит конкретной задачи по их использованию.
К ним относятся: открыть/закрыть браузер, буфер обмена, эмуляция бездействия, асинхронный вызов функций, обработка изображений, почта, подтверждение телефона, управление процессами, отправить письмо, Telegram, часовой пояс, взаимодействие с пользователем, встроенные языки, Excel, База данных, URL, контрольная сумма, архивация, FTP, SQL.
Например, модуль обработка изображений помогает редактировать загруженные фотографии и накладывать на них любой текст. Модуль Telegram служит для отправки уведомлений в удобный мессенджер.
Модуль BROWSER AUTOMATION STUDIO
Модуль «Браузер» служит для работы с действиями (экшн-блоками), которые не требуют конкретного элемента для применения в браузере.
К модулю «Браузер» относятся следующие действия: загрузить, текущий URL, предыдущая страница, код страницы, ввод текста, разрешение, получить разрешение и положение курсора, прокси, яваскрипт, выполнять при каждой загрузке страницы, сброс, диалог открыть файл, начать перетягивать файл, окно prompt, http аутентификация, прокрутка, скриншот, решить капчу, recaptcha v3, решить капчу кликами, решено неверно, таймаут, настройки браузера, нажать кнопку расширения, режим сенсорного экрана, настройки мыши, уведомления.
В будущем этот список будет дополнятся, поскольку могут появится новые функции и действия.
В модуле «Браузер» предостаточно действий чтобы уже создать простейшего бота.
Однако каждое из действий необходимо комбинировать между собой, чтобы получился полноценный сценарий автоматизации.
Модуль логика скрипта
Модуль «Логика Скрипта» служит для выполнения условий, циклов, установки локальных и глобальных переменных, их суммирования, вызова функций в 1 и более потоков, завершения работы потоков в успешном и неудачном видах, а также для прерывания скрипта.
К модулю «Логика Скрипта» относятся следующие действия: IF, WHILE, FOR, FOREACH, Break, Continue, Success, Fail, Прервать Скрипт, Установить Метку, Перейти к Метке, Игнорировать Ошибки, Установить Переменную, Увеличить Переменную, Установить Глобальную Переменную, Увеличить Глобал. Переменную,
Вызов Функции, Получить Параметр Функции, Return, Вызов Функции в Несколько Потоков.
Этот модуль вы будете очень часто использовать в своей работе автоматизатора, поскольку вам предстоит работа с циклами, переменными и условиями, а еще с вызовами функций.
Но не волнуйтесь, дальше я расскажу подробнее о каждом действии, чтобы вам было понятно для чего они используются и как их применять.
Модуль инструменты
Модуль «Инструменты» служит для отображения полезной информации в лог, вывода результатов работы скрипта, выполнения кода Javascript внутри сценария, парсинга строки, и генерации случайных чисел.
В состав модуля входят следующие действия: лог, очистить лог, результат, выполнить код, парсить строку, случайное число.
Модуль сеть
Модуль «Сеть» служит для работы с сетевыми параметрами браузера такими как: кэш и его элементы, cookies, заголовки браузера, маски и статусы запросов, запреты и разрешения загрузок файлов и всплывающих окон.
В состав модуля входят: установить заголовок, сохранить и загрузить cookies, загрузить cookies из http клиента, разрешить кэш, запретить кэш, разрешать запрос, запретить запрос, очистить кэш. данные, очистить маски, получить статус запроса, был ли запрос, получить последний элемент кэша, получить все элементы кэша, запретить и разрешить всплывающие окна и загрузку файлов.
Модуль ожидание
Модуль «Ожидание» служит для вызова пауз между действиями ваших автоматических сценариев, для ожидания селекторов, текстов, загрузки файлов, адреса браузера, загрузки определенного URL сайта, а также для полной загрузки страницы.
Модуль сравнительно небольшой и содержит: ждать полной загрузки, ждать загрузки URL, ждать адреса браузера, ждать текст, ждать CSS, ждать загрузки файла, сон.
Модуль http-клиент
Модуль «Http-Клиент» служит для работы с запросами к веб-серверу и сайту, минуя его визуальную составляющую. То есть работа ведется целиком без браузера.
Модуль пользуется популярностью у профессиональных разработчиков, кто хорошо понимает серверную часть сайтов и умеет с ней взаимодействовать.
В модуле присутствуют следующие действия: HTTP-клиент прокси, клиент-сброс, Get-запрос, Post-запрос, Скачать, Текущий URL, содержание ответа, статус ответа, получить заголовок, установить заголовок, очистить заголовки, сохранить и загрузить cookies, загрузить cookies из браузера, завершить работу после ошибки, была ли ошибка, получить текст ошибки, Xpath получить XML, каждый XML, получить текст, получить каждый текст, получить кол-во элементов, проверить существование.
HTTP-запросы на начальном этапе вам не потребуются, поскольку практически все задачи выполняются через браузер, но это займет немного больше времени.
Модуль дата и время
Модуль «Дата и Время» позволяет гибко работать с датами и временем.
BAS использует своё собственное представление даты и времени.
Количество миллисекунд при преобразовании отсчитывается с 1 января 1970 года, 00:00:00 UTC.
Моментом начала отсчёта считается полночь (по UTC) с 31 декабря 1969 года на 1 января 1970, время с этого момента называют «эрой UNIX» (англ. Unix Epoch).
UNIX-время – способ кодирования времени, принятый в операционных системах.
Время UNIX согласуется с UTC.
Способ хранения времени в виде количества секунд очень удобно использовать при сравнении дат (с точностью до секунды), а также для хранения дат: при необходимости их можно преобразовать в любой удобно-читаемый формат.
Дата и время в этом формате также занимают очень мало места (4 или 8 байтов, в зависимости от размера машинного слова), поэтому его разумно использовать для хранения больших объёмов дат. В большинстве случаев эффективнее хранить время в виде одной величины, а не набора полей.
Модуль «Дата и Время» богат своими действиям: строку в дату и обратно, миллисекунды в дату и обратно, создать дату, изменить дату, добавить секунды к дате, разница между датами, дата сейчас, изменить и получить часовой пояс, день месяца, недели, года, получить год, месяц, часы, минуты, секунды и миллисекунды из даты.
Если вы планируете вызывать скрипт по определенному времени, то этот модуль вам идеально подойдет. Либо вы можете воспользоваться встроенным планировщиком задач.
Модуль файловая система
Модуль создан для упрощения работы с файлами на вашем компьютере.
Сюда включены важные действия такие как: читать файл, запись в файл, информация о файле/папке, создать и удалить папку, переместить, копировать файл/папку, поиск файлов, читать или записывать файл в список.
Если ваша задача работать с текстовыми видами файлов или картинками или папка, то вы часто будете использовать данный модуль.
Модуль смена отпечатка браузера
Модуль создан для подмены параметров и свойств браузера, в котором вы производите автоматические операции.
Отпечаток браузера – это набор свойств и характеристик вашего компьютера или ноутбука, которые определяются посещаемым вами сайтом (это видеокарта, разрешение экрана, шрифты, расширения в браузере, батарея ноутбука и тд. тп)
Подменять устройство или отпечаток браузера необходимо всегда, когда вы работаете с любыми сайтами, поскольку они анализируют и выявляют одинаковые устройства.
Подмена устройства необязательна если вы работаете в 1 поток.
Но если вы не будете подменять устройство при многопоточной работе, то сайт вас вычислит и наложит какие-либо ограничения.
Отпечатки браузера по-умолчанию бесплатные для подмены устройств Chrome.
Если вам понадобятся расширенные настройка и другие устройства такие как Iphone, Android, Firefox, то необходимо оплатить подписку к базе отпечатков на 1 или 3 месяца. Это недорого!
Модуль список
Модуль «Список» используется для работы с массивами (списками).
Список или массив – это упорядоченный конечный набор элементов. Например, список задач, имён, фамилий, емейлов, аккаунтов, телефонов.
Часто вам придется работать с большим количеством аккаунтов для какого-либо сайта и тут как раз пригодятся списки.
Например, вам необходимо из списка использовать только 1 конкретный аккаунт, а не все.
Модуль путь
Выбирай верный путь, а не легкий
Данный модуль позволяет работать с динамическими путями и получать информацию из них.
Динамический путь – это путь к файлу или папке, которыи изменяется в зависимости от его местоположения.
Например, вы работаете с профилями и вам необходимо помещать их в корневую папку со скриптом в процессе его работы. Или, например, вам необходимо из полученного пути определить расширение файла.
Модуль работа с профилями
Модуль предназначен для создания и переключения между профилями браузера.
По-умолчанию, BAS использует движок браузера Chromium и такие же профили как в обычном браузере Chrome.
Профили – это папки, в которых хранится ваша информация о посещенных сайтах, расширениях, cookies, сохраненный кэш со страниц сайтов и другая важная информация.
Профили помогают сохранить авторизацию на сайтах и повторно на них не авторизовываться.
Модуль ресурсы
Модуль «Ресурсы» позволяет осуществлять работу с ресурсами скриптов в BAS.
Ресурсы – это входные глобальные параметры скрипта, которые могут динамически меняться при работе.
Ресурсы используется как настройки при старте сценария автоматизации.
Например, это может быть кол-во потоков, txt файл с аккаунтами, почтами, случайно сгенерированные данные и тд тп.
Модуль строка
Один из самых больших модулей в линейке. Позволяет производить любые операции со строками, в том числе подравнивать и очищать лишние символы и даже извлекать почты, телефоны и ссылки из них.
Чаще всего в модуле вы будете использовать «Случайная строка», «Шаблон», «Получить длину», «Заменить строку» и «Парсить CSV строку».
Например с помощью «Случайная строка» можно сгенерировать случайный пароль для регистрации нового аккаунта.
Модуль XPATH
Модуль позволяет работать с ХРАТН.
ХРАТН – язык запросов к HTML/XML страницам.
Один из часто используемых модулей в BAS, с помощью которого можно очень быстро извлекать элементы и тексты со страниц.
Например, вы делаете парсер Avito с использованием браузера и вам необходимо с карточки товара получить хар-ки, описание и фото.
В этом вам поможет ХРАТН.
Модуль JSON
Модуль служит для работы с общепринятым форматом данных JavaScript Object Notation (JSON).
JSON – это текстовый формат обмена данными, основанный на Javascript и представляющий из себя некий вид типа: {«ключ»:»значение»}.
Это набор пар: ключ и значение (в котором любое из значений представлено внутри двойных кавычек, кроме числовых значений). Весь объект JSON находится в фигурных кавычках. Также в ключе может быть записан вложенный объект в фигурных кавычках, также третья вложенность и так далее.
Модуль «JSON» полезно использовать, когда вам необходимо собрать информацию с какого-либо сайта (например, контакты) и вы отсылаете запрос на ее получение через модуль «НТТР-Клиент».
Тогда в ответе чаще всего вы получите строку в формате JSON.
Как раз тут и понадобится набор действий, чтобы извлечь оттуда все данные.
Например, если вы собирает информацию об организации, то это может быть имя, телефон, емейл и другая полезная для вас информация.
Модуль статистика скрипта
Данный модуль используется для получения статистических показателей работы ваших скриптов.
Например, это может быть номер потока, кол-во успешных выполнений и кол-во неудачных выполнений.
Полезный модуль, когда вам необходимо вызывать сценарий в определенных потоках, например, только во 2 и 4.
Тогда вы можете использовать конструкцию IF и проверять номер потока в авто-сценарии.
Модуль регулярные выражения
Модуль предназначен для замены и поиска строк в файлах или нескольких файлах,
Это и есть регулярные выражения.
Лучше простого поиска тем, что позволяет создать шаблон условий, по которым следует найти подстроку и проделать с ней какие-либо манипуляции,
BAS легко и просто работает с регулярными выражениями и может извлекать данные из строк, заменять их или группировать.
Дополнительные модули Модуль открыть/закрыть браузер
Данный модуль содержит всего 2 действия: закрытие и открытие браузера.
Используется когда вам необходимо более гибко управлять состояниями вашего браузера или браузеров в потоках.
По умолчанию браузер закрыт. При использовании действия «Открыть Браузер», он открывается в автоматическом режиме.
Но если закрыть браузер вручную, то автоматически он уже не откроется.
Тут как раз и пригодятся действия модуля.
Модуль буфер обмена
Данный модуль служит для работы с буфером обмена на вашем компьютере.
Буфер обмена – это временное хранилище информации, которую вы недавно скопировали.
В модуле доступно 2 действия: читать буфер обмена и записывать в буфер обмена.
Модуль эмуляция бездействия
Данный модуль исходя из названия служит для обеспечения случайных действий в браузере вместо обычного сна.
Эмуляция бездействия проявляет себя в виде скроллинга страницы сайта с помощью колеса мышки, перемещения мышки по экрану и сна.
Модуль содержит только 1 действие: эмуляция бездействия.
Используется как альтернатива обычному сну для того, чтобы вебвизор Яндекс Метрики или любые другие системы отслеживания видели, что вы обычный человек на их сайте.
Модуль асинхронный вызов функции
Модуль служит для работы с асинхронными функциями.
Асинхронные функции – это особые функциидействия, выполняющиеся независимо от основной работы вашего скрипта, параллельно с ним и которые можно приостановить на полпути выполнения.
Вызов обычных функций сопровождается строгим выполнением всей цепочки действий и возвращением результата.
В случае асинхронной функции вы можете ее запускать параллельно, не мешая работе основной функции и получать результаты выполнения в процессе прохождения сценария автоматизации.
Например, если вам необходимо работать с двумя сайтами одновременно: первый сайт мониторит приход кода из письма по email или собирает какую-либо информацию, необходимую для другого сайта, а второй сайт ждёт получение этого письма или ожидает пока в переменную будет записана нужная информация.
Модуль обработка изображений
Модуль служит для редактирования и обработки изображений, которые вы будете загружать в каких-либо своих задачах.
Например, вы делаете скрипт для автоматического постинга в Telegram и вам необходимо на картинку накладывать какой-либо водяной знак, текст или описание.
В этом поможет данный модуль.
Также очень часто требуется решать капчи и сравнение одного изображения с другим будет очень полезным.
Модуль почта
Модуль служит для приёма и обработки содержимого писем в почтовых сервисах.
Например, если вы регистрируете аккаунты на каких-либо сайтах, где приходят письма подтверждения регистрации или специальный код подтверждения.
Данный модуль снабжен всем необходимым функционалом для такого рода задач, является полностью бесплатным и поставляется в официальной сборке BAS.
Модуль подтверждение телефона
Модуль позволяет работать с SМS-сервисами приёма кодов активации, звонков-сбросов и дальнейшим их использованием в ваших скриптах.
SМS-сервисы – это специализированные сайты, которые предоставляют услуги по аренде номеров для приема кодов активации с различных сайтов.
Большинство сервисов уже встроено в данный модуль (например, sms-act]vate.ru), но вы также можете написать собственный модуль для сервисов, которые отсутствуют по-умолчанию.
Модуль управление процессами
Данный модуль предназначен для вызова различных .ехе файлов на вашем компьютере параллельно с работой авто-сценария, а также для вызова Batch/Bat скриптов.
ВАТ скрипты – это последовательно команд, вызываемых из командной строки CMD.
Например, вам необходимо показать диалоговое окно или проиграть какой-либо звук системы Windows или получить список запущенных процессов при помощи WMIC.
WMIC – это служебная программа для управления Windows процессами.
Модуль отправить письмо
Модуль служит для отправки писем через протокол SMTP.
SMTP – это сетевой протокол для передачи электронной почты в интернете.
У каждого Email сервиса имеется свой SMTP сервер, через который вы можете рассылать письма.
Но из-за разного рода спама, многие Еmаilсервисы ограничивают скорость рассылки и кол-во через SMTP, а также вводят доп. пароли приложений.
Модуль Telegram
Модуль позволяет работать с отправкой сообщений в Telegram.
Стандартный модуль работает только с отправкой, но также есть расширенный, который позволяет отправлять файлы, документы, скриншоты и текст с кнопками.
Полезно использовать если вы ведет канал в Telegram и нуждаетесь в новом контенте или просто хотите получать уведомления об успешной работе бота.
Также через Telegram можно управлять BAS скриптами.
Модуль часовой пояс
Модуль предназначен для подстройки местоположения под iр-адрес, координаты, часовой пояс и другие свойства.
Обычно не применяется на практике, так как его заменяет экшн-блок под названием «Прокси».
Полезно и практично подстраивать параметры под iр-адрес, поскольку при малейших расхождениях между вашим IP прокси и тем, который видит сайт, у вас возникнут проблемы с анонимностью.
Модуль взаимодействие с пользователем
Модуль позволяет передавать ручной управление пользователю в процессе выполнения авто-сценария, выполнять звуковые оповещения, запрашивать ввод пользователей, а также выполнять Javascript внутри вебинтерфейсов.
Например вы сделали своего первого бота и на какой-то стадии вылазит капча, которую вы не хотите решать автоматически через сервис. Вы конечно же прибегаете к действию «Передать ручное управление», тогда в процессе сможете вмешаться в выполнение, решить капчу и передать управление обратно.
Модуль встроенные языки
Модуль «Встроенные языки» используется для вызова участков кода при помощи NodeJS и его модулей NPM.
Если вы продвинутый пользователь и вам необходимо выполнять нетривиальные задачи, то этот модуль вам идеально подойдет для реализации. Также модуль полезен, если вы имеете уже написанный готовый код и хотите его использовать на каком-то этапе вашего сценария автоматизации.
Модуль содержит 1 действие: Node.js
Модуль Excel
BAS также имеет по-умолчанию встроенный и мощный модуль для работы с Excel таблицами.
В модуле вы найдете все необходимые экшнблоки для построения автоматизации, связанной с Excel таблицами.
Тут содержатся: создание файл, чтение, запись, удаление, вставка и количество строк и ячеек, чтение и запись листов, областей ячеек, импорт, экспорт файлов в ресурсы и обратно, получение списка листов, добавление, перемещение, переименование, удаление, очищение листов, ячеек и областей ячеек, преобразование в JSON и обратно, найти одну или несколько ячеек по содержанию, получение и установка формулы в ячейки, стилей, получение и установка ширины столбцов, высоты строки, закрыть файл.
Модуль позволяет полностью автоматизировать работу с Excel, не прибегая к стороннему программному обеспечению и написанию кода.
Модуль база данных
Данный модуль служит для работы со встроенной базой данных MongoDB от BAS.
Модуль предназначен для работы с локальной базой данных.
Используется как альтернатива Excel, текстовым файлам, только с более структурированными и большими данными.
When it comes to browser automation tasks in Excel VBA like filling a web form, login to a website etc. most of them use Internet explorer by adding a reference to Microsoft Internet controls.
VBA users have been using IE automation from many years and most of them still use it. but there is a problem with Internet explorer! As we all know Internet explorer is the ‘God of all browsers’ – I mean we just use it to download other browsers because of its performance issues. Due to its poor performance automation also would be slow.
Then why not use high performance browsers like chrome or firefox? Yes this post is all about browser automation in VBA using selenium VBA wrapper which enables automating high performance browsers like chrome and firefox with just few lines of code.
What is Selenium
Selenium is a testing framework. Selenium automates browsers. That’s it! What you do with that power is entirely up to you. Primarily, it is for automating web applications for testing purposes, but is certainly not limited to just that. Boring web-based administration tasks can (and should!) also be automated as well.
Some good guy has written a .net wrapper for selenium which can be used in VBA and VB.net and that is the wrapper we are going to use in this tutorial.
Prerequisites :
- Basic knowledge of VBA
- Microsoft Excel installed in windows OS – Selenium VBA wrapper is a windows COM library so it works only on windows.
- Selenium VBA wrapper library – you can download and install it from here
Getting started with selenium VBA
1.Open any excel file, go to code editor (Alt + f11) and create a sub.
Public Sub seleniumtutorial() End Sub
2.Add selenium VBA reference
go to tools > references > check ‘Selenium Type Library’ and click ok.
3.Define and start web driver
selenium web driver is what controls the browser.
syntax : Dim drivername as new WebDriver
Dim bot as new WebDriver
This driver is used to start and automate the browser.
4.Start browser
A browser can be started by using start method of webdriver.
syntax : driver.Start "browsername", "baseurl"
currently supports chrome, firefox, opera, PhantomJS & IE
bot.Start "chrome", "http://google.com"
Simple example
Lets say we have to open a website and take screenshot of it. This can be done in just 2 lines of code. open website using Get
method and screenshot using TakeScreenshot
method
Public Sub seleniumtutorial() Dim bot As New WebDriver bot.Start "chrome", "http://google.com" bot.Get "/" bot.TakeScreenshot.SaveAs (ActiveWorkbook.Path + "/screenshot.jpg") bot.Quit 'quit method for closing browser instance. End Sub
Above code is self explanatory, when you run this code a screenshot of website is saved in the folder in which current excel file is present.
Too easy right! But who wants a screenshot of google? Ah yes, this simple example is used just to explain the steps in automation. I’ll be explaining few practical situations of automation later in this tutorial.
Adding more functionality
Lets say I’m an SEO analyst, I want to search few words on google and take screenshot of results. List of keywords are in column A of keywords sheet.
Lets start by adding a sub
Public Sub keywordsearch() End Sub
1.Define WebDriver
and a Range
to get range of keywords.
Dim bot As New WebDriver, rng As Range
2.set range to list of cells in column A
Set rng = Range(Worksheets("keywords").Range("A2"), Worksheets("keywords").Range("A2").End(xlDown))
Above code makes setting a range dynamic because of End(xlDown)
End(xlDown) = next non empty cell in that row (the cell you reach when you press ctrl + down in excel)
3.Start web driver
bot.Start "chrome", "http://google.com" bot.Window.Maximize
4.Loop through each cell in range, search keyword in google
For Each cell In rng bot.Get "/" bot.FindElementByName("q").SendKeys (cell.Value) bot.FindElementByName("btnG").Click bot.Wait 1000 bot.TakeScreenshot.SaveAs (ActiveWorkbook.Path + "/screenshot_" + cell.Value + ".jpg") Next bot.quit
In the above code, First we use For
to loop through each cell then get ‘/’ which is homepage, if we need image search then ‘/images’ is used. After loading homepage, find input textbox to enter the search word.
Selenium has many methods to find a html element, Most commonly used methods to find elements are FindElementById
, FindElementByName
, FindElementByXpath
To find a HTML element, we need a selector. selector may be ID or name or Xpath or class or tag. If we have ID then FindElementById
is used, FindElementByName
is used if we have name of the element and so on. Finding a selector is simple, just go that webpage > right click on the element for which we need a selector > Inspect element
. Prefer ID first, if there is no ID or name then copy xpath by right clicking again on the element.
As you can see in the image above, input textbox on google homepage has name attribute so we can use FindElementByName
to find element and SendKeys
method to type the keyword in textbox.
Button also has a name attribute with value “btnG” so FindElementByName
is used again to find the search button and click it using Click
method.
Wait for 1 second for search to complete and then take a screenshot using TakeScreenshot
method , moving to next cell and finally quit driver using Quit
method.
Noteworthy methods :
- All FindElement methods
ExecuteScript
– used to run any custom Javascript code.IsElementPresent
(Removed now)PageSource
refresh
until
Proxy
Window
These are the commonly used methods in selenium, give it a try.
Wait for element in Selenium VBA
In previous versions of Selenium wrapper, There were few methods like IsElementPresent
and WaitForElementPresent
which were used to check if element is present, wait till element is available. But these methods are removed now. So How do we wait for elements?
Current methods which are used to identify elements such as FindElementById
, FindElementByXPath
have an implicit wait of 3 seconds which means – If the element was not found initially then these methods wait for up to 3 seconds to see element becomes available.
If you just want to wait till element becomes available then just increase the implicit wait time of these methods using :
driver.FindElementById("someId", timeout:=10000) 'waits for up to 10 seconds driver.FindElementById("someId", timeout:=20000) 'waits for up to 20 seconds
Check is element is present in Selenium VBA
If your goal is to just check if element is present or not instead of waiting for the element then it can be done using :
Set myelement = bot.FindElementById("someId", timeout:=0, Raise:=False) If myelement Is Nothing Then MsgBox ("no element found") else myelement.Click End If
My Practical use cases of selenium VBA
I had an excel list in my office which contains usernames and passwords of around 200 clients which are used to login to a web admin panel. whenever I need some information, I had to login manually by copying the username & password of that particular client and pasting in the browser and login. So I just wrote some code for autologin, used a shortcut key for that sub. whenever I wanted to login, I just click on the client name and used my shortcut key!
Fetching youtube channel subscribers count. This can be done using XML HTTP requests also. comment below if you want to know more about fetching data using XML HTTP.
Automating product purchases, few other automations which need browser involvement exclusively.
Update : Checkout next part of this tutorial Scrape website using Selenium VBA to learn how to scrape website data using selenium VBA and best practises of scraping data in excel.
Wrapping up
This was a quick tutorial, there is lot more that can be done with selenium VBA. you can download official examples file here which contains lot of examples on Selenium VBA automations. have a look at them and start automating!
If you have any questions or feedback, please comment below.
- Author
- Recent Posts
A CA- by education, self taught coder by passion, loves to explore new technologies and believes in learn by doing.
► Скачать проект XML: https://vk.cc/bZ4ZBZ
► Обучись BAS с нуля до гуру: https://cutt.ly/bas_free
► Наш Telegram чат по BAS: https://t.me/ae_bas
► Закажи бота под ключ: https://automationempire.ru/
► Магазин ботов: https://pavelduglas.ru/shop/
► Скачать BAS: https://cutt.ly/download_bas
► Личный блог с полезными материалами: https://cutt.ly/blog-pd
► Мой инстаграм: https://cutt.ly/insta-pd
► Telegram канал с бонусами и полезными материалами: https://cutt.ly/tg-pd
► Моя книга по криптовалютам «45 моделей заработка криптовалют»: https://cutt.ly/ebook-45
► Мой трейдинг бот «Bitsmart Trade»: https://cutt.ly/bt-trade-bot
Как решать IconCaptcha с помощью инструментов Browser Automation Studio без знаний JavaScript
Вы узнаете:
- Категория
- Programming