Что такое API CHPP и с чем его едят
Как написано в разделе «О CHPP» на сайте www.hattrick.org:
CHPP («Certified Hattrick Product Provider») — сеть для программистов в сообществе Hattrick.
Что же это такое? В принципе, эта информация вполне открытая, узнать что это и зачем можно в разделе CHPP приложения — там есть такие разделы как: Что такое CHPP? и Как это работает. Если вкратце, то можно сказать так: поскольку команда разработчиков Hattrick не имеет возможности реализовывать любые пожелания пользователей по созданию дополнительных инструментов, помогающих им в этой игре, но заинтересована в том, чтобы такие инструменты существовали (понятно почему), то разработчикам предоставляется некое API, с помощью которого они могут получать данные из системы Hattrick и на основе этого реализовывать свои приложения. Получение данных, используя это API, реализовано отправкой запроса с параметрами на специальный веб-адрес CHPP Hattrick’а и получением в ответ xml-файла, содержащего нужную информацию.
Безопасность CHPP
Естественно, поскольку речь идет о данных пользователей, то понятно, что в полный рост встает вопрос по поводу безопасности этого процесса в отношении CHPP-приложений. Вообще-то желательно, чтобы пользователь знал — какие данные, кому будут доступны и в течении какого времени, а также насколько безопасен сам механизм обмена данными Hattrick’а и CHPP-приложения. Начнем с последнего. Чтобы организовать процесс получения разработчиком доступа к данным других пользователей в разное время применялись следующие методы передачи владельцем команды права на обработку своих данных CHPP-приложению:
- Давным-давно: ввод логина и пароля от Hattrick в CHPP-приложении. Самый дурной способ, могущий повлечь за собой утечку пароля в чужие руки и, соответственно, потерю управления командой.
- Ввод логина и специального «пароля для чтения», который работал только в CHPP-приложениях. Уже лучше, но ушедший пароль прекрасно подходил для чтения данных вашей команды любым, кто его получал, через любое CHPP-приложение. Метод работал до июня 2011 г.
- И новый метод: используется схема аутентификации OAuth. Метод начал работать с ноября 2010 г.
Что же это за схема аутентификации OAuth и чем же она хороша? Её суть в том, чтобы CHPP-приложение с одной стороны не знало пароль пользователя, а действовало только через некий уникальный токен, а с другой стороны, этот токен был бы бесполезен в другом CHPP-приложении. Как же это получается? Во-первых, каждое приложение имеет уникальные OAuth-ключи (Consumer Key и Consumer Secret). Во-вторых, для того чтобы пользователь разрешил приложению считывать его данные, приложение должно перенаправить пользователя на специальную страницу CHPP-Hattrick (https://chpp.hattrick.org/oauth/authorize.aspx), пользователь вводит свой логин/пароль и приложению возвращается только секретный токен пользователя связанный с ключом приложения. Таким образом, приложение не может знать пароль пользователя в Hattrick’e (а пользователь должен знать что вводить свой пароль он должен исключительно на веб-сайтах Hattrick’a), а следовательно и утекать нечему — токен уникальный и имеет значение только в совокупности с ключами самого приложения.
Права на доступ CHPP-приложению предоставляются навсегда, но доступ может быть прекращен в любое время, достаточно зайти в настройки Hattrick и выбрать там пункт Приложения CHPP, а в нём отменить доступ любому приложению.
Итог: в данное время безопасность получения данных через CHPP весьма высока.
Данные CHPP
Paranoia mode on
На странице приложения (можно перейти из своих настроек) указан тип программы, данные об авторе (и авторах, если таковых несколько), количество пользователей разрешивших доступ приложению к своим данным, рейтинг, скриншоты, форум и метки приложения, по которым оно видится в списке CHPP-приложений в Hattrick’е.
Теперь что касается вопроса о том, какие данные доступны приложению. Всего есть 4 типа доступа, которые может затребовать приложение: «Только чтение», «Управлять товарищескими встречами», «Давать указания на матч» (только саппортерам), «Управление юниорами». Последние три являются узкоспециализированными, в основном же доступ запрашивается по первому варианту: «Только на чтение». «Чтение чего?» — спросит читатель-параноик. «Чтением всего» — успокоим мы его. Да, читать можно любые данные, которые предоставляет API CHPP:
- achievements (достижения менеджера)
- arenadetails (информация о стадионе)
- alliances (поиск федераций)
- alliancedetails (информация о федерации)
- avatars (аватары игроков)
- bookmarks (закладки)
- challenges (товарищеские матчи)
- club (информация о клубе и его специалистах)
- cupmatches (информация о кубковых матчах)
- economy (финансы команды)
- fans (информация о болельщиках)
- hofplayers (зал славы команды)
- leaguedetails (информация о лигах)
- leaguefixtures (будущие игры в лиге)
- live (отображение матча живьем)
- matches (последние и будущие матчи команды)
- matchesarchive (прошедшие матчи за период)
- matchdetails (информация о матче)
- matchlineup (расстановка в прошедшем матче)
- matchorders (расстановка на будущий матч)
- nationalteams (национальные команды)
- nationalteamdetails (информация о национальной команде)
- nationalteammatches (матчи национальной команды)
- nationalplayers (текущие игроки национальной команды)
- players (игроки команды)
- playerdetails (информация об игроке)
- playerevents (события игрока)
- regiondetails (информация о регионе)
- search (поиск)
- teamdetails (информация о команде)
- training (текущая тренировка в команде)
- trainingevents (события по тренировке игрока)
- transfersteam (трансферы команды)
- transfersplayer (трансферы игрока)
- worldcup (группы и матчи кубка мира)
- worlddetails (информация о странах: валюта, время апдейтов)
- worldlanguages (доступные языки)
- youthavatars (аватары игроков юношеской команды)
- youthplayerdetails (информация об игроке юношеской команды)
- youthplayerlist (игроки юношеской команды)
- youthteamdetails (информация о юношеской команде)
Огромное количество информации можно получить. Часть информации, конечно, и так открытая, и её можно получить от имени любого пользователя, но самое главное, что пользуясь разрешением пользователя практически всё можно узнать об этом менеджере: о его команде (teamdetails, training), клубе (club, economy) и игроках (players, playerdetails, trainingevents) и даже о расстановке на следующий матч (matchorders)! Ну что, товарищи параноики, вытираете холодный пот? Могу несколько вас успокоить: господа из Hattrick’а об этом тоже думали и кое что-то придумали.
Во-первых, есть такой документ, как CHPP Product License Agreement (17 пунктов), в котором в частности говорится (пункты 2.1 и 4.1), что у каждого CHPP-приложения есть такое понятие, как «Functional description«, в котором нужно указать какие конкретно xml-файлы (поставить галочки) запрашивает это приложение и зачем это нужно (написать текст). Без этого приложение не будет одобрено и не получит статус Published (Опубликовано), т.е. никакие пользователи, окромя тестеров этого приложения им пользоваться не смогут. Также администрация требует дополнения данного описания по мере добавления функциональности и следит за этим. Как именно следит доподлинно неизвестно, но я думаю логируются все или некоторые запросы CHPP. Ну и не только следит, но и принуждает разработчиков следовать данному требованию (не так давно как раз была волна выверки CHPP-приложений). Т.е. команда CHPP обеспечивает порядок на этом поле. Единственное, за что хотелось бы покритиковать их, это за то, что когда пользователю предоставлен выбор: давать или не давать доступ CHPP-приложению к своим данным, он не видит этого самого Functional description, и вынужден доверять разработчику и администрации Hattrick’а. И тут мы плавно переходим к тому, что лично я считаю главным.
Итак, во-вторых, когда некий пользователь хочет стать CHPP-разработчиком он принимает соглашение CHPP Developer License Agreement. Там всего 5 пунктов, но нас интересует вот такой:
* I may lose my status as a CHPP developer (along with the right to continue publishing any approved CHPP product) if I violate the Hattrick user agreement, privacy policy, or specific CHPP rules.
Что это значит? Пользователь рискует потерять свой статус CHPP-разработчика в случае нарушения пользовательского соглашения, политики конфиденциальности или определенных правил CHPP. Не думаю, что кто-то захочет рисковать своей безукоризненной репутацией и давать поводы к расследованию администрации. Как говорится: репутация зарабатывается годами, а вот пропасть может в один миг. Да и спросите себя сами — вот вы являетесь разработчиком хорошего приложения, у которого много пользователей — вы будете злоупотреблять их доверием? С риском потерять это приложение и возможность вообще что-то разрабатывать в Hattrick’е? А другим сайтам в интернете, где вы храните свои данные вы доверяете?
Также хотелось бы рассмотреть вопрос безопасности уже загруженных данных. В случае с настольным приложением понятно — безопасность обеспечивает сам пользователь, если они хранятся локально. В случае же с веб-приложением или же если данные хранятся в удаленной базе, то CHPP-разработчику необходимо обеспечить безопасность этого ресурса. Т.е. не раздавать пароли к хостингу или базе данных налево и направо, ограничить доступ к исходникам и прямой доступ к базе данных, разрешать необходимый супер-доступ только средствами приложения. Иначе идиллия однажды может кончится плачевно.
Итак, подведем итог этой части: утечка данных через владельца приложения возможна, но за этим следит администрация Hattrick’а и жёстко отвечает разработчик.
Стать CHPP-разработчиком?
Хотите стать разработчиком? Спросите меня как! ?
Если вы хотите стать разработчиком, то это проще простого — открываете в меню пункт Мой Hattrick, в меню слева отыскиваете CHPP-приложения, а потом в меню справа ссылку Стать разработчиком. Читаете и принимаете CHPP Developer License Agreement. Как на английском? Точно, к великому сожалению, вся информация For developers не переведена и присутствует только на английском языке, в том числе и API documentation. К счастью, там всё достаточно понятно. Поэтому тщательно изучаем этот раздел и раздел Authentication with OAuth. Потом запрашиваем лицензию на новое приложение (Request product license) заполняя название, тип и описание приложения и вместе с этим принимаем CHPP License Agreement. Осторожнее! Название уже будет невозможно поменять!
Если вы внимательно читали лицензии, которые вы принимали и при подаче заявки следовали им, то вашу заявку скорее всего одобрят, надо просто подождать. Совершенно точно отклонят всё то, что запрещено в CHPP Product License Agreement. Например, запрещено создавать аналоги функциональности Hattrick Supporter или другого платного сервиса Hattrick. Думаю понятно почему. Ну и других запретов в этой лицензии полно. Почему-то не сказано, правда, о трекерах. Фактически, можно иметь только одну лицензию на локальный трекер (для любой страны) и только одну лицензию на глобальный трекер. Сейчас эта традиция слегка нарушена: лицензию на глобальный трекер имеет HT-World.org и мой Hattrick Portal Tracker. Так получилось, потому что по имеющемуся глобальному трекеру возникли вопросы у администрации CHPP, так как один из авторов вообще перестал отвечать, а само приложение не особо развивалось. Такая же судьба ждет и любой локальный трекер, если он будет заброшен. Его лицензия может быть просто отозвана.
В случае одобрения заявки вы получите свой продукт в статусе Not published. Вы можете добавить к нему еще разработчиков и тестеров. Пока продукт не опубликован, только эти пользователи смогут авторизоваться через OAuth.
Разрабатывать можно на любом языке программирования, но надо точно быть уверенным, что для этого языка существуют библиотеки для работы с OAuth. Я, например, пишу на ASP.NET и мне прекрасно подошел проект DotNetOpenAuth (пришлось фактически только реализовать интерфейс IConsumerTokenManager и написать немного банального кода), а вот остальные варианты для .NET работать отказались. Для адептов PHP есть вариант гораздо проще: PHT — PHP Framework for Hattrick CHPP program. Фактически, это фреймворк с интегрированной библиотекой OAuth, чтением всех доступных XML-файлов, причем еще и полной поддержкой ООП. Как говорится: бери и пиши.
После того как приложение будет написано и оттестировано, разработчик может его перевести в статус Published. Для этого нужно указать адрес домашней страницы приложения, заполнить Functional description, указать теги платформы (Android, iPhone, Linux, Mac, Mobile, Web, Windows), языки переводов, для каких стран разработано приложение и какую информацию оно предоставляет (Betting, Federations, Financial, Graphs, Healing, History, Information, Links Statistics, Tactics, Training, Transfers, Viewer, Youth). После этого нужно будет заручится терпением и ждать.
Что касается размещения приложения и его поддержки — тут вся ответственность на разработчике. Что касается, например, веб-приложений, то придётся покупать домен и ежегодно его продлять, думать куда его делегировать (есть как платные так и бесплатные сервисы), оплачивать хостинг. Хостинг, конечно, можно взять и бесплатный (да хоть даже у Windows Azure есть неплохие бесплатные варианты), но очень трудно найти хостинг с большой базой данных. Вот, база данных Hattrick Portal сейчас занимает 800 Мб, что вынуждает искать только платные ресурсы, которые даже самые дешевые обходятся от 1000 до 3000 рублей в год (у того же Windows Azure база данных до 1 Гб стоит $10 в месяц). Да плюс 300-600 руб. в год за доменное имя.
Как это можно компенсировать? На рекламе не заработать — это однозначно. Слишком маленький поток посетителей и все идут, скажем так, не по рекламе кликать. В принципе, Hattrick не препятствует получению приложением денег (там даже галочка есть Product requires payment) и можно зарабатывать на каких-то уникальных возможностях приложения, но я затрудняюсь сказать, возможно ли этим будет хотя бы оправдать существование ИП. Когда я задавал этот вопрос пользователям, с которыми вёл переписку по Hattrick Portal Tracker, согласны ли они платить за расширенные возможности: например, за обновление ВСЕХ игроков в трекере и автоматическую подгрузку игроков зарегистрированных команд, то мнение у меня сложилось такое, что в самом лучшем случае я лишь оправдаю затраты на хостинг и это еще без ИП! Так что, я бы с удовольствием посмотрел на пример удачной монетизации CHPP-приложения. На моей памяти только Alltid Hattrick закончил каким-то успехом: несмотря на то что они были убыточны, но их всё-таки купил Hattrick, так что у них сказка оказалась еще и со счастливым концом.
Теперь о трекерах…
После всего вышеизложенного у вдумчивого менеджера должен крутится в голове вопрос: пользоваться или не пользоваться CHPP-приложениями? Конечно, пользоваться. Только с оглядкой на тех, кто его разработал и поддерживает. Со своей стороны могу однозначно посоветовать пользоваться трекерами — российским (Hattricker) и глобальным (Hattrick Portal Tracker).
Почему нужно пользоваться трекером? Потому что, если вы решили вырастить игрока сборной, то перед вами встает вопрос — нужен ли ваш игрок сборной (сейчас или в будущем)? Вы, конечно, можете по старинке зайти на страничку сборных, найти скаута, написать ему сообщение. Через некоторое время может быть он напишет вам сообщение, если не пропустил ваше. Потом скаут будет писать вам, запрашивая нужную ему информацию, и опять же если вы не пропустите его письмо, и будет хорошо если ответите. Чем хорош такой путь? Ну пообщаться со скаутом можно — прикольно, чё. А чем плох? Во-первых, вы получаете все указания по развитию вашего игрока с запозданием. Во-вторых, данные проходят через двое рук и велик шанс, что что-то может быть сохранено в базе данных не так, не туда и не то. В-третьих, вас таких у скаута может быть несколько десятков, кого-то можно забыть, кого-то пропустить, от кого-то ответа не дождаться, а в итоге — база в состоянии, скажем так, несвежем. Отсюда потом может и негатив попереть — мол мой игрок круче был, а взяли другого. А пропустили твоего, ну вот так получилось, все мы люди, все мы ошибаемся, не ошибается только тот, кто не делает ничего.
Поэтому, если есть подозрение, что у вас есть крутой игрок, в будущем кандидат в сборную, не медлите. Идите на страницу трекера, регистрируйтесь и проверяйте — подходит ли он по требованиям. Если игрок будет загружен в трекер, то в дальнейшем информация о нем будет обновляться автоматически, так что скаут или тренер увидят, как он развивается и смогут заранее пользуясь уже имеющейся информацией скорректировать развитие этого игрока в рамках их видения его будущего — напишут лично вам и попросят.
Опять же тренеру гораздо проще передавать по наследству актуальный трекер с игроками, а не тетрадочки и экселевские таблички.
Что касается трекера Hattrick Portal Tracker, то могу просто показать пару скриншотов для того, чтобы было более понятно о чем вообще идет речь:
Кроме этого у скаутов и тренера есть и другие инструменты — фильтр по требованиям, свободный фильтр, список предупреждений о проблемах с игроками и прочее. А простые владельцы игроков могут сравнить своих питомцев с другими игроками подходящими под определенный фильтр.
Так что, призываю в очередной раз: товарищи, пользуйтесь инструментами, это и быстрее и эффективнее!
- dukeyusupov
- 0
- 505