Пользователь
0,0
рейтинг
29 марта 2012 в 01:17

Разработка → Как я получил ключ к Diablo III Beta

В YouTube роликах ThisIsHorosho с недавних пор стали появляться ключи к Diablo III Beta. В 7-ми минутном ролике на секунду показывается ключ, кто его первый активирует, то и выигрывает. Вот так на стоп кадре выглядит ключ:


Вы подумали о том же, о чем и я?


Всего 10 ключей.

Ключ 1
О первом ключе я не знал и, наверное, никто не знал. Кому-то повезло.

Ключ 2
Ко второму видео был готов самый простой бот, который раз в 10 секунд обновляет страницу с добавленным видео и, если появилось новое видео, то модальное окно в виде алерта сообщает об этом. Выяснилось, что через 4 часа youtube обнаруживает бота и просит его ввести recaptcha, а потом еще каждый час просит ее вводить. Очень не удобно, но я не особо хотел тратить время и писать по-нормальному, так как ожидал, что второй ключ появится как-нибудь по-другому, ну например, хотя бы зелеными буквами. Второй ключ я проморгал, но когда я увидел те же серые цифры и буквы, тем же шрифтом, того же размера, на том же белом фоне и даже размером в те же три строчки, я решил сделать нормального бота.

Ключ 3
К третьему видео бот использовал youtube api, квота на кол-во запросов к которому позволяла сканирование раз в 5 секунд на протяжении 12 часов.

Алгоритм был простой:
  1. Каждые 5 секунд делаем GET к http://gdata.youtube.com/feeds/api/users/ThisIsHorosho/uploads?max-results=1&fields=openSearch:totalResults,entry/id и получаем общее количество видео пользователя и ссылку на последнее видео.
  2. Если количество видео изменилось, то из последней ссылки получаем videoId: 3J1CYzzZjNc
  3. Делаем GET к http://www.youtube.com/get_video_info?video_id=3J1CYzzZjNc и получаем url encoded параметры
  4. Берем параметр url_encoded_fmt_stream_map — это url encoded прямые ссылки на видео разных форматов и качества. Ссылка работает только для того IP, с которого пришел запрос. Пошаманив, можно получить красивую ссылку http://o-o.preferred.lhr14s07.v2.lscache8.c.youtube.com/videoplayback?sparams=cp,id,ip,ipbits,itag,ratebypass,source,expire&fexp=906929,907720,904821&itag=18&ip=88.0.0.0&signature=BA6D9C66CA9DF74931C899ABC3816E6FFB3AF2B5.326CFD03BDE8430990DEE9E8DC62046FAC43C62B&sver=3&ratebypass=yes&source=youtube&expire=1332983106&key=yt1&ipbits=8&cp=U0hSR1lTUV9FUENOMl9RTVVCOmNpbEFrX1hXTllx&id=dc9d42633cd98cd7
  5. Бот, скачав ролик, приступает к анализу видео с помощью vlc библиотеки, которая понимает из коробки mp4,flv,webm.
  6. Сканируя кадры через 1 секунду, находим и сохраняем те, на которых предположительно находится серийный номер. Сканируем в 4 потока, каждый свою 1/4 часть видео.
  7. Пользователю, т.е. мне, остается только посмотреть найденные скриншоты и ввести ключ

Итак, выскочил алерт, сообщающий о выходе нового видео, я залогинился к battle.net, через 10 секунд скачалось видео, еще через 10 появился скриншот с серийным номером:

Я его ввел и… он оказался уже использованым. Анализ ошибок показал, что данные через youtube api обновляются с задержкой до 5 минут! Когда бот обнаружил новое видео, уже было слишком поздно. Кому-то из других ботов или пользователей жмущих F5 повезло.

Ключ 4
К четвертому видео, бот был доработан: сейчас он использует порядка 100 прокси серверов (по 1 потоку на каждый прокси сервер), которые сканируют каждые 5 секунд gdata. Тесты показали, что около 20 прокси просто мгновенно сообщают о выходе нового видео, остальные подтягиваются в течении минуты, это было отлично. В отличии от gdata прямые ссылки появляются сразу для любого IP, поэтому тут без прокси бот просто качает видео в 20 потоков (работало даже в 1000 потоков, youtube оказывается позволяет). Скорость закачки возросла. Алгоритм сканирования был доработан: бот вначале в 4 потока сканирует вторую часть ролика (во всех предыдущих видео серийный ключ появлялся в конце ролика), а потом в 4 потока первую часть. Для надежности шаг сканирования был уменьшен до 500 мс, другие параметры так же были немного ослаблены.

