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

в 7:38, , рубрики: api, Facebook, twitter, Блог компании «Фонд борьбы с коррупцией», Вконтакте, социальные сети, метки: , , , ,

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

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

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

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

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

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

Вконтакте

В API данной социальной сети есть метод users.get, который возвращает такие интересные нам данные как наличие привязки анкеты к телефону (поле 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), предположить как давно он зарегистрировался, исходя из номера его ID (базовая информация через graph.facebook.com/ruslanleviev), насколько активно «лайкает» различные странички (список graph.facebook.com/me/likes?access_token=aaabbbccc).

Твиттер

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

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

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

Мой Мир

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

Живой Журнал

К счастью, в ЖЖ для каждого аккаунта есть XML-файл с описанием аккаунта, и он доступен всем без какой-либо авторизации по адресу username.livejournal.com/data/foaf, но есть другая проблема: пользователь в таком случае может указать чужой аккаунт. Поэтому нам всё равно придётся сначала авторизовать пользователя посредством 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 мы получаем простой текстовый файл с «поимённым» списком всех друзей (в указанном файле символ > означает, что авторизованный пользователь читает указанный аккаунт, а символ < — наоборот, что указанный аккаунт читает авторизованного пользователя).

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

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

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

Гугл и Гугл+

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

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

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

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

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

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

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

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

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

Автор: ruskar


* - обязательные к заполнению поля


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js