如何使用VK API娱乐自己

在我生命中的某个时刻,我意识到,为了幸福,我需要在Vkontakte上创建10页自己的副本,同时将其作为朋友添加到我主页的朋友列表中的人们。 有关实施此想法的详细信息-请在目录下。


项目目标


  • 在Vkontakte上打印10页
  • 从主页复制头像
  • 复制主页上的所有帖子
  • 复制主页上的所有视频
  • 添加到主页的所有组
  • 制作完整的机器人图(如每个条目并将每个机器人添加为好友)
  • 从预先编译的朋友列表中添加到80个人中的每一个

报名


为了创建页面,我使用了sms-reg.com服务,有关SMS接收服务的更多信息在这里写得很好。

我们注册所有10个页面,并在account.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 

加为好友


创建一个朋友文件,我们在每一行中编写

 id_ #_ ( ) 

VKontakte允许您每天增加大约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 

由于Vkontakte并不总是喜欢这种请求数量,因此您必须处理验证码。 有大量的服务提供了这样的机会。 您只需要在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
主要问题仍然悬而未决-我为什么要这样做? 我不知道

Source: https://habr.com/ru/post/zh-CN449656/


All Articles