Итак, выскочил алерт, сообщающий о выходе нового видео. Не успел я зайти в battle.net как уже скачалось видео (10 секунд) и появился скриншот с серийным номером:


Я порадовался, что учел возможность его появления в две строчки. Трясущимися руками я его кое-как написал и активировал! На все ушло секунд 20. Очень повезло со сканированием, алгоритм практически сразу показал серийный номер при том, что полное сканирование продолжалось 30 секунд. В этом ролике, как оказалось, было два ключа, которые показались последовательно, я ввел второй. Поздравляю того, кто активировал первый!

Осталось еще 5 ключей
Можно доработать алгоритм: запускать сканирование вместе с началом старта скачивания, алгоритм усложнится, но выигрышь будет секунд 10. Можно еще сделать распознование серийного номера и его автоматический ввод в battle.net. Тогда ключик можно будет ввести даже за 5 секунд.

Все писалось на Java, используя HttpComponents (http-протокол) и VLCj (обработка видео)

P.S. Diablo III клевая

UPDATE
Интересно было писать самого бота, поэтому затраченные 20 часов я расцениваю как время потраченное на развлечение, а не как 20 часов, за которые можно было бы заработать гораздо больше денег, чем стоит сам ключ. В свободное время я отдыхаю или изучаю что-то новое, а не работаю, а тут приятное с полезным. Игру еще не прошел.

Алгоритм
Алгоритм определения серийника я специально сразу не стал указывать по двум причинам. Узнав абсолютно точный алгоритм, авторы ThisIsHorosho быстро сделают ключ нераспознаваемым, и я окажу медвежью услугу тем, кто тоже пишет бота. Хотя допускаю, что таких людей нет, но как то же, судя по комментариям, за 3 минуты вводят серийники, неужели жмут F5 во время ожидания…

Ну раз много вопросов по алгоритму… Главное, алгоритм должен быть очень быстрый. По скриншоту с серийным номером сразу видна основная идея.

  1. Берем картинку из кадра и сохраняем ее с размером 640x320, VLCj позволяет сохранять картинки с любым разрешением, даже, если видео имеет другое. Все точки, близкие к цвету текста делаем черными, все остальное белое. В итоге получаем черно белые картинки. Пару таких картинок вставлены в эту статью.
  2. Для каждого скриншота считаем статистику белых и черных точек. Фоном объявляем те, где количество белых точек больше 92%, в тестах хватало и 94%, но это с запасом. На кадрах с фоном ищем серийник.
  3. Из кадра с краев отступаем по 30 пикселей, так как серийник появляется ближе к центру, а с края — никогда. Оставшееся поле разбиваем на квадраты 20x20, в каждом из которых считаем количество черных точек
  4. Квадраты с количеством черных точек от 10% до 60% объявляем квадратами с буквами — это уже с учетом того, что буква может только на половину попасть в квадрат и с некоторым запасом.
  5. Кадры, на которых есть непрерывная последовательность из как минимум 6 квадратов с буквами по горизонтали и в 3 квадрата по вертикали, объявляем кадрами с серийным номером. Сохраняем их в папку.


В итоге, появляются только картинки с текстом похожим на серийный номер:


На практике их не много появляется, так что найти из них нужный не составляет труда.

Работа с VLCj
Работа с VLCj очень простая. Вначале я прочитал документацию www.capricasoftware.co.uk/vlcj/tutorial1.php, потом немного поигрался с классом MediaPlayer, но он как-то глючил, в общем я остановился на вызове прямых функций из библиотеки LibVlc — оно и быстрее и безглючнее.

Вначале создаем библиотеку
LibVlc libvlc = LibVlcFactory.factory().create();

Потом создаем массив из 8 штук AnalyzerThread (типа Runnable) (каждому 1/8 часть времени видео), которые передаем в Executors.newFixedThreadPool(4) в таком порядке: 4, 5, 6, 7, 0, 1, 2, 3. Т.е. вначале будет сканироваться вторая часть видео, а потом первая. В каждом AnalyzerThread такой код:

