Как развлечь себя с помощью vk api

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


    Цели проекта


    • Сделать 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
    Главный вопрос остается открытым — зачем я это сделал? Понятия не имею.
    Поделиться публикацией

    Комментарии 35

      +3

      Можно сделать троллейбус из буханки хлеба, но зачем?

        +11
        Понятия не имею.

        Рабочая версия заключается в том, чтобы люди видели 10 рекомендаций по добавлению в друзья при скроллинге ленты. Иногда хочется добавить немного сюра в жизнь.
        А вообще, как-то ведь надо проверять свой скилл.
          +7
          Я всё ожидал, что аватарки будут чуть различаться и на какой-то из вьюшек VK можно будет увидеть, как xkcd-man машет рукой
          0
          Думаю, что смысл этой затеи в том, чтобы создавать фейки каких-то других страниц. Например, есть какой-то специалист (например, специалист по ремонту), услуги которого часто ищут через вконтакте. если создать фейки его страницы, то люди будут находить их, после чего можно собирать с них деньги, перенаправлять к другому специалисту, или делать действия для разрушения репутации специалиста. Можно втираться в доверие, притворяясь другим человеком и выманивая деньги.

          В общем, раздолье для тех, кто не чист на руки. И хорошее напоминание, что не стоит верить информации в соцсетях.
            +2
            Это забанят через 5 минут после жалобы этого самого человека. Может сработать только эффект внезапности, когда человек об этом не знает и что-то можно будет срубить. Но ему быстро сообщат, он пожалуется, аккаунты забанят, и потом он будет регулярно проверять. Сомневаюсь в целесообразности этого.
              0
              Только в статье указано, что человек решил сделать копии своей страницы, а не чужой. А вообще, это всё-таки один способов для создания фейков, накрутки и т.п.
          –23

          Недавно размышлял на тему что беда программиста как профессит в том, что это ремеслиничество. Ты ничего не знаешь кроме как переводить в код то вто другие скажут. Ну т.е. ни в какой предметной области ты не спец. Этот пост явное тому подтверждение.

            0
            В посте как бы реализация своей собственной идеи, причем тут ремесло?
              +2
              Большинство людей, считающих себя спецами, не способны улучшить свою предметную область с помощью софта, для этого кроме знаний в предметной области требуется особый образ мышления.
              Сколько бы программисту не ставили ТЗ, пока он сам не въедет глубоко в предметную область ничего хорошего не сделает.
              Поэтому многие опытные программисты ещё и спецы в своих предметных областях, иначе не создать ничего хорошего.
                –2

                Ну к примеру есть человек риелтор, который решил.сделать сервис по поиску квартир.или что-то еще такое. Он нанял разраба, тот ему запилил сервис. В итоге риелтор развил своё дело, а что получил программист? Он просто написал в очередной раз сайт апи или сайт ничего не зная.о предметной области. Ему дали четкое ТЗ с тестовой базой данных.

                  +2
                  А риелтор, значит, привносит что-то стоящее, двигает вперед область перепродажи недвижимости. Смешно же, ну.
                    +1

                    Четко составленное ТЗ? А программист все сдал не задавая вопросов, зачем нужна та или иная кнопочка? Вы не имеете ни малейшего представления, как разрабатывается ПО на самом деле.

                +9
                Надо было их назвать Артур Артур
                  0
                  или Револьвер Оцелот
                  0
                  Интересно, а есть ли сервис, подобный sms-reg.com, но только с американскими номерами, проходящими проверку Microsoft Live? Кто-нибудь может порекомендовать?
                    +1

                    Ключевые слова для поисковика: "sms online".
                    Далее смотри в найденных сервисах.
                    Скорее всего, не с первого номера или не с первого сервиса будет удача, но найти можно.

                      0
                      Бесплатные не работают с MS Live (а, в частности, с Microsoft Rewards), проверено неоднократно.
                      0
                      Есть конечно, даже бесплатно www.textnow.com
                        0
                        Не уверен, насколько он подобный, это скорее полноценная телефония, но номера там почти для любой страны есть — Twilio. Правда платный.
                          0
                          Вот тут 63 страны доступно, в том числе США. Насчет Microsoft Live не знаю правда. Самое сложное — это Google пожалуй, его проверку раньше обходил через звонок на номер МТТ, который он признавал за обычный landline, а не за IP телефонию. Не знаю пофиксили или нет.
                            0
                            Номера IP-телефонии не подходят однозначно (кстати, интересно, каким образом это определяется? Но то, что определяется, это точно — пробовал от разных провайдеров, не катит). Вот если бы кто-нибудь подобную статью написал...), нужны именно «как бы настоящие» номера.
                          +2

                          Очень весело. Только с sms-reg будьте аккуратны — номера авторегов вносятся целыми диапазонами, так что ваши аккаунты скосят разом в коротком промежутке.

                            –12
                            У меня в районоом паблике в ВК администратор — гей, чуть напишешь что-то не бодропозитивное или нефитоняшное — бан. Но т.к. там обсуждаются парковки-кладовки-велуны на тротуарах — мне там быть надо. Последний акк жив уже больше месяца, зареган как раз на какой-то смс-рег-номер.
                              –6
                              sms-reg принимает смс на номера хомячков с андроидом которые любят игры бесплатно без смс скачать. Как ты будешь это детектить?
                                +2
                                Можно получить какие-то подтверждения данной информации?
                                  –1
                                  Скачай игру с какого нибудь сайта, и посмотри что будет дальше происходить.
                                    +1
                                    Я хочу получить какие-то статьи с разборами таких приложений, где будет видно что это приложение использует доступ к смс именно для того, чтобы продавать твой номер на подобных сервисах.
                                  0

                                  Не знаю, что там они принимают, но я видел реальные подтверждения, что номера sms-reg'а банятся ДИАПАЗОНАМИ. Вряд ли это взлом.
                                  Хотя может я чего-то недопонял… это сложные аномалии.

                                +5
                                Главный вопрос остается открытым — зачем я это сделал?
                                Что-то мне это напомнило древние времена: Сидишь на работе, у всех вокруг компы и аська. Замечаешь, что у коллеги колонки включены. Отключаешь на своей машине сеть, пишешь этому коллеге в аську 10 пустых сообщений, включаешь сеть. Коллега подпрыгивает от пулеметной очереди «ку-ку-ку(-ку)» из колонок.
                                  0
                                  лучше подскажите, как отследить прямую трансляцию человека или группы. А то уведомления от самого вк приходят неудобно.
                                    0
                                    Атака клонов )
                                      +1
                                      Из полезного, имхо, только uncapcha. Сохранил себе на подумать. :)
                                        0
                                        Лучше бы создали нейросеть для вычисления протеинов и для создания вечной автономной капсулы. Тогда была бы честь и хвала.
                                          +1
                                          У меня так председателя воекомата зовут, так и хочется написать: «Отличная попытка военкомат!».

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

                                          Самое читаемое