Возможные друзья вконтакте. Находим общих друзей людей с использованием VK API

Социальная сеть ВКонтакте объединяет людей, и постоянно в нее внедряются различные алгоритмы, чтобы пользователям было удобнее находить своих друзей, родственников и просто знакомых людей, с которыми они могли несколько раз видеться, но при встрече не успели или не захотели добавиться в друзья друг к другу. Одним из способов быстро пополнить свой список друзей знакомыми людьми – это воспользоваться инструментом ВКонтакте «Возможные друзья». В рамках статьи рассмотрим принцип действия данного алгоритма, а также как им пользоваться.

Как посмотреть возможных друзей ВКонтакте

Чтобы посмотреть пользователей, которых социальная сеть ВКонтакте считает вашими потенциальными друзьями, достаточно перейти на своей странице в раздел «Друзья». В правом нижнем углу открывшейся страницы, под списками фильтрации текущих друзей, будет расположен блок «Возможные друзья».

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

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

Обратите внимание: Несмотря на то, что на данной странице сверху и справа имеются всевозможные фильтры, они никоим образом не позволяют фильтровать список возможных друзей. То есть, если вы воспользуетесь поиском сверху и, например, постараетесь найти всех возможных друзей с именем «Сергей», социальная сеть просто начнет искать пользователей с именем «Сергей» в своей базе данных, не ориентируясь на подобранный для вас список возможных друзей.

Как определяются возможные друзья ВКонтакте

Компания ВКонтакте не раскрывает алгоритмы, по которым формируется список возможных друзей для каждого конкретного пользователя. Однако наблюдения показывают, что явно список возможных друзей зависит от:

Важно заметить, что у пользователя нет возможности посмотреть, для кого он значится в качестве предполагаемого друга. То есть, данная информация не является взаимной для пользователей. Если вы видите, что пользователь ВКонтакте у вас выводится в качестве возможного друга, например, поскольку вы часто посещаете его страницу, это не значит, что у него вы будете выводиться в качестве друга. Конечно, за исключением ситуации, когда вы при посещении страницы проявляете на ней активность в виде лайков, репостов, комментариев и так далее.

Если вы заинтересованы в раскрутке своей страницы, то сейчас я покажу вам, как добавить много друзей вконтакте (см. ).

Способ бесплатный, и не займет много времени. С его помощью можно получить большое количество заявок.

Используем группы

Зайдите Вконтакт, и перейдите в раздел «Группы» . В поиске пишем «Добавь в друзья» .

Здесь люди ищут друзей. Все нужны заявки, и они готовы добавлять вас. Весь смысл заключается в том, чтобы найти такого человека, и отправить ему заявку. Он сразу же добавит вас в ответ.

Либо пойти другим путем, и самому начать публиковать объявление. Сейчас я вам все покажу.

Получаем много заявок в друзья

В результатах поиска находим подходящую группу, и переходим в нее.

Сразу смотрим на стену, и ищем подходящее объявление.

Перейдите на страницу к этому пользователю, и добавьте его в друзья. В ответ он сделает тоже самое (см. ).

Имейте ввиду, что у вас есть только 40 заявок в день (см. ). Поэтому когда вы разошлете их все, начинайте публиковать похожее объявление.

Пользователи увидят его, перейдут к вам на страницу, и добавят вас в друзья. Вы должны будете принять их.

С помощью этого метода можно получить тысячи друзей. Моя страница — хороший пример (см. ).

Видео урок: как добавить много друзей вконтакте

Заключение

Только не отправляйте все заявки в одно время. Иначе вы рискуете получить временную блокировку страницы (см. ).

Вопросы?

Вконтакте

Привет, хабраюзер.
Однажды у меня возникла необходимость найти человека, зная его внешний вид и зная о его членстве в определенном клубе. Также я владел адресами(вконтакте) страниц двух других членов клуба. Почти наверняка искомый человек был у каждого из них в друзьях. Решить эту проблему можно было разными путями. В статье я напишу о том, как мной было реализовано решение с использованием vk.com API.
1.Задача
Сделать сервис, который будет находить всех общих друзей двух отдельно взятых пользователей, не требуя верификации и аккаунта в социальной сети для пользователей сервиса. Получить данные об общих друзьях:
  • фотография
Реализовать задание на базе API вконтакте. Написать отельный класс для этого.
2.Решение
2.1.Определяем необходимые методы API
Заходим в список методов API. И поискав, находим то, что нам нужно.

Для получения друзей пользователя есть метод friends.get .
friends.get - возвращает список идентификаторов друзей пользователя или расширенную информацию о друзьях пользователя (при использовании параметра fields).

И, что важно, в рамках решения поставленной задачи это открытый метод, не требующий access_token.

Обязательный параметр только один:

Используя данный метод, можно получить информацию обо всех друзьях каждого из двух наших множеств, но такой подход не будет оптимальным. Пользователь А может иметь 2000 людей в друзьях, пересекаться с друзьями пользователя В будут только 3 человека. В таком случае информация о 1997 пользователях будет нам ненужной, и ресурсы, затраченные на её получение, будут потрачены впустую.
Мы будем запрашивать исключительно идентификаторы пользователей, и получив нужные нам номера(которые принадлежат множеству А и В), уже по ним выбирать информацию.

Для получения информации о пользователе есть метод users.get .
users.get - Возвращает расширенную информацию о пользователях.

Данный метод также не нуждается в access_token, то есть идеально подходит для нашей задачи.


В user_ids мы передадим массив идентификаторов пользователей, которые встречаются в обоих множествах.
Мы хотим получить только аватар размером 100*100, для этого в параметре fields передадим значение photo_100.

2.2.Переходим к практической стороне
Я написал простой класс на php:

Class VkFriends { public function clean_var($var) { $var = strip_tags($var); $var = preg_replace("~\D+~", "", $var); $var = trim($var); return $var; } public function get_friends($u_id) { $friends = file_get_contents("https://api.vk.com/method/friends.get?user_id=".$u_id); $friends = json_decode($friends); if(!isset($friends->error)){ return $friends; }else{ return ""; } } public function mutual_friends($friends) { $mutual = array_intersect($friends->response, $friends->response); if(!empty($mutual)){ return $mutual; }else{ return ""; } } public function get_users_info($users) { $u_ids = implode(",",$users); $u_info = file_get_contents("https://api.vk.com/method/users.get?user_ids=".$u_ids."&fields=photo_100"); $u_info = json_decode($u_info); return $u_info; } public function view_user_info($u_info) { $uid = $u_info->uid; $first_name = $u_info->first_name; $last_name = $u_info->last_name; = $u_info->photo_100; print("

"); } public function view_users_info($users_info) { for($i=0;$iresponse);$i++){ $this->view_user_info($users_info->response[$i]); } } }

Теперь смотрим на наш класс в действии:

$vkf = new VkFriends; $u_id = $vkf->clean_var($_POST["u1"]);//clean variables from POST $u_id = $vkf->clean_var($_POST["u2"]); if(($u_id!="")&&($u_id!="")){ echo "

"; $friends = $vkf->get_friends($u_id);//getting friends list from user with u_id $friends = $vkf->get_friends($u_id); if(($friends!="")&&($friends!="")){ $mutual = $vkf->mutual_friends($friends);//create new array from intersect arrays if($mutual!=""){ $users_info = $vkf->get_users_info($mutual);//getting info about users that are mutual $vkf->view_users_info($users_info);//view information about selected users }else{ print("
Привет, хабраюзер.
Однажды у меня возникла необходимость найти человека, зная его внешний вид и зная о его членстве в определенном клубе. Также я владел адресами(вконтакте) страниц двух других членов клуба. Почти наверняка искомый человек был у каждого из них в друзьях. Решить эту проблему можно было разными путями. В статье я напишу о том, как мной было реализовано решение с использованием vk.com API.
1.Задача
Сделать сервис, который будет находить всех общих друзей двух отдельно взятых пользователей, не требуя верификации и аккаунта в социальной сети для пользователей сервиса. Получить данные об общих друзьях:
  • фотография
Реализовать задание на базе API вконтакте. Написать отельный класс для этого.
2.Решение
2.1.Определяем необходимые методы API
Заходим в список методов API. И поискав, находим то, что нам нужно.

Для получения друзей пользователя есть метод friends.get .
friends.get - возвращает список идентификаторов друзей пользователя или расширенную информацию о друзьях пользователя (при использовании параметра fields).

И, что важно, в рамках решения поставленной задачи это открытый метод, не требующий access_token.

Обязательный параметр только один:

Используя данный метод, можно получить информацию обо всех друзьях каждого из двух наших множеств, но такой подход не будет оптимальным. Пользователь А может иметь 2000 людей в друзьях, пересекаться с друзьями пользователя В будут только 3 человека. В таком случае информация о 1997 пользователях будет нам ненужной, и ресурсы, затраченные на её получение, будут потрачены впустую.
Мы будем запрашивать исключительно идентификаторы пользователей, и получив нужные нам номера(которые принадлежат множеству А и В), уже по ним выбирать информацию.

Для получения информации о пользователе есть метод users.get .
users.get - Возвращает расширенную информацию о пользователях.

Данный метод также не нуждается в access_token, то есть идеально подходит для нашей задачи.


В user_ids мы передадим массив идентификаторов пользователей, которые встречаются в обоих множествах.
Мы хотим получить только аватар размером 100*100, для этого в параметре fields передадим значение photo_100.

2.2.Переходим к практической стороне
Я написал простой класс на php:

Class VkFriends { public function clean_var($var) { $var = strip_tags($var); $var = preg_replace("~\D+~", "", $var); $var = trim($var); return $var; } public function get_friends($u_id) { $friends = file_get_contents("https://api.vk.com/method/friends.get?user_id=".$u_id); $friends = json_decode($friends); if(!isset($friends->error)){ return $friends; }else{ return ""; } } public function mutual_friends($friends) { $mutual = array_intersect($friends->response, $friends->response); if(!empty($mutual)){ return $mutual; }else{ return ""; } } public function get_users_info($users) { $u_ids = implode(",",$users); $u_info = file_get_contents("https://api.vk.com/method/users.get?user_ids=".$u_ids."&fields=photo_100"); $u_info = json_decode($u_info); return $u_info; } public function view_user_info($u_info) { $uid = $u_info->uid; $first_name = $u_info->first_name; $last_name = $u_info->last_name; = $u_info->photo_100; print("

"); } public function view_users_info($users_info) { for($i=0;$iresponse);$i++){ $this->view_user_info($users_info->response[$i]); } } }

Теперь смотрим на наш класс в действии:

$vkf = new VkFriends; $u_id = $vkf->clean_var($_POST["u1"]);//clean variables from POST $u_id = $vkf->clean_var($_POST["u2"]); if(($u_id!="")&&($u_id!="")){ echo "

"; $friends = $vkf->get_friends($u_id);//getting friends list from user with u_id $friends = $vkf->get_friends($u_id); if(($friends!="")&&($friends!="")){ $mutual = $vkf->mutual_friends($friends);//create new array from intersect arrays if($mutual!=""){ $users_info = $vkf->get_users_info($mutual);//getting info about users that are mutual $vkf->view_users_info($users_info);//view information about selected users }else{ print("

Социальная сеть «ВКонтакте» является одним из самых популярных интернет-проектов во всей России и странах постсоветского пространства. Каждый день из года в год ресурсом пользуются миллионы пользователей, которые заходят на сайт vk.com, чтобы не только пообщаться друг с другом, но и узнать новости, послушать любимые аудиозаписи, посмотреть фильм или сериал, узнать что-нибудь интересное и даже наметить, куда пойти за обновлением гардероба.

На данный момент каждый может добавить себе в друзья до 10 тысяч других «обитателей» социальной сети, а, как свидетельствует статистика, у среднестатистического пользователя ресурса в друзьях содержится около 200-300 человек. Тем не менее, просматривая список своих друзей «ВКонтакте» можно неожиданно для себя обнаружить, что располагаются они в разном порядке и порой могут меняться местами. Почему так происходит и как формируется весь этот список?

Как было раньше

Прежде чем дать ответ на заданный выше вопрос, хотелось бы напомнить, как формировался список друзей «ВКонтакте» несколькими годами ранее. Еще несколько лет тому назад люди, отображающиеся в списках друзей пользователя, сортировались по рейтингу. Тут все понятно: чем выше был рейтинг страницы пользователя, тем выше он отображался в списке друзей. Рейтинг можно было получить за заполнение информации на собственной странице или за покупку дополнительных голосов. Позже от рейтинга было решено отказаться, чем очень сильно были расстроены пользователей, которые купили большое количество голосов и/или подарили их другим «обитателям» социальной сети.

Как формируется список друзей сейчас

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

Однако есть из этого правила одно небольшое исключение: пользователи, которых вы не так давно добавили в список своих друзей, располагаются обычно на 5 или 6 месте списка для того, по словам разработчиков соцсети, чтобы вы не упустили их из виду.

Порядок расположения друзей, которые находятся на сайте

Теперь стоит упомянуть о том, как сортируются пользователи из списка друзей онлайн. Тут по большому счету точно такой же принцип: расположение друзей сходится с тем, что и в общей последовательности, правда показываются лишь те пользователи, которые онлайн. Если вы пользуетесь опциями «Коллеги», «Лучшие друзья» и им подобными, то распределение списков друзей в них также будет аналогичным.

Как располагается список друзей у других пользователей

Если ситуация с расположением собственных друзей уже более-менее понятна, то как в таком случае быть с друзьями других пользователей, которых мы видим с собственной страницы? Тут все немного по-другому: распределение друзей здесь происходит по количеству общих знакомых с тем человеком, чью страницу вы просматриваете. В том случае, если общих друзей у вас нет, список друзей формируется согласно дате регистрации пользователей на сайте.

Можно ли изменить порядок?

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

Если вы хотите, чтобы близкий вам человек всегда оставался во главе вашего списка друзей, постарайтесь больше с ним общаться. В противном случае сведите общение к минимуму. Однако не забывайте, что никакие социальные сети не заменят вам реального общения с друзьями и близкими вам людьми!



В продолжение темы:
Android

Популярная социальная сеть ВКонтакте позволяет находить новых друзей и держать контакт со всеми близкими. Помимо этого, каждый пользователь может делиться собственными...