System.out.println("Run section " + num);
libvlc_media_player_t p_mi = null;
libvlc_media_t media = null;
try
{
    // prepare
    //libvlc_instance_t instance = libvlc.libvlc_new(0, new String[0]);
    libvlc_instance_t instance = libvlc.libvlc_new(2, new String[]{"--vout", "dummy"});
    p_mi = libvlc.libvlc_media_player_new(instance);
    libvlc.libvlc_audio_toggle_mute(p_mi);
    media = libvlc.libvlc_media_new_path(instance, fileName);
    libvlc.libvlc_media_player_set_media(p_mi, media);
    libvlc.libvlc_media_player_play(p_mi);
    Thread.sleep(msPlayerWait);
    libvlc.libvlc_media_player_pause(p_mi);

    // start snapshoting
    int block = blockFrom;
    for (long msTime = msFrom; msTime <= msTo; msTime += msInBlock, block++)
    {
        String path = snapshotPath + File.separator + "snap-" + String.format("%03d.png", block);
        libvlc.libvlc_media_player_set_time(p_mi, msTime);

        int r = libvlc.libvlc_video_take_snapshot(p_mi, 0, path, picWidth, picHeight);
        if (r != 0)
            System.out.println("SNAPSHOT FAILED: block=" + block + ", returnCode=" + r);
        else
            analyzeImage(path);
    }
} finally
{
    if (p_mi != null)
        libvlc.libvlc_media_player_stop(p_mi);
    if (media != null)
        libvlc.libvlc_media_release(media);
    if (p_mi != null)
        libvlc.libvlc_media_player_release(p_mi);
    System.out.println("Close section " + num);
}


Функция analyzeImage как раз определяет, находится ли на скриншоте ключик или нет, если находится, то сохраняет его в специальную папку.
@vip_delete
карма
70,0
рейтинг 0,0
Реклама помогает поддерживать и развивать наши сервисы

Подробнее
Реклама

Самое читаемое Разработка

