- PVSM.RU - https://www.pvsm.ru -

Использование социального капитала как критерия авторитетности пользователя

Социальный капитал — термин введённый французским философом Пьером Бурдьё в 1983 году. Изначально под социальным капиталом понимались «ресурсы, основанные на родственных отношениях и отношениях в группе членства», впоследствии термин был развит Джеймсом Коулменом и теперь он трактуется весьма широко.

Поскольку это «капитал», то подразумевается что из него можно извлечь выгоду. Яркий пример из реальной жизни: социальным капиталом являются ваши знакомства, благодаря которым вы получаете высокооплачиваемую работу.

В IT-сфере социальный капитал тоже нашёл своё применение (примеры из отечественной практики): не так давно Вконтакте ленту новостей профиля начали фильтровать в зависимости от авторитетности источника новости для вас (чем больше социальных связей у вас с источником новости, тем больше шансов на то, что его новость попадёт в вашу ленту), на днях в ЖЖ запустили новый рейтинг пользователей, который также основан на социальном капитале.

На основе оценки социального капитала вы, как владелец интернет-ресурса, можете оценивать авторитетность и адекватность посетителя и соответственно выделять в общем потоке его комментарии, давать какие-то дополнительные возможности и т.д. Остаётся только один вопрос: откуда брать данные о социальном капитале вашего посетителя? Здесь нам на помощь приходят социальные сети. Далее пример.

Дабы не склонять вас к обсуждению политики, особенно с учётом происходящих в оффлайне событий, я не буду рассказывать детали того, как используем этот метод мы (а мы его тоже используем), а воспользуюсь выдуманным примером.

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

Вконтакте

В API данной социальной сети есть метод users.get [1], который возвращает такие интересные нам данные как наличие привязки анкеты к телефону (поле has_mobile), рейтинг анкеты (поле rate, которое говорит о том, насколько заполнена информацией анкета), показания счётчиков различной активности (поля counters.friends, counters.followers, counters.subscriptions, counters.notes и т.д.) Понятно, что когда пользователь будет пытаться обойти ограничение путём создания новых, пустых анкет, показания перечисленных выше счётчиков будут очень маленькими. Также в процессе авторизации пользователя через Open API, мы получаем его ID, величина которого также будет говорить о том, насколько давно зарегистрировался пользователь.

Фейсбук

Проведя авторизацию пользователя Фейсбука через OAuth и используя очень удобное Graph API, мы можем узнать сколько у пользователя друзей (запрос graph.facebook.com/me/friends?access_token=aaabbbccc [2]), предположить как давно он зарегистрировался, исходя из номера его ID (базовая информация через graph.facebook.com/ruslanleviev [3]), насколько активно «лайкает» различные странички (список graph.facebook.com/me/likes?access_token=aaabbbccc [4]).

Твиттер

В твиттере получение всех интересующих нас данных происходит всего одним запросом через метод verify_credentials [5]. В полученном ответе нам интересны такие поля как created_at (как давно создан аккаунт), favourites_count (сколько твитов пользователь добавил в избранное), followers_count (сколько человек читает данного пользователя), verified (крайне редко можно встретить положительное значение в этом поле, оно говорит о том, что аккаунт верифицирован и действительно принадлежит указанной известной личности), friends_count (сколько человек читает данный пользователь; также исходя из абсолютного значения данного показателя и из его соотношения с кол-вом читателей, можно определить факт накрутки, взаимофолловинга), statuses_count (говорит о том, как много твитов написал за всё время пользователь).

Одноклассники

Единственная из известных мне социальных сетей, в которой процесс подключения к API не автоматизирован: сначала через специальную форму [6] надо посылать запрос на регистрацию вас в качестве разработчика и ждать ответа техподдержки, затем если вам нужно иметь доступ к каким-то расширенным методам, то надо опять же посылать в техподдержку письменный запрос на предоставление доступа к определённым действиям.
Но если вы всё же смогли перебороть лень и успешно прошли перечисленные выше этапы, то из авторизации пользователя Одноклассников мы тоже можем извлечь полезные данные. Используем метод auth.login [7], либо auth.loginByToken [8] и получаем в ответе такие поля как uid (по величине которого мы можем предположить как давно зарегистрировался пользователь), activated_profile (активирован ли профиль). Также через метод friends.get [9] мы можем получить кол-во друзей пользователя.

Мой Мир

Как и в перечисленных выше соцсетях, API Моего мира располагает методом users.getInfo [10], где нам интересны поля uid, is_verified (подтверждена ли привязка анкеты к мобильному телефону). Аналогично есть метод friends.get [11] (можем узнать кол-во друзей).

Живой Журнал

К счастью, в ЖЖ для каждого аккаунта есть XML-файл с описанием аккаунта, и он доступен всем без какой-либо авторизации по адресу username.livejournal.com/data/foaf [12], но есть другая проблема: пользователь в таком случае может указать чужой аккаунт. Поэтому нам всё равно придётся сначала авторизовать пользователя посредством OpenID. В указанном выше файле нам интересны поля foaf:Person->ya:blogActivity->ya:posts->ya:Posted (содержит кол-во опубликованных постов), foaf:Person->foad:weblog (содержит атрибуты lj:dateCreated и lj:dateLastUpdated). Но это ещё не всё: запросом на адрес www.livejournal.com/misc/fdata.bml?user=username [13] мы получаем простой текстовый файл с «поимённым» списком всех друзей (в указанном файле символ > означает, что авторизованный пользователь читает указанный аккаунт, а символ < — наоборот, что указанный аккаунт читает авторизованного пользователя).

