Работа с социальной сетью Вконтакте

stanar

Client
Регистрация
19.12.2015
Сообщения
314
Благодарностей
157
Баллы
43
Здравствуйте, господа и дамы.

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

Что делает новичок, решивший продать, допустим, банальный чай для похудения (возьмем для примера один из самых лютых офферов). Новичок начинает думать: «Так, сейчас найду группы для похудения и там его точно купят». Забив в поиск «группы для похудения», новичок находит две-три группы миллионника и начинает спамить участников. Ловит свой законный мороз на аккаунты, у него никто ничего не купил. Тоска.

Что сделано не так? Да практически все.

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

Для работы с нашей аудиторией мы будем использовать API вконтакте и POST/GET запросы. Для расширения возможностей API необходимо получить токен для аккаунта. Как это сделать описано на форуме много раз. Если вкратце, то вот этот вот GET запрос вернет вам желаемое.

https: //oauth.vk.com:443/token?grant_type=password&client_id=2274003&client_secret=hHbZxrka2uZ6jB1inYsH&username={-Variable.username-}&password={-Variable.password-}

Ответ будет примерно таким, откуда регулярным выражением нужно достать токен.

{"access_token":"8407956936b0ad9f8f2775asdlkjd8af3ad3f11ff8dd08790a34a550f09a4a0184fb7ab098fbc6509091ee","expires_in":0,"user_id":235255998}


Все запросы к API вконтакте выполняются через GET запрос и имеют вид

https: //api.vk.com/method/METHOD_NAME?PARAMETERS&access_token=ACCESS_TOKEN&v=V

и состоят из названия метода, его параметров, токена и версии API (последняя 5.60)

Итак, начнем.

Базовым методом для получения информации о нашем потенциальном покупателе является users.get. Упрощенный запрос имеет вид

https: //api.vk.com/method/users.get?user_ids=1&access_token=ACCESS_TOKEN&v=5.60

и вернет нам ответ вида

{"response":[{"id":1,"first_name":"Павел","last_name":"Дуров"}]}

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

bdate – дата рождения. Полезность объяснять не нужно.

сareer – данные о карьере. Амбициозные и начинающие работники заполняют обязательно. И гордятся этим. И готовы развиваться профессионально. И покупать для этого инфопродукты. Понятно, да?

сity – информация о городе. Для гео. Сюда же поле country.

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

has_mobile – информация о номере мобильного телефона. Довольно точный признак живого человека

last_seen – очень важное поле, которое показывает последний вход человека и платформу, с которой он входил в ВК: андроид, айфон, приложение, десктоп. Нам нужны активные пользователи, да? Если аккаунт заморожен или забанен, поле вернет banned. Это обязательно необходимо использовать, поскольку резко снижает количество неэффективных запросов, а следовательно, увеличивает количество эффективных)

online – поле, показывающее онлайн ли пользователь. Используется для быстрых действий с быстрой ответной реакцией.

relatives- список родственников. Если не удастся продать самому пользователю, можно продать подарок для родственника

relation - семейное положение пользователя. Поле тоже очень важно.

sex- пол.

Вот пожалуй и все полезные поля. То есть в итоге наш запрос будет иметь вид

https: //api.vk.com/method/users.get?user_ids=1&fields=bdate,сareer,city,counters,has_mobile,last_seen,online,relatives,relation,sex&access_token={-Variable.token-}&v=5.60

За раз этот метод возвращает значения о 1000 пользователях (заявлено). То есть user_ids=1,2,3…999

Для примера давайте попробуем сформировать аудиторию, которой можно продать какой-нибудь не слишком замороченный продукт. Например, Star-Master- ночник проектор звездного неба.
Вполне себе понятно, что оффер будет пользоваться популярностью у детей. На молодых родителях мы и сосредоточимся. Для начала найдем перечень сообществ молодых мам. Для этого воспользуемся методом groups.search.
Отправив запрос

https: //api.vk.com/method/groups.search?q="молодые мамы"&access_token={-Variable.token-}&v=5.60

Мы получим ответ, что групп таких нашлось 2567 штук. Это достаточно много, нам хватит точно. Достав из ответа все айди группы (обратите внимание на работу с данными JSON в свежих версиях программы), мы воспользуемся методом groups.getMembers для того, чтобы получить всех участников сообществ.

https: //api.vk.com/method/groups.getMembers?group_id=68518743&count=1000&offset=0&access_token={-Variable.token-}&v=5.60