Комментарии (158)

  • +14
    Сколько по времени заняло написание бота?
    • +11
      Наверное, суммарно часов 20. С нуля.
      • +10
        А за сколько бета прошли?
        • 0
          Одно прохождение с нуля занимает 3 часа если полностью исследовать территорию, убивать всех монстров и ломать все ящики. но это же диабло — при перезаходе карта новая, лут постоянно разный, даже случайные ивенты добавили. Да и 5 классов…
        • 0
          Еще не прошел
      • –14
        Ключ, насколько я заметил в гугле, можно купить за $50.
        А 20 часов программирования — это около трёх рабочих дней.
        Скажите, вы получаете больше $370 в месяц? :)

        P.S. Я понимаю, что задача сама по себе может быть весьма интересной, что и является определяющим моментом. Это несомненно ваше личное дело как тратить своё время.
        • +132
          Вы не программист :)
          • +15
            Неправда ваша :)
            Просто…
            1. Я уделяю программированию немало времени и в рабочее время, причём встречаются и интересные задачи, поэтому желание сделать дома что-то «вкусненькое» для себя — не очень сильное и реализуется редко.
            2. Я семейный человек, у меня сын есть, а этот шустрый фактор несомненно сокращает свободное время.

            Поэтому, будь я любителем Дьябло, немногие свободные часы я бы потратил скорее на саму игру, чем на добычу ключа.
            И тем не менее, на самом деле я вас прекрасно понимаю. Просто хотелось сказать, что надо всего лишь отдавать себе отчёт в том, каковы трудозатраты по сравнению с профитом. Понятное дело, что после обдуманного сравнения трудозатрат с профитом (в т.ч. полученным от программирования удовольствием) вы с чистой совестью можете предаваться объектно-ориентированным утехам.
            • +64
              boring
            • +25
              профит очевиден.
              Опыт. Технология. Программа. Кайф.
              • +4
                … и плюсов в карму.
            • +8
              «А 20 часов программирования — это около трёх рабочих дней. » — а сколько дней и часов он проведет в дьябле…
            • 0
              Есть такая субкультура — хакеры…
          • –12
            Он обеспеченный работой программист. У меня, например, тоже физически нет на такое времени, если есть хотя бы пара часов которые можно кодить, я за это время заработаю денег.
            • +34
              вам бы только денег!!! А он получает от этого настоящее удовольствие!!!
            • +8
              …если есть хотя бы пара часов которые можно кодить, я за это время заработаю денег.

              Или потратите время на пару комментариев ;)
          • –1
            Он программист, но не задрот.
        • –6
          Ну вообще-то $370 в месяц для программиста маловато даже :)
          И да, бета классная :)
          • +11
            $50 / 3 затраченных дня * 22 рабочих дня в месяце = $366,(6)
            Это тот пороговый уровень зарплаты, после достижения которого сабж не имеет материального смысла, один лишь интерес.
            • +7
              Вы даже с чисто финансовой точки зрения не правы: на хобби обычно не тратится оплачиваемое время, то есть упущенной прибыли нет.

              Но самое важное — не в деньгах, конечно.
        • +44
          Купить любой может.
          • +1
            Мне кажется, что со мной несогласны те, кто почему-то априори считает, что сабжевая задача — единственная приятная задача, попавшаяся автору за последнее время.

            А вот представьте себе такую ситуацию:
            1. На работе все задачи — как минимум не менее интересные, чем сабж.
            2. На работе за выполнение задач ещё и деньги платят, притом значительно большие, чем профит от сабжа.

            И вот в такой ситуации почему не купить? Все дела не переделаешь.
            • +34
              Сочетание программирования, ThisIsХорошо, Diablo III и поста на Хабре — бесценно…
              Для всего остального есть MasterCard! ©
              • –4
                Там че в этой рекламе, 25-й кадр? Чуть не в каждой теме ее вспоминают.
            • +62
              Думал переспать с девушкой, но посчитал: кино 2 часа, ужин 3, секс 2 часа * 50$ = 350$ баксов только за время, нафиг надо, есть способ в 25$ уложиться.
              Это я к тому, что пересчитывать в жизни все в $ не правильно изначально.
              • +29
                Неполноценное сравнение. Девушка, с которой переспал может случайно превратиться в жену c ребенком и тогда расходы сильно возрастут.
              • +14
                2 часа? 5 минут хватит )
                • +36
                  Это вы про кино, надеюсь? -)
                  • +4
                    Полный метр против короткого метра.
              • +8
                есть способ в 25$ уложиться
                секс на последнем ряду кинотеатра с попкорном?
                • 0
                  Да ну вы что!
                • +1
                  С попкорном это $26.
                • +3
                  Не всем настолько нравится попкорн
            • +3
              Исходя из Вашей логики и описания Вашей работы, Вы все время занимаетесь работой, тк она всегда интереснее, да еще и деньги платят.

              Получается, и эта переписка на хабре входит в Вашу работу? Или Вы что-то и не по работе делаете?
            • +1
              > 1. На работе все задачи — как минимум не менее интересные, чем сабж.
              Где б такую работу найти…
        • +3
          опыт и интерес не купишь
          • –4
            я рядом ответил
            • +13
              Неужели не интересно рассказать друзьям историю о том как вы написали программу, которая из Зисисхорошо автоматом выдернула ключ к третьей Диабле?

              Кому интересно то, что вы делаете на работе, кроме вас самих, будь это в тысячу раз интересней сабжа?
            • +3
              Представьте себе, есть люди которые после работы еще и дома программируют, просто так, «для души». И вот Вам один пример, да который еще и пруфит принес в виде ключа для диабло. Я не считаю это время зря потраченым, хотя сам бы этим не занялся.
              • 0
                Это у кого детей нет, наверное, да — можно потратить свободное время.

                А я после работы дома детей программирую воспитываю. И играю не в Дяблы и пр., а с детьми.
                Надеюсь, от этого будет больше профит, чем от компьютерных игрушек. Но удовольствия — как минимум — не меньше.
        • +1
          Вы работаете круглые сутки?
        • 0
          Ключ для беты дороже ключа для полной игры!
          Чёрт, завидую Близзард! Люди покупают ключи, чтобы бета-тестировать их продукцию.
      • 0
        Чёт мне кажется с Sikuli получился подобный итог…
        Управляется вроде из ява кода
        sikuli.org/
      • +3
        Программисты — самые ленивые люди на земле :). Вот он настоящий азартный дух «урвать на халяву» который заставляет мозги русских программистов закипать мозги и жечь код. Горжусь такими людьми, для мотивации которых достаточно амбициозной или хотя бы интересной идеи, ради которой они приступают с огнем в глазах к реализации.

        А я вот не такой… я прагматик =) Как по мне лучше поработать 20 часов и заработать бабла, а это значит что можно купить на эти деньги не только ключик к Diablo III, но и каких то приятных «ништяков» к процессу самой игры.
  • +2
    А я все надеюсь, что перед релизом ключики будут раздавать всем подряд, как было с SC2 :)
    • +3
      что не так?
      • 0
        спасибо, справедливость восторжествовала
  • –5
    А я бы, наверное, лучше выложил это уже после того, как все 10 ключей раздали бы :)
    • –45
      А вообще: тоже была такая идея, но было так лееень :D Да и знаний боюсь не хватило бы.
  • +4
    Мотивация «сворачивает горы». Автор вы молодец!
    P. S. Была акция от «Игромании» там при жестоком DDoS около сотни ключей расхватывали меньше чем за 30 секунд. Всегда подозревал что пишут ботов.
    • +12
      Я ухватил без бота :) Видать мое F5 сильнее, чем у большинства.
      • +6
        С тебя отчет ;)
  • –14
    Можно программки в студию?
  • +24
    >приступает к анализу видео с помощью vlc библиотеки
    Можно этот момент поподробнее осветить?

    • +3
      Дополнил статью по работе с видео и алгоритму обнаружения ключа в кадрах.
    • +2
      Была статья про использование libvlc библиотеки на хабре
      habrahabr.ru/post/111200/
  • –17
    Интересно, это справедливо, по отношению к людям, которые программировать не умеют и при условии, что автор взял себе только один ключ? С одной стороны, условия явно не равные, с другой, человек потратил 20 часов и не жадничает/не торгует/не спекулирует.

    В любом случае, поздравляю :)
    • +128
      Последнее время жизнь вообще ужасно не справедлива, умные и работящие вечно получают все, а тупые бездельники ничего.
      • +10
        Получают всё, чтобы не работать, а шпилить в дяблу и становиться бездельниками.
        • +3
          Баланс работы\развлечений, бесспорно важен, если вы об этом. В любом случае лучше заморочиться написанием бота и потом какое-то время шпилить в дяблу, чем провести это время жалуясь на не справедливость.
          • 0
            Или поработать и дождаться релиза… Ну а там, пропадай жизнь, семья, работа, дети, пятничное пиво )
      • +4
        Не всё так однозначно.
        1. Условия действительно не равные, но о равенстве должен был позаботиться организатор халявной раздачи и никто другой.
        2. С первого взгляда вы очень красиво сказали. Со второго вдруг замечаешь подмену понятий: вы заменили «непрограммист» на «тупой бездельник».
        В данный момент человеческая цивилизация опирается на принцип разбивки работы на большое множество узких специальностей. Умные и работящие программисты почему-то покупают хлеб в магазине, а не выпекают самостоятельно. Каждый занят своим узкоспециализированным делом. А дома и программист и пекарь одинаково хотят поиграть в Дьябло.
        • +16
          Я хочу сказать, что если завтра в соседнем с вашим домом супермаркете устроят конкурс «кто быстрее испечёт пирожок из муки »NNN" с повидлом «MMM», тот получит бочку варенья и корзину печенья", то вы уж не обижайтесь, что выиграет конкурс профессиональный пекарь, а вам достанется лишь роль тупого бездельника.
          • +2
            Я обижаться не буду в любом случае, о том и речь. Хотя вот какая роль мне достанется вы зря так уверены, я и готовлю неплохо :)
          • +11
            Я всегда подозревал, что МММ — это какое-то повидло.
      • 0
        Не встречал ещё тупых бездельников, тупые выполняют свои функциональные обязанности, умные стелят соломку и бездельничают :)
    • 0
      Для начала стоит хотя бы купить билет:

      Для участия в бета-тестировании Diablo III и следующих проектов Blizzard Entertainment нужно сначала создать учетную запись Battle.net. Затем вы сможете подать заявку на участие в бета-тестировании Diablo III и следующих игр. Сделать это можно на странице «Создание бета-профиля» в разделе управления записью Battle.net. Обратите внимание: заявка на участие — еще не гарантия того, что вы действительно войдете в число участников тестирования. [...]
    • +4
      Кто успел — тот и съел. Конкуренция)
    • 0
      > Интересно, это справедливо, по отношению к людям, которые программировать не умеют

      Да, потому что игра выходит 15 мая, и особого смысла ломиться в бету нет
  • +13
    позвольте спросить, от чего вы получили больше кайфа, от диабло или от написания бота и осознания, что «оно работает»?
  • +6
    Вы офигенны! Респект. Обожаю инженерный подход, когда для рутинной работы используются машины, а не нажатие ф5 каждую минуту.
  • +1
    Хороший такой спортивный интерес для себя.
  • +88
    image
    • –1
      Новый сезон КЯВВМ буду как они играют в Diablo 3 :-) Но их же пятеро!, а кооператив только на четверых :-) Барни видимо не будет с ними играть
      • +15
        Барни будет полюбому, Маршал и Лили вдвоем за одного перса просто :)
        • 0
          угу, по очереди, один в дьябле, другой с ребеночком)
        • –1
          Барни то тоже теперь не один :)
          • 0
            А когда он был один? :)
    • 0
      Обычно создатели не говорят о том, что происходило с персонажами летом, отмахиваясь наподобие «Детки, ну а летом мы все разъехались и ничего интересного не происходило».
      А тут замечательная отмазка: «Детки, летом 2012 года мы купили Diablo III. И...» — Следующим кадром показать осень 2012, бар где сидят персонажи и Тед говорит «А куда мы дели всё лето?!» :)
  • НЛО прилетело и опубликовало эту надпись здесь
    • 0
      Судя по скринам, автор для начала обрабатывал кадр фильтром, определяющим зоны высокого контраста (переходы от ярких (белых) пикселей к тёмным (чёрным) и наоборот), т.к. именно так выглядит текст. Порог задавался довольно высокий, например, скачок на 200 единиц.
      А потом отфильтрованному кадру давалась оценка, например, просто по количеству чёрных пикселей, которые обозначают зоны высокого контраста. В кадрах без серийника таких пикселей относительно мало.
      К тому же автор учитывал зону размещения текста в кадре, оценивая только эту область.
      • НЛО прилетело и опубликовало эту надпись здесь
        • 0
          Технически примерно так:

          BufferedImage image = ImageIO.read(file);
          Raster raster = image.getRaster();
          byte[] data = ((DataBufferByte) raster.getDataBuffer()).getData();
          
          for (int i = 0; i < data.length; i += 3)
          {
              int r = data[i] & 0xFF;
              int g = data[i + 1] & 0xFF;
              int b = data[i + 2] & 0xFF;
              ...
          }

          VLCj только для сохранения скриншотов используется :)
    • 0
      Дополнил статью по работе с видео и алгоритму обнаружения ключа в кадрах.
      • НЛО прилетело и опубликовало эту надпись здесь
  • +44
    Мда… я со своим $content=file_get_contents('http://thisishorosho.ru');
    if(strpos($content, './?v=120')!==false) {
    mail('pasechnikbs@gmail.com', 'This is Horosho', 'http://thisishorosho.ru/?v=118');
    }
    и запуском через крон каждую минут почувствовал себя лохом
    • +67
      И второй раз почувствовал когда не скрыл свою почту в предыдущем комментарии. Нельзя ночью писать, нельзя нельзя
      • +2
        Не страшно, у Гмейла хорошие спам-фильтры =)
        • +1
          Многие, как например я, не любят когда в папке спам что-то появляется и испытывают по этому поводу некий дискомфорт :)
        • 0
          Школота побежит инвайты клянчить, спам фильтры не спасут.
    • 0
      Это не вы, Виктор Андреевич?
  • –27
    Хвастовство — это, конечно, дело интересное, однако практической ценности для читателей у этого поста почти никакой нет, поскольку целью являлось описание полученного результата, а не процесса и методик его достижения. Благо автор хоть используемый инструментарий под конец упомянуть не забыл.

    Но что это делает в «программировании» — решительно не понимаю.
    • +6
      ваш пост какую практическую пользу несет для читателей?
      Проверьте свое сознание для начала.
    • +9
      Мне было интересно.
  • 0
    А я вот получил на халяву не особенно мне и нужный ключ для беты на конференции GDC :) Где-то валяется…
  • 0
    А я мечтаю о ключе к Diablo III, все giveaway прошли мимо меня, впрочем как и Dota 2, видимо Боженька бдит, чтобы я не стал окончательно потерянным для общества :-D
    • +1
      не печалься. Купи его! Скорее всего у тебя есть дар рубить бабло! Готов стать твоим деловым партнером!
      • +1
        Ваша ирония не уместна, а покупать я его тем более не буду, лучше уж дождаться релиза и купить игру, да и то — сомнительная затея. Как сказал мой приятель «Dota 2 & DiabloIII ->>> Прощай лето» ггг
        • +2
          Ты не понял. Я хотел тебя подержать а не иронизировать.
          • +1
            Sorry =)
  • 0
    По 4 ключу поясните, пожалуйста: у вас написано, что боты сканируют gdata через прокси, а потом о том, что в отличии от gdata прямые ссылки появляются для любого ip. Какое-то предложение пропущено или я не допонял алгоритм?
    • 0
      Данные, полученные через gdata (youtube api) разные для разных IP (с одного прокси видно 100 видео, на другом все еще 99, актуальная информация задерживается), поэтому из 100 потоков (по потоку на прокси), я жду первое попавшееся завершение потока, т.е. пока через один из прокси не будет обнаружен выход нового видео и получен его videoId. Дальше делается запрос к youtube.com/get_video_info=videoId, тут разные только прямые ссылки на видео, но любому IP (и с любом прокси, можно заметить) они становятся доступны сразу же после выхода видео.
      • 0
        Теперь понял, спасибо.
  • +3
    Вот точно говорят, что программеры самые ленивые (в хорошем смысле) люди. Обожаю такие решения. Правильно, самому что ли кнопкой рефрешить? Пусть компьютер пыхтит, у него голова железная :)
    • 0
      Иногда оно того не стоит. Искать решение монотонной работы сутки, или выполнить монотонную работу за два часа.
      • –5
        Ты, чувак, никогда программистом не станешь. Я не про профессию. Я про голову.
        Иди лучше двор подметай, там выбора нет кроме метлы и монотонной работы в течении двух часов. Да и то, если подумать, можно автоматизировать.
  • +8
    И это хорошо!
  • НЛО прилетело и опубликовало эту надпись здесь
  • –6
    Топик уже набрал +84. А это если я не ошибаюсь — инвайт на хабр, как минимум.
    А инвайт на хабр — бесценно.
    • +3
      Инвайт, вроде, за +100, но на данный момент уже +96 =) так что да, инвайт почти в кармане.
    • +1
      За что заминусовали то?
      • +1
        Не у поминай То-Что-Нельзя-Упомянать в суе…
        • +1
          Оп. Похоже даже так не стоит упоминать…
          Прощайте новые хабропосты…
  • 0
    А я просто поставил галочку «хочу бета» в профиле. Вместе с Европейским тестом получил. Чувствую себя бесконечно скучным =/ Хотя официальное письмо от Blizzard это приятно) Даже если это спам)
    • 0
      На форумах говорят, для этого нужно иметь как минимум одну купленную игру (правда?), а меня одни стартовые версии, поэтому я даже не надеялся на великого Рандома.
      • 0
        Я в свое время покупал диски Warcraft 3 и Warcraft 3 FT, и зарегал их ключи на Battle.net
      • 0
        Когда-то была акция что старые игры близзарда (типа викингов) можно бесплатно подключить к аккаунту. У меня так друг бету старкрафта получил.
    • 0
      >Вместе с Европейским тестом получил.
      видимо, у вас конфиг нестандартный, ну или вы везучий очень…
  • 0
    А участникам бета-теста присылают гостевые ключи, как было с sc2? Жива во мне ещё надежда, что добро возвращается…
  • +7
    Да хрен с ней с игрушкой — бот классный, алгоритмы рулят! :)
    Спасибо за статью.
  • +3
    Вип, ты охренителен!
    Не смотря на то, что я сам очень давно не программировал, прочитал твой пост, как остросюжетный детектив.
    На месте, где ты трясущимися руками вводил ключ — я чуть не откусил кусок от кружки с чаем :)
    • +8
      А я в этот момент чуть расположение букв не забыл на клавиатуре.
  • 0
    Прикольно :)

    Можно было еще прикрутить google docs для распознавания текста и авторегер для battle.net J
    • 0
      Здесь два варианта: очень быстро скачать выпуск с самым низким разрешением и ввести руками или же скачать в высоком разрешении (очевидно дольше) и получить возможность сделать OCR.
  • –2
    Описание бота восхитило, однако… неужели вам так нравится кушать недожаренный сырой пирог бета-версии? Не лучше ли подождать окончания готовки?
  • +12
    Зря вы так со Стасом… зря-зря-зря…
    • –4
      С кем?
      • –1
        Это создатель сайта thisishorosho.ru который раздает ключи на бету diablo III в своих роликах. А фразу «зря-зря-зря…» он часто применяет в своих шутках
        • НЛО прилетело и опубликовало эту надпись здесь
          • –1
            Совершенно верно. Да и шоу он ведет не без помощи других
    • +5
      Он оценил )

  • +3
    Все-так программисты самые страшные извращенцы ;)
  • 0
    Мисье :D
  • +3
    Теперь надо написать бота, который будет из лута в D3 только рар или эпик шмот брать :)
  • +1
    Расстрел воробья из пушки :) Но как прокачка скилла программирования довольно забавно.
  • 0
    Автор молодец.
    А мне бета ключ пришёл ещё до НГ, прошел 2 раза 1ый акт и забил на эту диблу)
  • –2
    В очередной раз убеждаешься, что с русскими шутки плохи.
  • +1
    По мотиву… Он так хотел бету дьяблы… Сори за баянчик, не удержался.
    • 0
      А серьезно, хороший пример к поговорке «Глаза боятся а руки делают», собственно даже и не представлял что такое может быть реализовано настолько быстро и просто. Однозначно респект и уважуха.
  • 0
    А я нашел в Гугле ответы к викторине на Канобу, аккуратненько не спеша за 6 минут ввел правильные ответы и получил ключ на большой раздаче, потому что не похож на бота и давно на Канобу.

    Только DIII мне все равно не очень понравилась )
  • –1
    лета не будет) диабла 3 на подходе)
    те кто родились в 95+ годах, конечно Вам не понравится)
    а тех кто пораньше, тех кто играл еще в диаблу 1, и переиграл все моды диаблы 2, думаю и 3 понравится)
    лично мне понравилась она, но уже и в ней бегает куча ботов и багоюзеров, и удотов читеров)
    ну после офф открытия хотя-бы пол года — год она обязана продержаться на высоте и в топе игр)
    • +1
      >лета не будет)
      «зима не будет»
      Туркмены(или кто они там, киргизы что ли) просто ошиблись, думали, дьябла зимой выйдет:)
  • +1
    Это надо очень сильно любить эту игру…
    • –1
      Не факт, может просто кто-то хочет попробовать свои силы, и посостязаться за ключик.
  • 0
    ждем ключи к бете Diablo в передачах Петросяна и «Аншлаге»
    • 0
      В этих передачах нужно раздавать ключи на русский трешак, который так любит обозревать Мэддисон.
  • –1
    Кстати, Стас прочел эту статью и написал о ней вконтакте.http://vk.com/orangebrains
  • 0
    Кстати, до сегодняшнего дня не знал о существовании ThisIsHorosho. Раздавая ключи для Диабло, вышел отличный PR. Всего пять сотен баксов и её уже обсуждают все популярные блоги.

    На самом деле, это плюс организаторам вирусной акции!
    Сами приколы в видеороликах, честно говоря, туповаты.
    • 0
      >Сами приколы в видеороликах, честно говоря, туповаты.
      Посмотри выпуски из середины. Последние не очень, первые тоже были так себе, но некоторые есть прям шедевры.
  • +3
    Когда читал пост в голове постоянно крутилось «йа хочу беты дьяблы, йа хочу беты дьяблы» :)
  • 0
    сейчас он использует порядка 100 прокси серверов (по 1 потоку на каждый прокси сервер), которые сканируют каждые 5 секунд gdata.
    Сканируют Gdata или Youtube? Вы вроде сказали что gdata с запозданием отвечает? Зачем прокси?
  • 0
    Похоже после этой статьи, получить ключ простому смертному с помощью F5 уже не реально :(
  • 0
    у меня нет времени читать все эти комментарии, но возник вопрос, а не проще было бы посмотреть саму передачу? )))
    • 0
      Маловероятно что был бы первым
  • +5
    Ваши труды не остались без внимания ;)

  • 0
    В новом выпуске, Стас передает вам привет:

    • 0
      Говоря при этом: «В этом выпуске тоже был код Diablo, ну, скорее всего, ты все равно не успел его активировать.»
  • 0
    Шикарно, в сегодняшнем выпуске ключ напечатан в шрифте Webdings :) Только уж поздно я с работы вернулся, может и успел бы на фоне общего офигевания от увиденного вовремя активировать :)

Только зарегистрированные пользователи могут оставлять комментарии. Войдите, пожалуйста.