06 Января 2024
11

Пишем интернет-бота при помощи джавскрипт на примере авторизации на Пикабу

Всем доброго времени суток! Как-никак, а шило кое-где есть, поэтому недавно познакомился с красивой-прекрасной библиотекой playwright. Ее, вообще, для тестирования используют. Проверять, как работает сервис. Но отдельно у нее есть апишка, которая позволяет отдельно, вне тестирования, запускать процесс браузера и совершать действия внутри него.

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

Технологии, которые нужно понимать перед началом:

JavaScript
Node JS
NPM

  1. Создаем проект и устанавливаем зависимости

    Сначала создаем папку pikabu в любом удобном месте.

    Внутри папки открываем терминал\любой редактор кода с терминалом, вводит следующие команды:

    npm init -y

    npm i playwright

    npx playwright install

    Когда все готово, создаем файл index.js в корне каталога.

    2. Работаем с браузером и учим робота вводить данные

Импортируем chromium из playwright

Пишем интернет-бота при помощи джавскрипт на примере авторизации на Пикабу Программа, Windows, Linux, Гайд, Инструкция, Программирование, Гифка, Длиннопост

Создаем контекст браузера, создаем новую страницу.

Пишем интернет-бота при помощи джавскрипт на примере авторизации на Пикабу Программа, Windows, Linux, Гайд, Инструкция, Программирование, Гифка, Длиннопост

Абсолютно все команды в библиотеке асинхронные и возвращают промисы. Поэтому отвечаем им await.

Значение headless в инициализации браузера отвечает за то, появится ли UI браузера при запуске программы. При тестировании ставим false, когда программа готова - true

Отправляем нашу программу на главную страницу Пикабу:

Пишем интернет-бота при помощи джавскрипт на примере авторизации на Пикабу Программа, Windows, Linux, Гайд, Инструкция, Программирование, Гифка, Длиннопост

И запускаем программу при помощи node index.js

Результат:

Пишем интернет-бота при помощи джавскрипт на примере авторизации на Пикабу Программа, Windows, Linux, Гайд, Инструкция, Программирование, Гифка, Длиннопост

Открывается браузер, открывает пикабу, висит, ничего не делает. Все работает!

3. Взаимодействуем со страницей

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

В данном случае нам нужна форма авторизации.

Чтобы узнать уникальный идентификатор элемента открываем в браузере инструменты разработчика, кнопкой f12. Выделяем нужный элемент и смотрим атрибуты, которые принадлежат только ему.

инпут с логином можно найти через идентификатор input[name="username"], а с паролем - input[name="username"].

Пропишем код, который позволит программе найти эти инпуты:

Пишем интернет-бота при помощи джавскрипт на примере авторизации на Пикабу Программа, Windows, Linux, Гайд, Инструкция, Программирование, Гифка, Длиннопост

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

Инпуты получили и можем их заполнить:

Пишем интернет-бота при помощи джавскрипт на примере авторизации на Пикабу Программа, Windows, Linux, Гайд, Инструкция, Программирование, Гифка, Длиннопост

Включаем программу:

Пишем интернет-бота при помощи джавскрипт на примере авторизации на Пикабу Программа, Windows, Linux, Гайд, Инструкция, Программирование, Гифка, Длиннопост

Инпуты заполняются, но форма не передается. Нужно определить кнопку, которая запустит процесс авторизации и нажать на нее:

Пишем интернет-бота при помощи джавскрипт на примере авторизации на Пикабу Программа, Windows, Linux, Гайд, Инструкция, Программирование, Гифка, Длиннопост

дополняем инструкцией, чтобы браузер закрылся:

Пишем интернет-бота при помощи джавскрипт на примере авторизации на Пикабу Программа, Windows, Linux, Гайд, Инструкция, Программирование, Гифка, Длиннопост

Пробуем:

Пишем интернет-бота при помощи джавскрипт на примере авторизации на Пикабу Программа, Windows, Linux, Гайд, Инструкция, Программирование, Гифка, Длиннопост

Поздравляю! Программа написана, она сама открывает браузер, вводит данные в инпуты авторизации, и входит на Пикабу.

Показать полностью 10
55

Можно как-то потеплее сделать, а?

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

  • затмения будут наблюдаться в разных частях мира, но не видны в России.

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

  • метеорные потоки, такие как Персеиды, будут лучшими для наблюдений.

  • планеты Меркурий, Венера, Марс, Юпитер, Сатурн, Уран и Нептун будут видны в благоприятное время.

  • в 2024 году произойдут близкие соединения планет, включая два соединения с наименьшим расстоянием.

  • земля пройдет через перигелий и афелий в 2024 году, а начало сезонов будет отмечено определенными датами.

35

Как же было здорово...

...когда мы платили только за те услуги связи, которыми пользуемся. Помните? Типа, минута - 30 копеек. Закинул через терминал 10 рублей и звонишь, пока не кончатся. А теперь у меня 600 минут в месяц, из которых я трачу примерно 0 минут. И 8 Гб интернета, из которого я трачу примерно 1. И с первого января они снова подняли абонентскую плату.

Но может я один такой интроверт? Может людям реально нужны эти "пакеты"? Зайдём Ка в маркет теледва и посмотрим, что там продается.

Как же было здорово... Жадность, Наглость, Теле2, Мобильные телефоны, Мат, Длиннопост
Как же было здорово... Жадность, Наглость, Теле2, Мобильные телефоны, Мат, Длиннопост

2 миллиарда минут и 27 петабайт (это сколько нулей вообще?). Нет. Похоже, они все таки охуели.

Верните тариф нокаут, сволочи.

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

Отличная работа, все прочитано! Выберите