Тут есть один нюанс. За один запрос придет ответ максимум о тысяче участников. Этот показатель регулируется значением поля count. Показатель offset регулирует, с какого именно пользователя из всех начинать возврат. Например из набора «1,5,15,18,26,44,52,29,12» при count=1, offset=0 вернется 1, при count=3, offset=0 вернется 1,5,15
при count=3, offset=2 вернется 15,18,26

Вконтакте выполняет три запроса в секунду, если делать больше, то ответа не будет. Как можно заметить, это довольно мало, поскольку один миллионник будет парсится порядка пяти минут. Есть возможность этого избежать, используя метод execute. Он позволяет выполнить 25 запросов в одном (Дима, привет и спасибо). Выполняется он методом POST, в урле https://api.vk.com/method/execute, в теле пишем следующую конструкцию

code=return [API.groups.getMembers({"group_id": "{-Variable.GroupID-}", "offset": "{-Variable.s1-}", "fields": "sex"}),API.groups.getMembers({"group_id": "{-Variable. GroupID -}", "offset": "{-Variable.s2-}", "fields": "sex"}),API.groups.getMembers({"group_id": "{-Variable.GroupID-}", "offset": "{-Variable.s3-}", "fields": "sex"}),API.groups.getMembers({"group_id": "{-Variable.GroupID-}", "offset": "{-Variable.s4-}", "fields": "sex"}),API.groups.getMembers({"group_id": "{-Variable.GroupID-}", "offset": "{-Variable.s5-}", "fields": "sex"}),API.groups.getMembers({"group_id": "{-Variable.GroupID-}", "offset": "{-Variable.s6-}", "fields": "sex"}),API.groups.getMembers({"group_id": "{-Variable.GroupID-}", "offset": "{-Variable.s7-}", "fields": "sex"}),API.groups.getMembers({"group_id": "{-Variable.GroupID-}", "offset": "{-Variable.s8-}", "fields": "sex"}),API.groups.getMembers({"group_id": "{-Variable.GroupID-}", "offset": "{-Variable.s9-}", "fields": "sex"}),API.groups.getMembers({"group_id": "{-Variable.GroupID-}", "offset": "{-Variable.s10-}", "fields": "sex"}),API.groups.getMembers({"group_id": "{-Variable.GroupID-}", "offset": "{-Variable.s11-}", "fields": "sex"}),API.groups.getMembers({"group_id": "{-Variable.GroupID-}", "offset": "{-Variable.s12-}", "fields": "sex"}),API.groups.getMembers({"group_id": "{-Variable.GroupID-}", "offset": "{-Variable.s13-}", "fields": "sex"}),API.groups.getMembers({"group_id": "{-Variable.GroupID-}", "offset": "{-Variable.s14-}", "fields": "sex"}),API.groups.getMembers({"group_id": "{-Variable.GroupID-}", "offset": "{-Variable.s15-}", "fields": "sex"}),API.groups.getMembers({"group_id": "{-Variable.GroupID-}", "offset": "{-Variable.s16-}", "fields": "sex"}),API.groups.getMembers({"group_id": "{-Variable.GroupID-}", "offset": "{-Variable.s17-}", "fields": "sex"}),API.groups.getMembers({"group_id": "{-Variable.GroupID-}", "offset": "{-Variable.s18-}", "fields": "sex"}),API.groups.getMembers({"group_id": "{-Variable.GroupID-}", "offset": "{-Variable.s19-}", "fields": "sex"}),API.groups.getMembers({"group_id": "{-Variable.GroupID-}", "offset": "{-Variable.s20-}", "fields": "sex"}),API.groups.getMembers({"group_id": "{-Variable.GroupID-}", "offset": "{-Variable.s21-}", "fields": "sex"}),API.groups.getMembers({"group_id": "{-Variable.GroupID-}", "offset": "{-Variable.s22-}", "fields": "sex"}),API.groups.getMembers({"group_id": "{-Variable.GroupID-}", "offset": "{-Variable.s23-}", "fields": "sex"}),API.groups.getMembers({"group_id": "{-Variable.GroupID-}", "offset": "{-Variable.s24-}", "fields": "sex"}),API.groups.getMembers({"group_id": "{-Variable.GroupID-}", "offset": "{-Variable.s25-}", "fields": "sex"})];&access_token={-Variable.token-}


Где Variable.GroupID – айди нашей группы, а переменные s1-s25 – показатели оффсета, изменяющиеся от 0 до той тысячи, которая содержит в себе значение количества членов группы.

Выполняя три таких запроса в секунду, мы получим 75 тысяч пользователей в секунду и 4,5 миллиона в минуту, что уже достаточно терпимо. Данный метод работает с любыми методами, не только с groups.getMembers.

