Можно ли пользоваться VK API без создания приложения?
Здравствуйте, мне нужно парсить друзей по айди пользователя. Раньше я думал что можно просто парсер написать, с использованием например библиотеки simple html, но там на сайте какая-то хитромудрая система всплывающего окна с друзьями, в общем не знаю как спарсить такое. Потом возникла идея просто-напросто использовать VK API, но там нужно создавать приложение, а для создания приложения нужно номер подтверждать, а по некоторым причинам у меня нет доступа к номеру, к которому привязана страница, а смена номера 7 дней занимает. В общем вопрос, не могу ли я в коде использовать что-то навроде
$data = include "https://api.vk.com/method/users.get?user_id=210700286&v=5.52"
Может можно передавать в запрос какие-нибудь токены и прочее, потому что такой запрос возвращает ошибку авторизации.
Так-же, опционально, может вы знаете другую возможность, проще парсить друзей. Спасибо!
- Вопрос задан более трёх лет назад
- 920 просмотров
Введение
VK-IO — это мощный Node.js модуль, который позволяет вам легко взаимодействовать с API ВКонтакте, благодаря упрощённому интерфейсу и своей гибкости, предоставляя уровень абстракции над стандартным API.
Возможности
- Завершённая. 100% покрытие VK API
- Простая. Предсказуемая абстракция VK API. Сопоставление API 1 к 1
vk.api.users.get( . >);
- Поддержка прокси через свои Agent;
- Автоматическое распараллеливание запросов для обработки большого количества запросов к API;
- Пользовательская авторизация (даже с логином и паролем);
- Экосистема для разработки ботов.
Предыстория
В начале мне нужна была простая и удобная библиотека для работы с API, но каждый раз когда я пробовал новую библиотеку, она зачастую оказывалась неудобной или попросту не обновлялась уже пару лет. Так и появилась на свет vk-io которая учитывала все эти неудобства и исправила их в корне.
Начнём
Руководство предполагает знания JavaScript на среднем уровне. Если вы новичок в разработке Node.js приложений, вам стоит изучить основы, а затем продолжить.
Безопасен ли сайт vkhost github io?
_ Искусственный Интеллект (765920) Дима Малинов, какой?
Если токен никому не давать то безопасен
Похожие вопросы
Ваш браузер устарел
Мы постоянно добавляем новый функционал в основной интерфейс проекта. К сожалению, старые браузеры не в состоянии качественно работать с современными программными продуктами. Для корректной работы используйте последние версии браузеров Chrome, Mozilla Firefox, Opera, Microsoft Edge или установите браузер Atom.
Высокие технологии для личной жизни
У соцсети существует качественно оформленный API, обладающий серьезным функционалом для взаимодействия со сторонними сервисами. Гипотеза поиска человека была формализована следующим образом: потенциальный партнер имеет схожие интересы и имеет близкие нам музыкальные предпочтения. Звучит слишком абстрактно или нет?! Думаю нет, это как минимум важные параметры, чтобы найти темы для общения и слушать схожую музыку в поездках. Остальные особенности человека, такие как рост, вес, цвет волос, чувство юмора, темперамент, размер стопы и т.д. не фиксируются в соцсети и передаются на ручной анализ автору. Чтобы не сильно урезать выборку их можно назвать даже лишними.
Схема поиска схожих интересов сводится к поиску групп, аналогичным тем, где состоит сам автор. Эту задачу мы реализуем с помощью API VK.
pip install vk_api
import requests as r import json import time import os import re import vk_api from vk_api import audio
Подключаемся к сторонней библиотеке vk_api для генерации токена, который в свою очередь будет использован на официальном api VK.COM
login = input(‘Введителогиндляvk.com: ‘) passw = input(‘Введитепарольдляvk.com: ‘) VK = vk_api.VkApi(login, passw) VK.auth() VK = VK.get_api() token = 0 try: User = VK.users.get() except: print(«Error») else: print(f»\nЗдравствуйте, «) with open(‘vk_config.v2.json’, ‘r’) as data_file: data = json.load(data_file) for xxx in data[login][‘token’].keys(): app_id = re.findall(‘\d+’,xxx)[0] for yyy in data[login][‘token’][xxx].keys(): token = data[login][‘token’][xxx][yyy][‘access_token’] user_id = data[login][‘token’][xxx][yyy][‘user_id’] print(f»User_id: «) print(f»App_id: «) print(f»Token: «) os.remove(‘vk_config.v2.json’)
На компьютерах MAC может наблюдаться проблема с генерацией токена. Получить его можно также через сервис https://vkhost.github.io. USER_ID — цифры вашего ID VK
user_id = 63451711
Получаем список групп, на которые мы подписаны.
linkg = f’https://api.vk.com/method/groups.get?user_id=
Вот так выглядит список групп, если мы смотрим в VK:
А при запуске кода, все сообщества, на которые мы подписаны, будут представлены в виде числовых идентификаторов:
API VK имеет ограничения по количеству обращений к методам, поэтому будем рассматривать небольшие по составу сообщества от 1000 до 40000 чел. В целом это даже имеет смысл так как обычно большие группы теряют некую индивидуальность по набору участников и публикуемому контенту.
def get_list_little_groups(group_list): list_little_groups=[] closed_group_ids = [] for group_id in group_list: link0 = f’https://api.vk.com/method/groups.getMembers?user_id=
Выбираем все группы небольшого размера, закрытые группы не рассматриваем.
list_little_groups,closed_group_ids = get_list_little_groups(group_list[:200]) print(list_little_groups) print(closed_group_ids)
У вас сформируется список сообществ и количеством участников.
print(‘Количество закрытых сообществ VK из списка = ‘,len(closed_group_ids)) print(‘Количество выбранных сообществ VK для анализа = ‘,len(list_little_groups)) # Получаем массив всех пользователей всех выбранных ранее сообществ dict_group_members=<> all_members = [] count =0 i=0 print(token) for littlegroup_id in list_little_groups[:100]: count+=1 print(count) print(littlegroup_id) all_comunity_members = [] a=0 for i in range(50): link = f’https://api.vk.com/method/groups.getMembers?user_id=
Считаем количество повторений ID пользователя в разных группах. Пользователи с максимальным присутствием в исходных группах и есть целевая аудитория.
Создаем объект, подсчитывающий количество повторений USER_ID (all_members)
from collections import Counter c = Counter(all_members)
Создаем словарь, упорядоченный по количеству повторений одного и того же USER_ID в исходных группах.
dict_members = dict(sorted(c.items(), key=lambda item: item[1],reverse = True)) dict_members
После запуска кода, будет сформирован список с ID пользователей и количеством сообществ, в которых они пересекаются с вами. Уже на данном этапе можно скопировать ID пользователя, у которого максимальное количество пересечений. Результаты группировки выглядят следующим образом:
Далее выбираем первые N элементов (USER_ID) из массива
target_user_list = list(dict_members.keys())[:400] for user in target_user_list: print(user)
Создаем новый список, где оставляем только женщин (1-маркер женского пола, 2 — мужского)
list_of_women = [] count=0 for id in target_user_list: count+=1 if count % 10==0: print(count) try: link = f’https://api.vk.com/method/users.get?user_ids=
Удаляем женщин с закрытым профилем и тех, кто подписан на большое множество групп (более 2000 групп).
print(list_of_women) short_list_of_women = [] for woman_id in list_of_women: linkw1 = f’https://api.vk.com/method/groups.get?user_id=
Если у человека больше 2000 групп в подписках удалить его из целевой выборки можно следующим образом.
print(‘ERROR: women_groups_count>2000’) continue except: pass try: print(‘ERROR: ‘, woman_groups[‘error’][‘error_msg’]) continue except: short_list_of_women.append(woman_id) print(short_list_of_women) print(short_list_of_women) woman_id = 40053517 linkw1 = f’https://api.vk.com/method/groups.get?user_id=
После запуска, система сформируют список ID с ссылками на VK.
Просмотрев все предложенные варианты можно уже выбрать несколько человек и попробовать завязать с ними общение Но мы пойдем дальше и проверим их на совместимость по музыкальным вкусам.
Для этого вводим ID пользователя VK с открытыми аудиозаписями (номер идет после слова id, например https://vk.com/id0000000) или находим ID через сервис на сайте https://regvk.com/id/? (подходит, если у вас есть ссылка следующего типа https://vk.com/никнейм пользователя)
whileTrue: try: id = int(input(‘Введите ID пользователя VK для сканирования его аудиозаписей : ‘)) break except: pass REQUEST_STATUS_CODE = 200 login = input(‘Введите логин для vk.com: ‘) passw = input(‘Введите пароль для vk.com: ‘)
После авторизации, запускаем сканирование аудиозаписей одним из способов. Сканирование аудиозаписей в среднем занимает около 5 минут.
Первый способ — сканирование по частям:
После авторизации, запускаем сканирование аудиозаписей одним из способов. Сканирование аудиозаписей в среднем занимает около 5 минут. Первый способ — сканирование по частям:
Второй способ сканирования аудио в один заход:
# vk_session = vk_api.VkApi(login=login, password=passw) # vk_session.auth() # vk = vk_session.get_api() # vk_audio = audio.VkAudio(vk_session) # print(‘AUTHORISATION COMPLETED’) # a = 0 # time_start = time() # artist_list = [] # track_list_object = vk_audio.get(owner_id=id) # print(‘READY!’) # for i in track_list_object: # try: # a += 1 # artist_list.append(i[«artist»]) # except OSError: # print(f’artist was passed’) # time_finish = time() # print(‘artist_list_len = ‘, len(artist_list)) # print(«Parsing time:», time_finish — time_start) from collections import Counter cc = Counter(artist_list)
После сканирования формируется список наименований музыкальных треков пользователя. Упорядочим этот список от наиболее часто встречающихся исполнителей к менее. Для этого создадим словарь, упорядоченный по количеству повторений исполнителя в плейлисте подходящего нам кандидата.
artist_list_ordered = dict(sorted(cc.items(), key=lambda item: item[1],reverse = True)) artist_list_ordered
Результат будет представлен в следующем виде. Удобно, неправда ли. Сразу видны музыкальные предпочтения пользователя.