Я порадовался, что учел возможность его появления в две строчки. Трясущимися руками я его кое-как написал и активировал! На все ушло секунд 20. Очень повезло со сканированием, алгоритм практически сразу показал серийный номер при том, что полное сканирование продолжалось 30 секунд. В этом ролике, как оказалось, было два ключа, которые показались последовательно, я ввел второй. Поздравляю того, кто активировал первый!
Итак, выскочил алерт, сообщающий о выходе нового видео. Не успел я зайти в battle.net как уже скачалось видео (10 секунд) и появился скриншот с серийным номером:
К четвертому видео, бот был доработан: сейчас он использует порядка 100 прокси серверов (по 1 потоку на каждый прокси сервер), которые сканируют каждые 5 секунд gdata. Тесты показали, что около 20 прокси просто мгновенно сообщают о выходе нового видео, остальные подтягиваются в течении минуты, это было отлично. В отличии от gdata прямые ссылки появляются сразу для любого IP, поэтому тут без прокси бот просто качает видео в 20 потоков (работало даже в 1000 потоков, youtube оказывается позволяет). Скорость закачки возросла. Алгоритм сканирования был доработан: бот вначале в 4 потока сканирует вторую часть ролика (во всех предыдущих видео серийный ключ появлялся в конце ролика), а потом в 4 потока первую часть. Для надежности шаг сканирования был уменьшен до 500 мс, другие параметры так же были немного ослаблены.
Я его ввел и он оказался уже использованым. Анализ ошибок показал, что данные через youtube api обновляются с задержкой до 5 минут! Когда бот обнаружил новое видео, уже было слишком поздно. Кому-то из других ботов или пользователей жмущих F5 повезло.
Итак, выскочил алерт, сообщающий о выходе нового видео, я залогинился к battle.net, через 10 секунд скачалось видео, еще через 10 появился скриншот с серийным номером:
Пользователю, т.е. мне, остается только посмотреть найденные скриншоты и ввести ключ
Сканируя кадры через 1 секунду, находим и сохраняем те, на которых предположительно находится серийный номер. Сканируем в 4 потока, каждый свою 1/4 часть видео.
Бот, скачав ролик, приступает к анализу видео с помощью vlc библиотеки, которая понимает из коробки mp4,flv,webm.
Берем параметр url_encoded_fmt_stream_map это url encoded прямые ссылки на видео разных форматов и качества. Ссылка работает только для того IP, с которого пришел запрос. Пошаманив, можно получить красивую ссылку
Делаем GET к и получаем url encoded параметры
Если количество видео изменилось, то из последней ссылки получаем videoId: 3J1CYzzZjNc
Каждые 5 секунд делаем GET к и получаем общее количество видео пользователя и ссылку на последнее видео.
Алгоритм был простой:
К третьему видео бот использовал youtube api, квота на кол-во запросов к которому позволяла сканирование раз в 5 секунд на протяжении 12 часов.
Ко второму видео был готов самый простой бот, который раз в 10 секунд обновляет страницу с добавленным видео и, если появилось новое видео, то модальное окно в виде алерта сообщает об этом. Выяснилось, что через 4 часа youtube обнаруживает бота и просит его ввести recaptcha, а потом еще каждый час просит ее вводить. Очень не удобно, но я не особо хотел тратить время и писать по-нормальному, так как ожидал, что второй ключ появится как-нибудь по-другому, ну например, хотя бы зелеными буквами. Второй ключ я проморгал, но когда я увидел те же серые цифры и буквы, тем же шрифтом, того же размера, на том же белом фоне и даже размером в те же три строчки, я решил сделать нормального бота.
О первом ключе я не знал и, наверное, никто не знал. Кому-то повезло.
Вы подумали о том же, о чем и я?
В YouTube роликах с недавних пор стали появляться ключи к Diablo III Beta. В 7-ми минутном ролике на секунду показывается ключ, кто его первый активирует, то и выигрывает. Вот так на стоп кадре выглядит ключ:
Как я получил ключ к Diablo III Beta
Как я получил ключ к Diablo III Beta / Хабрахабр
Комментариев нет:
Отправить комментарий