Итак, мы получили ID юзеров, которые состоят в группе. Прогнав таким образом все спаршенные группы, мы получим набор всех х участников. Удалив дубли, получаем список айди, готовых к обработке. На этом этапе торопливые люди обычно начинают спамить их проекторами, но мы пойдем дальше.

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

Использую метод wall.get, мы можем получить содержание стены пользователя

https: //api.vk.com/method/wall.get?owner_id=235980998&count=100&offset=0&access_token={-Variable.token-}&v=5.60

Метод отдает 100 постов за один запрос, дальше такая же история с оффсетом. В полученном ответе регулярным выражением мы можем найти все посты, содержащие слова «день рождения» «с днем рождения» и т.д., и, взглянув на дату поста, определим с нормальным процентом вероятности день рождения либо ребенка либо мамы. То есть если день рождения ребенка, то пост будет иметь своим хозяином самого юзера, если нет – то хозяином поста будут другие юзеры/сообщества (есть конечно тип людей, который пишет на стене «с днем рождения меня», но я верю, что их мало:-).

Собрали мы дни рождения. Теперь делаем следующее. Находим среди друзей нашей молодой мамы людей, которые проявляют наибольшую активность на странице пользователя. Для этого используем метод likes.getList, который вернет нам айди пользователей, лайкнувших пост. Айди постов берем из предыдущего запроса регуляркой/json.


https: //api.vk.com/method/likes.getList?type=photo&owner_id=-36360108&item_id=456240531&access_token={-Variable.token-}&v=5.60


На что обращаем внимание - на тип поста (фото=photo, пост=post и проч.), на айди владельца поста(если сообщество, то с минусом).

В итоге, мы можем установить, кто из друзей пользователя проявляет стабильную активность на странице пользователя. Написав другой текст объявления, мы можем продать этот проектор ему. Например «Привет, у такой-то день рождения у ребенка через неделю, подарок вот. Не благодари)». Тут дело в том, что когда адресат получает такое сообщение, он очень редко расценит его как спам. Потому как это уже и не спам, а индивидуальная выборка. И даже если мы промахнулись с датой, ответ в самом крайнем случае будет «С чего ты взял, что у ребенка день рождения действительно через неделю?». Но без кнопки спама.

Описанная мною ситуация – один из тысячи примеров того, как можно искать клиентов. Все очень индивидуально и под каждый оффер нужен будет свой парсер.
Всю подробную информацию об API ВК можно найти на страницах документации https://vk.com/dev/methods

Еще несколько советов и пару интересных тем.

Во-первых, упаси вас бог ходить на курсы по SMM (маркетингу в социальных сетях). Они плодят только одинаковые решения, но не учат выделяться, а нужно именно это. Благодаря их стараниям, весь интернет выглядит не так, как выглядел года два назад, а по-другому. Но одинаково. Все их «разработайте персональную страничку, оставьте контакты, оформите так и так» настолько обыденны, насколько мало результата они приносят. Есть один гуру, который в своем стриме случайно показал свой ник в одной из партнерских систем. И есть хозяин этой системы в одном из частных чатов в телеграме. Так вот статистика у гуру очень плачевная. В общем, крайне не рекомендую

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

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


И напоследок – как найти платежеспособную аудиторию вконтакте. Способы есть и их достаточно много. Напишу два.

Онлайн обучение чему-либо предполагает общение. Так как скайп становится все менее удобным, многие переместились в соц сети. Все просто – ищем закрытую группу вконтакте по мастер-классам/семинарам/обучению/занятиям. Люди, в ней состоящие, уже купили что-то в интернете и будут покупать дальше.

Способ номер два. Давайте посмотрим в прошлое вспомним, как мы пришли в интернет? Помните, первая почта, первые сервисы. И постоянный перебор занятых логинов. И многие из нас приходят к чему-то такому, что очень индивидуально и с большой вероятностью не будет занято нигде, потому что этот логин придумали мы сами. Например, nata_soul. Что это нам дает? А то, что многие люди, пользующиеся ВКонтакте, меняют короткий адрес с https://vk.com/ id32165498 на https://vk.com/nata_soul. Идем на складчик, парсим участников складчин или просто участников и проверяем их на адреса ВК. Совпадения находятся довольно часто, на одну небольшую складчину 5-6 попаданий.


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

P.S. Пример удачного попадания. Пока мой максимум за два дня с одного оффера.

Stata konkurs.jpg
 
Тема статьи
Соц. сети
Номер конкурса статей
Шестой конкурс статей

Для запуска проектов требуется программа ZennoPoster или ZennoDroid.
Это основное приложение, предназначенное для выполнения автоматизированных шаблонов действий (ботов).
Подробнее...

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