Примечание: ЖЖ требует прямо указывать [14] в заголовках запроса факт того, что запрос осуществляется «ботом», в противном случае может последовать бан.

Блоги Я.ру, Мой круг (Яндекс)

В API блогов Яндекса нам интересны методы с описанием профиля пользователя [15] (достаём оттуда ID, рейтинг КУ и время его последнего обновления), список друзей пользователя [16] (считаем их кол-во).
Аналогично с Моим кругом: описание профиля и список друзей [17] (достаём ID и считаем кол-во друзей).

Гугл и Гугл+

Несмотря на то, что Гугл — одна из старейших в данном списке компаний и одна из крупнейших (если не сказать, что самая крупная), в Гугл+ наиболее скудное по полезным для нас данным API. В Гугл+ [18] нам интересен только ID пользователя (зато там есть etag), а при авторизации через обычный аккаунт Гугл [19] (например если у пользователя нет профиля в соцсети Гугл+, но есть почта на Gmail), также поле verified_email.

Примечание: возникает резонный вопрос, если нет разницы — зачем платить больше, если Гугл и Гугл+ почти одно и то же — зачем дважды запрашивать информацию? Помимо описанного случая с отсутствием профиля в соцсети, это нужно если вы собираете базовую информацию пользователя (например имя и фамилию), т.к. она может радикально различаться.

P.S.: поскольку из-за обилия соцсетей пост и так получился очень длинным, модули авторизации и запроса (под Yii и Kohana) всех перечисленных выше данных я приведу в следующий раз.

Небольшое разъяснение и просьба ко всем хабрапользователям

Мы понимаем, что среди аудитории Хабрахабра есть множество как сторонников деятельности нашего фонда, так и противников. Тем не менее мы полностью согласны с тем, что нельзя превращать Хабрахабр в плацдарм наших сторонников и устраивать в комментах ад и Израиль с нашими оппонентами, которые тоже в массовом количестве присутствуют среди пользователей Хабрахабра.

Поэтому во всех наших топиках здесь мы никоим образом не будем касаться политических вопросов, высказывать нелестные оценки в отношении каких-либо политических фигур и структур, рассказывать о наших планах, не связанных с тематикой IT и т.д.

Также, чтобы не разжигать политические дискуссии в комментариях, мы не будем отвечать на какие-либо вопросы, не связанные с IT и просим вас не задавать их, либо задавать в личные сообщения. Просим вас также воздержаться от каких-либо оценочных комментариев политической деятельности Фонда, его сотрудников и лично Алексея Навального (независимо от того, хвалебные это оценки или критические).

Поскольку нам недоступна какая-либо модерация комментариев здесь, у нас есть только один инструмент воздействия: если указанные правила не будут соблюдаться, нам придётся закрыть блог на Хабрахабре и лишить вас наших рассказов о разных интересных темах вроде борьбы с постоянными DDoS-атаками, накрутками, ботами и многом другом. Появление нашего блога на Хабрахабре не является знаком того, что руководство Тематических Медиа поддерживает нашу деятельность в какой-либо форме.

P.P.S.: для бета-тестирования нового проекта Фонда нам нужны желающие, которые получат инвайт и смогут «прощёлкать» сайт, выявить ошибки, описать их нам и т.д. Желающие пишите в личку ruskar [20]

Автор: ruskar


Сайт-источник PVSM.RU: https://www.pvsm.ru

Путь до страницы источника: https://www.pvsm.ru/vkontakte/8073

Ссылки в тексте:

[1] users.get: http://vk.com/developers.php?oid=-1&p=users.get

[2] graph.facebook.com/me/friends?access_token=aaabbbccc: https://graph.facebook.com/me/friends?access_token=aaabbbccc

[3] graph.facebook.com/ruslanleviev: https://graph.facebook.com/ruslanleviev

[4] graph.facebook.com/me/likes?access_token=aaabbbccc: https://graph.facebook.com/me/likes?access_token=aaabbbccc

[5] verify_credentials: https://dev.twitter.com/docs/api/1/get/account/verify_credentials

[6] специальную форму: http://dev.odnoklassniki.ru/wiki/pages/viewpage.action?pageId=5668937

[7] auth.login: http://dev.odnoklassniki.ru/wiki/display/ok/REST+API+-+auth.login

[8] auth.loginByToken: http://dev.odnoklassniki.ru/wiki/display/ok/REST+API+-+auth.loginByToken

[9] friends.get: http://dev.odnoklassniki.ru/wiki/display/ok/REST+API+-+friends.get

[10] users.getInfo: http://api.mail.ru/docs/reference/rest/users.getInfo/

[11] friends.get: http://api.mail.ru/docs/reference/rest/friends.get/

[12] username.livejournal.com/data/foaf: http://username.livejournal.com/data/foaf

[13] www.livejournal.com/misc/fdata.bml?user=username: http://www.livejournal.com/misc/fdata.bml?user=username

[14] требует прямо указывать: http://www.livejournal.com/bots/

[15] описанием профиля пользователя: http://api.yandex.ru/yaru/doc/ref/data/person.xml

[16] список друзей пользователя: http://api.yandex.ru/yaru/doc/ref/data/persons.xml

[17] описание профиля и список друзей: http://api.yandex.ru/moikrug/doc/dg/concepts/operations.xml

[18] В Гугл+: https://developers.google.com/+/api/latest/people

[19] обычный аккаунт Гугл: https://developers.google.com/accounts/docs/OAuth2WebServer

[20] ruskar: http://habrahabr.ru/users/ruskar/