Исходного кода тут не будет по причине того что jivosite запрещает использовать автоматизацию у себя, но будут подсказки 😉

Суть проекта

Прежде всего у меня стояла задача избавить себя от надоедливой проверки от яндекса. Для тех кто не в курсе сути проблемы, каждый владелец чата в поиске яндекса (см.пример ниже), должен проходить проверку в случайное время и день недели. Как выглядит проверка? В чат падает вот такое сообщение:

Здравствуйте! Вы получили это сообщение, так как подключены к чатам в поиске Яндекса (tech.yandex.ru/dialogs/chats/). Для оценки качества ответов в чатах мы проводим регулярные проверки. Пожалуйста, для успешного прохождения проверки в ответе на это сообщение пришлите текст “Текст проверки“. В случае, если ответ не последует, мы оставляем за собой право отключить показы вашего чата в сервисах Яндекса.

Пример чата из яндекса

яндекс чат

Палки в колёса от jivosite

Уж не знаю как там принято от других чат серверов, но вот данный экземпляр по какой-то неведомой причине, не стал разрабатывать API по взаимодейсвтию с чатом. И ладно бы просто по лени своей, но когда я начал разбираться в веб версии серверной части то убедился в обратном. Данные товарищи решили усложнить жизнь тем кто будет пытаться реализовать бота (к слову их ещё нет на рынке вообще, и если вы нашли эту тему в поиске то скорее всего на данный момент такого бота ещё нет). Дело в том что под “капотом” сайта наст встречает потрясающая система хэширования данных, причём она настолько фундаментальная что затронула даже классы не говоря уже о банальных div. Весь код пронизан уникальными хэш кодами которые генерируются в сессии и привязаны как к самому чату, так и браузеру или клиенту чата. К частью у нас есть такой потрясающий инструмент как selenium, позволяющий запускать экземпляр бразуера полностью имитируя действия пользователя. Забегая немного вперед хочу сказать что бразуер у меня работает на сервере в скрытом режиме без GUI, потребляя всего 200мг оперативной памяти, а это на секундочку гугл хром)

Инспектор наше всё

Что бы я без тебя делал

Сколько раз уже меня выручил волшебный инспектор встроенный в гугл хром (к слову я перешел на Brave), конечно я бы мог ручками ковырять исходный код, но данная Штука сильно упрощает работу делая её действительно комфортной. Так что же там у нас под крышкой сайта?

инспектор

Как видно из изображения выше (или не видно), код пестрит различными хэшами, которые к тому же ещё и не связаны. Я бы понял если бы генерировался один ключ на страницу и свой ключ для каждого клиента, но тут почти всё уникально, и постоянно меняется. Как же тогда навести “прицел” веб драйвера на нужные нам элементы? Бывалые наверное уже догадались, конечно же по тексту. Но даже тут не всё так однозначно и просто, и банальный textarea имеет свой класс котоооорый угадайте что? прааавильно, тоже имеет свой ключ (будь он неладен). Я допускаю что данный подход к разработки возможно более надёжен с точки зрения безопасности, или вообще бэкэнда, ноо для меня это стало проблемой (в начале).

Пример

Поле ввода

Рассмотрим самый банальный пример из всего проекта. Допустим у меня уже есть текст который я хочу ввести, но как бы мене найти форму ввода <div textarea, да к тому же ещё нужно после ввода нажать кнопку отправить (которая к слову тоже имеет уникальный идентификатор, у которого нет словесной привязки по которой его можно было-бы найти), и тут нам на помощь снова приходит инспектор) который любезно подсказал что кое что у блоков всё же есть статистическое, а именно data-qa-id. Смотрим пример пути к textarea на скриншоте ниже (я подсветил хэши)

textarea

Волшебство

Скорее всего на изображении выше вы не разглядели data-qa-id, каюсь не нашел хороший плагин лупы =_=

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

zoom

Заключение

А чего вы ожидали?

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

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