Последнее редактирование:

moRL

Client
Регистрация
18.07.2016
Сообщения
101
Благодарностей
69
Баллы
28
Спасибо, как раз то что надо! Никак не мог собраться и написать что-нибудь на api ВК - все через веб тыкал)) теперь придется изучить и применить.
 
  • Спасибо
Реакции: stanar

varnak

Client
Регистрация
27.09.2009
Сообщения
290
Благодарностей
20
Баллы
18
интересный и качественный подход к спаму :-)
 
  • Спасибо
Реакции: stanar

Лев

Client
Регистрация
09.12.2014
Сообщения
290
Благодарностей
273
Баллы
63
В execute лучше использовать цикл в коде, тогда можно избежать такого количества переменных, но и парсить будет потом просто, так как чистый json на выходе.

Код:
var offset = {-Variable.offset-};
var i = 0;
var countmembers = 0;
var members = API.groups.getMembers({"group_id":"{-Variable.group_name-}", "offset":offset, "count":1000, "fields":"sex,online,online_mobile,site,city"}).items;
while (i < 24)
{
    offset = offset %2B 1000;
    //Получаем в переменную members результаты работы метода groups.getMembers
    members = members %2B API.groups.getMembers({"group_id":"{-Variable.group_name-}", "offset":offset, "count":1000, "fields":"sex,online,online_mobile,site,city"}).items;
    i = i %2B 1;
};
return {"offset": offset, "members": members};
%2B - это + )) пришлось так писать, а то ошибка лезла. А в новых версиях может уже и + можно писать. Потому-что, по идее то, зенка сама должна кодировать +, но почему то в моей версии не кодировала.
 

Juniorcpa

Client
Регистрация
27.05.2014
Сообщения
2 030
Благодарностей
1 283
Баллы
113
Все в статьях передают приветы. Я Дима, и тебе привет :-)
 

Sanekk

Client
Регистрация
24.06.2016
Сообщения
987
Благодарностей
388
Баллы
63
С удовольствием прочитал, побольше бы таких статей, буду голосовать однозначно.
 
  • Спасибо
Реакции: stanar и masterLomaster

Severip

Client
Регистрация
17.10.2013
Сообщения
346
Благодарностей
98
Баллы
28
Спасибо за статью!
А как, например, получить список всех постов за неделю из Новостей по ключевым словам "молодые мамы"?
И где можно посмотреть перечень всех методов?
 

stanar

Client
Регистрация
19.12.2015
Сообщения
314
Благодарностей
157
Баллы
43
Спасибо за статью!
А как, например, получить список всех постов за неделю из Новостей по ключевым словам "молодые мамы"?
И где можно посмотреть перечень всех методов?
Перечень всех методов вот тут https://vk.com/dev/methods. Вам скорее всего нужна группа "Newsfeed"
 

Severip

Client
Регистрация
17.10.2013
Сообщения
346
Благодарностей
98
Баллы
28
Спасибо за ссылку, там есть что почитать :-)
А есть еще какие-нибудь количественные ограничения кроме 3 запросов в секунду?
 

spesy

Активный пользователь
Регистрация
08.08.2016
Сообщения
161
Благодарностей
168
Баллы
43
наконец то кто то выложил это в паблик на зеннолаб) когда мы писали антицеребро год назад, собирали это всё по крупицам ( эксекут)
 

Astraport

Client
Регистрация
01.05.2015
Сообщения
4 920
Благодарностей
4 278
Баллы
113
Идем на складчик, парсим участников складчин или просто участников и проверяем их на адреса ВК. Совпадения находятся довольно часто, на одну небольшую складчину 5-6 попаданий.
Интересная задумка.
Все просто – ищем закрытую группу вконтакте по мастер-классам/семинарам/обучению/занятиям. Люди, в ней состоящие, уже купили что-то в интернете и будут покупать дальше.
А вот это не понял. Почему в закрытых группах покупатели?
 

stanar

Client
Регистрация
19.12.2015
Сообщения
314
Благодарностей
157
Баллы
43
Спасибо за ссылку, там есть что почитать :-)
А есть еще какие-нибудь количественные ограничения кроме 3 запросов в секунду?
Я особо не заметил, парсится миллионами нормально. Но лучше не перегибать, конечно, палку особо)
наконец то кто то выложил это в паблик на зеннолаб) когда мы писали антицеребро год назад, собирали это всё по крупицам ( эксекут)
По-моему, такие вещи должны быть в паблике. То есть, людям необходим инструмент, с помощью которого можно значительно сократить аудиторию, тем самым постепенно уходя от сплошного спама.
 

