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

avatar DonFart

1286

8

DonFart

Пользователь

Регистрация: 27.11.2011

Сообщения: 335

Рейтинг: 12

DonFart

Регистрация: 27.11.2011

Сообщения: 335

Рейтинг: 12

Была здесь темка про сайт со статистикой http://stats.dota2.be/player/

Так вот, знает ли кто каким образом они получают инфу? Хочется верить, что не тупо скачивая все реплеи и снимая инфу :(

Kristina_Arty

Пользователь

Регистрация: 21.05.2012

Сообщения: 276

Рейтинг: 105

Kristina_Arty

Регистрация: 21.05.2012

Сообщения: 276

Рейтинг: 105

ох сударь не советую я вам гулять по подобным сайтам

Shambala

Пользователь

Регистрация: 28.05.2012

Сообщения: 589

Рейтинг: 148

Shambala

Регистрация: 28.05.2012

Сообщения: 589

Рейтинг: 148

И чем же так опасен этот сайт?

3A9LL

Пользователь

Регистрация: 04.06.2012

Сообщения: 83

Рейтинг: 1

3A9LL

Регистрация: 04.06.2012

Сообщения: 83

Рейтинг: 1

да ни чем он не опасен, а информацию он берет из базы данных доты, она же ведь общедоступна через клиент игры

fated

Пользователь

Регистрация: 20.04.2012

Сообщения: 967

Рейтинг: 777

fated

Регистрация: 20.04.2012

Сообщения: 967

Рейтинг: 777

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

fFamous#MK5

Пользователь

Регистрация: 08.02.2012

Сообщения: 1948

Рейтинг: 1726

fFamous#MK5

Регистрация: 08.02.2012

Сообщения: 1948

Рейтинг: 1726

http://video.sibnet.ru/video51320

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

DonFart

Пользователь

Регистрация: 27.11.2011

Сообщения: 335

Рейтинг: 12

DonFart

Регистрация: 27.11.2011

Сообщения: 335

Рейтинг: 12

FatEd сказал(а):↑

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

Нажмите, чтобы раскрыть...

Сайт не очень))) Инересует его механика. Идейки уже появились, если пофлудите еще, буду рад.

Диман2

Пользователь

Регистрация: 09.06.2012

Сообщения: 1

Рейтинг: 0

Диман2

Регистрация: 09.06.2012

Сообщения: 1

Рейтинг: 0

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

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

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

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

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

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

Да, да, звучит красиво. А на практике я пялюсь в ассемблер и хрен чё понимаю.

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

Любая информация очень ценна. Напишите, что вы знаете?

DonFart

Пользователь

Регистрация: 27.11.2011

Сообщения: 335

Рейтинг: 12

DonFart

Регистрация: 27.11.2011

Сообщения: 335

Рейтинг: 12

Этой теме для популярности нехватает великого мыслителя:(