Не особо надеюсь получить ответ, но мб прокатит

DonFart
  • Была здесь темка про сайт со статистикой http://stats.dota2.be/player/
    Так вот, знает ли кто каким образом они получают инфу? Хочется верить, что не тупо скачивая все реплеи и снимая инфу :(
  • ох сударь не советую я вам гулять по подобным сайтам
  • И чем же так опасен этот сайт?
  • да ни чем он не опасен, а информацию он берет из базы данных доты, она же ведь общедоступна через клиент игры
  • четкий сайтец,лучше бы вместо магаза вогнали его в игру :(
  • http://video.sibnet.ru/video51320

    блин не могу с этого сайта видос залить) короче, 4 года назад, когда я еще был дном, для тролей ОК я и щас дно, сделал мувик, точнее что-то типо него xDD посмотрите кто хочет поржать xDDDDDD
  • Автор темы
    FatEd сказал(а):

    четкий сайтец,лучше бы вместо магаза вогнали его в игру :(
    Нажмите, чтобы раскрыть...

    Сайт не очень))) Инересует его механика. Идейки уже появились, если пофлудите еще, буду рад.
  • Действительно, чтобы парсить реплеи, придётся скачивать по 1 тб данных в день. Это и реализовать сложно, и стим обязательно за такое забанит: в enterprise мире каналы стоят денег. И не тех 500 рублей за 20 мбит, которые вы платите провайдерам. Провайдеры просто статистически рассчитали, что 20 мбит вы забиваете менее 5% времени. А попробуйте забить все свои 20мбит 24/7, часто провайдер найдёт к вам персональный подход и обрежет всё нафиг -)

    DonFart, мне кажется, информацию они парсят со стима одним из следующих способов:
    1. Перехватывают пакет от стима (который приходит для того, чтобы отобразить статистику выбранного тобой матча)
    2. Вычитывают из памяти игры (когда статистика отображена)
    3. Делают скриншот и парсят его


    Третий пункт самый бредовый: в день проходит около 50 000 игр, получается, нужно запросить реплей, сделать скриншот и обработать - меньше чем за 2 секунды. Плюс к тому, с картинки неизвестен STEAM_ID, нужно кликать на профили игроков. Это самый тупой и медленный способ. Хотя, при должном усердии и десятке виртуальных машин с дотой, он может сработать.

    Первый пункт красиво звучит на словах. На деле же хедер пакета разбирается хорошо и красиво, а вот тело сообщения расшифровать мне ни в какую не удаётся. Ставил контрольный эксперимент: делаю один и тот же запрос на один и тот же реплей, смотрю свой пакет. В хедере пакета изменяется только порядковый номер, как и должно быть. Тело же пакета изменяется полностью. Я предполагаю, если бы оно было просто сжато каким-нибудь bzip2, как минимум были бы повторяющиеся сигнатуры блоков. Там же я ничего подобного не увидел, значит - это шифрование. Значит, на пустом месте его взломать просто невозможно.

    Второй пункт звучит тоже красиво. Но мне опять же не удаётся найти нужные данные в памяти. Нет, они находятся. Но не все, и после поиска часть пропадает. Вообще, эти данные ведут себя как хотят. И, забегая вперёд, скажу - что, видимо, данные которые я нахожу это артефакты от вызовов функций отрисовки на экране. Следовательно, не стоит ожидать, что в этой памяти будут все данные. Они там фрагментированы и частично перезаписаны.

    Итак, все три пункта пока что фейл. Но есть последний, самый правильный пункт. Для реализации которого мне на данный момент не хватает опыта и знаний: можно отдебажить доту. Если данные отрисовываются на экран, значит где-то эти данные есть. Можно найти функцию, которая отрисовывает данные, посмотреть, кто её вызвал. Тот, кто её вызывает - имеет все данные. По большому счёту, можно заменить функцию отрисовки своей собственной функцией и получать все данные на блюдечке. Кроме того, можно попытаться найти код, которые выводит сообщения в консоль "запрашиваю такой-то реплей" и т.п., из этого места так же попасть в метод, который знает данные.
    Да, да, звучит красиво. А на практике я пялюсь в ассемблер и хрен чё понимаю.

    Соответственно, у меня просьба: если кто-нибудь знает какой-то другой способ получить все данные - пожалуйста, дайте мне знать. Если вы смогли справиться с задачей одним из приведённых способов - аналогично, пожалуйста, поделитесь опытом! Ну и если вы просто ас дебага и ассемблера, для вас не составит большого труда в этом разобраться. Отпишитесь, я найду вас :)

    Любая информация очень ценна. Напишите, что вы знаете?
  • Автор темы
    Этой теме для популярности нехватает великого мыслителя:(
Кто смотрит тему (Пользователи: 0, Гости: 0)