И вот однажды ко мне зашел посетитель из Blizzard:
99% людей во время первого посещения ищут себя и своих друзей. Посетитель из Франции не стал исключением и оставил в логе просмотров несколько персонажей, скорее всего принадлежащих работникам близзард (что было видно по активности на форуме и другим признакам). Конечно, мне стало интересно, чем же отличаются персонажи гейммастеров от персонажей обычных смертных и отличаются ли вообще.
После просмотра ачивок этих персонажей стало ясно, что при поступлении на службу новоиспеченному ГМу выдают набор коллекционных изданий всех игр близзард. После более пристального изучения вскрылась одна деталь: все коллекционки получены в один день (видимо, примерная дата поступления на работу).
Используем API Battle.net
Гмы получают все существующие (на дату получения) коллекционки — а значит, и самую первую, «ванильную». Она была выпущена больше 10 лет назад и сегодня достать ее можно разве что на ebay за 2-3 тысячи евро. Её-то и будем использовать для поиска других персонажей.
Искать будем персонажей, у которых есть такой пет (его дают бонусом за активацию ванильной коллекционки):
Так как прямого доступа к спискам персонажей API не предоставляет, будем искать персонажей через аукцион.
realm = "гордунни" # реалм, на котором будем искать персонажей
# Получаем ссылку на дамп аукциона
r = requests.get("http://eu.battle.net/api/wow/auction/data/%s" % realm)
auction_dump_url = json.loads(r.text)["files"][0]["url"]
# Загружаем данные по лотам на аукционе
auc_data = json.loads(requests.get(auction_dump_url).text)
# Составляем список имен/реалмов персонажей
chars = {(lot["owner"], lot["ownerRealm"]) for lot in auc_data["auctions"]["auctions"]}
В этой функции определяем, является ли персонаж потенциальным гмом:
def is_gm(name, realm):
r = requests.get(CHAR_API_URL.format(name=name, realm=realm))
if r.text.find("Panda Cub") != -1:
return True
Запускаем проверку:
for name, realm in chars:
if is_gm(name, realm):
print("Возможно ГМ: %s %s" % (name, realm))
time.sleep(1)
import json
import requests
import time
CHAR_API_URL = "http://eu.battle.net/api/wow/character/{realm}/{name}?fields=pets,guild"
# В этой функции определяем, является ли персонаж потенциальным гмом
def is_gm(name, realm):
r = requests.get(CHAR_API_URL.format(name=name, realm=realm))
if r.text.find("Panda Cub") != -1:
return True
realm = "гордунни" # реалм, на котором будем искать персонажей
# Получаем ссылку на дамп аукциона
r = requests.get("http://eu.battle.net/api/wow/auction/data/%s" % realm)
auction_dump_url = json.loads(r.text)["files"][0]["url"]
# Загружаем данные по лотам на аукционе
auc_data = json.loads(requests.get(auction_dump_url).text)
# Составляем список имен/реалмов персонажей
chars = {(lot["owner"], lot["ownerRealm"]) for lot in auc_data["auctions"]["auctions"]}
# Запускаем проверку
for name, realm in chars:
if is_gm(name, realm):
print("Возможно ГМ: %s %s" % (name, realm))
time.sleep(1)
Примечание: скрипт ищет только персонажей, выставляющих лоты на аукционе. Для более широкого охвата можно также сканировать согильдийцев каждого владельца лота.
Дальше нужно смотреть другие признаки — сколько получено коллекционок за один день, их общее кол-во и так далее.
Конечно, не каждый персонаж, который соответствует критериям, принадлежит ГМу. Это может быть и просто коллекционер, например.
Для отображения результатов скрипта создал простенький сайт: http://wow-gm-track.website
Из интересностей: в процессе сканирования выявились целые гнезда — гильдии, в которых сразу несколько разных аккаунтов, принадлежащих (предположительно) ГМам. Например: Зов древних (6 штук, в том числе глава гильдии).
И немного статистики: на сегодняшний день просканировано 1,7 миллиона персонажей на русскоязычных реалмах, ванильную коллекционку имеют 1306 персонажей (0,07%), из них только 380 персонажей получили хотя бы 4 коллекционки в один день (0,02% от общего числа).
Комментарии (15)
gcc
03.06.2015 19:59Я только одного не понял — зачем им всё это выдают? В моем представлении персонаж ГМу нужен только для присутствия в игре и общения, и тусуется он обычно в какой-то специальной локации, либо просто невидим. Если под ГМом в статье подразумевается просто сотрудник Blizzard, то другой разговор.
GRascm
03.06.2015 20:02В статье по персонажем ГМа, скорее всего имелись в виду личные персонажи, а не рабочие.
bmkn Автор
03.06.2015 20:02Да, имеются в виду личные игровые персонажи сотрудников. Назвал их ГМами для краткости, должность, я думаю, может быть любая.
vsb
03.06.2015 20:28> Я только одного не понял — зачем им всё это выдают?
Премия за усердную работу :)boblenin
03.06.2015 21:35Чтобы снизить производительность и чтобы остальным не приходилось так усердно работать стараясь поспеть за звездами :).
bmkn Автор
03.06.2015 22:08Я подозреваю, выдают их абсолютно всем в качестве бонуса. Как печеньки в офисе. Только компании это еще и ничего не стоит. :)
justabaka
04.06.2015 07:20+2Совершенно верно. Более того, частенько выдают еще и с запасом для друзей (не сотрудников), есть бонусы типа вечной подписки (на самом деле, пока сотрудник работает).
Brick85
04.06.2015 09:39Какое-то неуютное чувство после прочтения…
Получается вы использовали статистику своего сайта для вычисления информации о пользователях и воспользовались этим? Или любой пользователь может у вас посмотреть с какого адреса и что делал другой пользователь?
Если первый вариант, то это как-то не честно — пользователь (в данном случае работник blizzard) доверяет вам свои личные (ip, привычку вводить себя и друзей и т.д.) данные, основываясь на том, что приличные админы приличных сайтов не будут с помощью этих данных на него охотиться…
Я понимаю, что есть люди, которые для такого только сайты и создают, но считаю, что это не профессионально.
И мало того, что выследили, так ещё и в открытый доступ выложили…BasilioCat
04.06.2015 10:54+4Вы не поверите, ваши личные данные, интересы, поисковые запросы, фотографии и списки друзей, которые вы доверили Фейсбуку, ВК и прочим империям добра открыто продают рекламодателям. Да, прикрываясь словами об обезличивании и пр. А уж интересующимся товарищам из спецслужб просто так, бесплатно выдают, и без всякого обезличивания — некто Сноуден про это писал. Там-то, безусловно, работают добрые высокоморальные люди, которые эти данные если используют, то только во благо всего человечества. Ну или хотя бы его лучшей части.
DLag
04.06.2015 10:55+1Вы вероятно никогда не сталкивались с аналитикой посетителей с Digital Marketing и т.п.
О вас давно уже известно все владельцам сайтов где вы проводите время.
Вас уже давно посчитали и используют эту информацию в своих целях.
Askew
А как вы твинков вычисляете? По ачивкам?
bmkn Автор
По хешу списка питомцев. Отображение ачивок можно отключить в настройках игры, а питомцев уже никак не скроешь.