В какой-то момент моей жизни я понял, что для счастья мне нужно создать 10 страниц-копий самого себя во Вконтакте и добавиться одновременно всеми в друзья к людям из френдлиста моей основной страницы. Для подробностей реализации идеи — прошу под кат.

Для создания страниц я использовал сервис sms-reg.com, подробнее о сервисах приема SMS хорошо написано тут.
Регистрируем все 10 страниц и записываем их логины/пароли в файл accounts.json (где id — id регистрируемой страницы, а zero_id — id нашей основной страницы):
Я буду работать с библиотекой vk_api.
Создадим файл bots.py, он нам пригодится для остальных скриптов:
Он читает accounts.json и инициализирует api для каждого из аккаунтов.

создаем файл friends, в котором в каждой сточке пишем
Вконтакте позволяет добавить примерно 80 человек в день.
Внимательный читатель уже увидел строчку
Поскольку Вконтакте не всегда нравится такое количество запросов, приходится обрабатывать капчу. Есть огромное количество сервисов, которые предоставляют такую возможность. Нужно просто отправить post запрос с капчей в base64 и подождать.

Вот несколько скриншотов того, что мне прислали люди
github
Главный вопрос остается открытым — зачем я это сделал? Понятия не имею.

Цели проекта
- Сделать 10 страниц во Вконтакте
- Скопировать аватар c основной страницы
- Скопировать все посты с основной страницы
- Скопировать все видео с основной страницы
- Добавиться во все группы основной страницы
- Сделать полный граф дружболайков среди ботов (лайкнуть каждую запись и добавить каждого бота в друзья)
- Добавиться каждому из 80 людей из заранее составленного списка в друзья
Регистрация
Для создания страниц я использовал сервис sms-reg.com, подробнее о сервисах приема SMS хорошо написано тут.
Регистрируем все 10 страниц и записываем их логины/пароли в файл accounts.json (где id — id регистрируемой страницы, а zero_id — id нашей основной страницы):
{ "zero_id": "21102****", "accounts": [ { "phone": "7985002****", "password": "tTod********", "id": 53980**** }, { "phone": "7985317****", "password": "tglh********", "id": 53980**** }, ... { "phone": "7916033****", "password": "ZsRq********", "id": 54038**** } ] }
python + vk_api
Я буду работать с библиотекой vk_api.
pip install vk_api --user
Создадим файл bots.py, он нам пригодится для остальных скриптов:
import json import vk import vk_api from captcha import captcha_handler with open('accounts.json', 'r') as file: data = json.loads(file.read()) accounts = data['accounts'] zero_id = int(data['zero_id']) vk_apis = [] def init_apis(): current_id = 0 for account in accounts: vk_session = vk_api.VkApi(account['phone'], account['password'], captcha_handler=captcha_handler) vk_session.auth() vk_apis.append(vk_session.get_api()) print('account', current_id, 'successfully inited') current_id += 1 init_apis()
Он читает accounts.json и инициализирует api для каждого из аккаунтов.
Копирование аватара
def change_photo(vk): upload_url = vk.photos.getOwnerPhotoUploadServer()['upload_url'] answer = json.loads(requests.post(upload_url, files={'photo': open('avatar.jpg', 'rb')}).text) vk.photos.saveOwnerPhoto(photo=answer['photo'], server=answer['server'], hash=answer['hash']) counter = 0 for vk in vk_apis: change_photo(vk) print(counter, 'done') counter += 1
Копирование видео
videos = default_vk.video.get(owner_id=zero_id, count=100) counter = 0 for vk in vk_apis: for video in videos['items']: vk.video.add(video_id=video['id'], owner_id=video['owner_id'])
Добавление в группы
from time import sleep from bots import vk_apis, zero_id, accounts, default_vk groups = default_vk.groups.get(user_id=zero_id, count=100) counter = 0 for vk in vk_apis: for group in groups['items']: print('add to', group) vk.groups.join(group_id=group) print(counter) counter += 1
Создание полного графа друзей

counter = 0 for vk, account in zip(vk_apis, accounts): for friend in accounts: if friend['id'] == account['id']: continue vk.friends.add(user_id=friend['id'], captcha_handler=captcha_handler) print(counter, friend['id'], account['id']) counter += 1 sleep(1)
Создание полного графа лайков
![]() |
![]() |
|---|
counter = 0 for vk, account in zip(vk_apis, accounts): for friend in accounts: if friend['id'] != account['id']: continue print(counter, friend['id'], account['id']) for post in vk.wall.get(owner_id=friend['id'])['items']: flag = True while flag: try: #иногда скрипт падал из-за большого количества запросов в секунду vk.likes.add(type='post', owner_id=post['owner_id'], item_id=post['id']) flag = False except: print('failed on', counter) sleep(10) pass counter += 1
Добавление в друзья
создаем файл friends, в котором в каждой сточке пишем
id_человека #ник_человека (для себя)
Вконтакте позволяет добавить примерно 80 человек в день.
friends_str = '' with open('friends', 'r') as file: friends_str = file.read() friends = [{'id': x.split(' #')[0], 'name': x.split(' #')[1]} for x in friends_str.split('\n')] ids_ = ([x['id'] for x in (default_vk.users.get(user_ids=[x['id'] for x in friends]))]) for friend, id_ in zip(friends, ids_): print(friend['name']) print(friend) for vk in vk_apis: flag = True while flag: try: vk.friends.add(user_id=int(id_)) flag = False except: print('error') sleep(10)
Обход капчи
Внимательный читатель уже увидел строчку
from captcha import captcha_handler
Поскольку Вконтакте не всегда нравится такое количество запросов, приходится обрабатывать капчу. Есть огромное количество сервисов, которые предоставляют такую возможность. Нужно просто отправить post запрос с капчей в base64 и подождать.

def uncapcha(url): imager = requests.get(url) r = requests.post('http://rucaptcha.com/in.php', data = {'method': 'base64', 'key': RUCAPTCHA_KEY, 'body': base64.b64encode(imager.content)}) if (r.text[:3] != 'OK|'): print('captcha failed') return -1 capid = r.text[3:] sleep(5) capanswer = requests.post('http://rucaptcha.com/res.php', data = {'key': RUCAPTCHA_KEY, 'id':capid, 'action':'get'}).text if (capanswer[:3] != 'OK|'): print('captcha failed') return -1 return capanswer[3:]
Результаты
Вот несколько скриншотов того, что мне прислали люди
Скрытый текст
![]() |
![]() |
|---|---|
![]() |
![]() |
![]() |
![]() |
github
Главный вопрос остается открытым — зачем я это сделал? Понятия не имею.