stanar

Client
Регистрация
19.12.2015
Сообщения
314
Благодарностей
157
Баллы
43
Интересная задумка.

А вот это не понял. Почему в закрытых группах покупатели?
Не во всех закрытых группах, а в тех, которые создавались на основе купленного продукта - мастер класса, семинара и проч. То есть в них состоят люди, которые уже что-то купили. Например, я купил мастер класс по SMM, его купили еще 50 человек. Мастером (лицом, ведущим вебинар) создается группа для общения/выкладывания заданий и проч. Она нам и нужна
 
  • Спасибо
Реакции: Sanekk

molotok

Client
Регистрация
17.04.2015
Сообщения
733
Благодарностей
358
Баллы
63
Классная статья. Многое о чем написано в статье использую - работает. Есть даже свой парсер для сбора целевой аудитории (Прикреплен), но метод execute в нем не используется - миллионники не паршу, работаю точечно . Кто желает, может собрать пользователей по данной методе прямо сейчас! Отпишитесь о результатах, если не трудно.
Сейчас тестирую "Умный лайкинг" по собранным таким образом пользователя - показывает хорошие результаты.
 

Вложения

backoff

Client
Регистрация
20.04.2015
Сообщения
5 898
Благодарностей
6 374
Баллы
113
Однозначно - это пять! Сам давно уже подбираюсь к апи вк, но очень тяжел в пост гет запросах, но логику понимаю. Придется изучать и использовать.
Спасибо в общем, для своей темы очень интересные моменты выкурил.
Буду голосовать за вас!
 

Severip

Client
Регистрация
17.10.2013
Сообщения
346
Благодарностей
98
Баллы
28
И еще вопрос. А где подсмотреть client_secret для получения токена?
 

stanar

Client
Регистрация
19.12.2015
Сообщения
314
Благодарностей
157
Баллы
43
В моем примере он есть. Нужно скопировать и вставить себе)
 
Последнее редактирование:

backoff

Client
Регистрация
20.04.2015
Сообщения
5 898
Благодарностей
6 374
Баллы
113
И еще вопрос. А где подсмотреть client_secret для получения токена?
В моем примере он есть. Нужно скопировать и вставить себе)
не нашел, ткните носом плиз


только этот есть: hHbZxrka2uZ6jB1inYsH
он разве один для всех?
 

stanar

Client
Регистрация
19.12.2015
Сообщения
314
Благодарностей
157
Баллы
43
oauth.vk.com/token?grant_type=password&client_id=2274003&client_secret=hHbZxrka2uZ6jB1inYsH&username={-Variable.username-}&password={-Variable.password-}
 
Последнее редактирование:

stanar

Client
Регистрация
19.12.2015
Сообщения
314
Благодарностей
157
Баллы
43
Да, точно, на мобилу пришло, что с андроида зашли)
А как достать такой ключ? Ну мало ли забанят его или еще что.
Гуглится легко) Даже на форуме
В строку поиска гугла "site:zennolab.com/discussion/ получить токен VK"
 

Severip

Client
Регистрация
17.10.2013
Сообщения
346
Благодарностей
98
Баллы
28
Ага, т.е. чтобы получить свой ключ, надо регистрировать свое приложение ВК?
 

spesy

Активный пользователь
Регистрация
08.08.2016
Сообщения
161
Благодарностей
168
Баллы
43
По-моему, такие вещи должны быть в паблике. То есть, людям необходим инструмент, с помощью которого можно значительно сократить аудиторию, тем самым постепенно уходя от сплошного спама.
это спорный вопрос, зачем людям для апи токен от оф мобильного приложения? каждый может создать приложение и создать себе токены, зачем через гранд-токен ломиться?
 

spesy

Активный пользователь
Регистрация
08.08.2016
Сообщения
161
Благодарностей
168
Баллы
43
Да. Но можно обойтись и чужим)
это в стиле смотрите какую я штуку знаю) я не за то чтобы держать всё при себе, но смысла коннектиться по чужому приложению я не вижу
 
  • Спасибо
Реакции: lzlmrf и stanar

stanar

Client
Регистрация
19.12.2015
Сообщения
314
Благодарностей
157
Баллы
43
это в стиле смотрите какую я штуку знаю) я не за то чтобы держать всё при себе, но смысла коннектиться по чужому приложению я не вижу
Этот токен лежит на форуме уже около года в свободном доступе и служит просто примером для людей, не встречавшихся раньше с API ВК
 

Кто просматривает тему: (Всего: 1, Пользователи: 0, Гости: 1)