Пример чата из яндекса
Палки в колёса от jivosite
Уж не знаю как там принято от других чат серверов, но вот данный экземпляр по какой-то неведомой причине, не стал разрабатывать API по взаимодейсвтию с чатом. И ладно бы просто по лени своей, но когда я начал разбираться в веб версии серверной части то убедился в обратном. Данные товарищи решили усложнить жизнь тем кто будет пытаться реализовать бота (к слову их ещё нет на рынке вообще, и если вы нашли эту тему в поиске то скорее всего на данный момент такого бота ещё нет). Дело в том что под “капотом” сайта наст встречает потрясающая система хэширования данных, причём она настолько фундаментальная что затронула даже классы не говоря уже о банальных div. Весь код пронизан уникальными хэш кодами которые генерируются в сессии и привязаны как к самому чату, так и браузеру или клиенту чата. К частью у нас есть такой потрясающий инструмент как selenium, позволяющий запускать экземпляр бразуера полностью имитируя действия пользователя. Забегая немного вперед хочу сказать что бразуер у меня работает на сервере в скрытом режиме без GUI, потребляя всего 200мг оперативной памяти, а это на секундочку гугл хром)
Что бы я без тебя делал
Сколько раз уже меня выручил волшебный инспектор встроенный в гугл хром (к слову я перешел на Brave), конечно я бы мог ручками ковырять исходный код, но данная Штука сильно упрощает работу делая её действительно комфортной. Так что же там у нас под крышкой сайта?
Как видно из изображения выше (или не видно), код пестрит различными хэшами, которые к тому же ещё и не связаны. Я бы понял если бы генерировался один ключ на страницу и свой ключ для каждого клиента, но тут почти всё уникально, и постоянно меняется. Как же тогда навести “прицел” веб драйвера на нужные нам элементы? Бывалые наверное уже догадались, конечно же по тексту. Но даже тут не всё так однозначно и просто, и банальный textarea имеет свой класс котоооорый угадайте что? прааавильно, тоже имеет свой ключ (будь он неладен). Я допускаю что данный подход к разработки возможно более надёжен с точки зрения безопасности, или вообще бэкэнда, ноо для меня это стало проблемой (в начале).
Поле ввода
Рассмотрим самый банальный пример из всего проекта. Допустим у меня уже есть текст который я хочу ввести, но как бы мене найти форму ввода <div textarea, да к тому же ещё нужно после ввода нажать кнопку отправить (которая к слову тоже имеет уникальный идентификатор, у которого нет словесной привязки по которой его можно было-бы найти), и тут нам на помощь снова приходит инспектор) который любезно подсказал что кое что у блоков всё же есть статистическое, а именно data-qa-id. Смотрим пример пути к textarea на скриншоте ниже (я подсветил хэши)
Волшебство
Скорее всего на изображении выше вы не разглядели data-qa-id, каюсь не нашел хороший плагин лупы =_=
По этому прикреплю увеличенное изображения данного кусочка html, что бы наглядно продемонстрировать якорь за который я и цеплялся.
Заключение
А чего вы ожидали?
Я ведь сразу предупредил, исходного кода не будет, он слишком просто и банален что бы его выкладывать. Я описал механику взаимодействия с веб версией живого чата, а дальше уже сами, ну или пиши мне, поделюсь за копеечку :3
На данный момент я немотивирован писать полноценного бота, но если мне его кто-то закажет то займусь с радостью. На текущий момент моя реализация крутиться на сервере и проходит проверки от яндекса на ура, и в целом мне этого достаточно, возможно как будет время, я сделаю полноценного бота (но будет это явно не скоро).