CĂłmo entretenerte con vk api

En algún momento de mi vida, me di cuenta de que para ser feliz necesito crear 10 páginas de copias de mí mismo en Vkontakte y al mismo tiempo ser agregado como amigo a las personas de la lista de amigos de mi página principal. Para detalles de la implementación de la idea, por favor, bajo cat.


Objetivos del proyecto


  • Hacer 10 páginas en Vkontakte
  • Copiar avatar de la página principal
  • Copia todas las publicaciones de la página principal
  • Copie todos los videos de la página principal
  • Agregar a todos los grupos de la página principal
  • Haga un gráfico completo de las bicicletas de amigos entre los bots (como cada entrada y agregue cada bot como amigo)
  • Agregar a cada una de las 80 personas de una lista de amigos precompilada

Registro


Para crear las páginas, utilicé el servicio sms-reg.com, aquí hay más información sobre los servicios de recepción de SMS.

Registramos las 10 páginas y escribimos sus nombres de usuario / contraseñas en el archivo accounts.json (donde id es el id de la página que se está registrando y zero_id es el id de nuestra página principal):

{ "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


Trabajaré con la biblioteca vk_api.

 pip install vk_api --user 

Cree un archivo bots.py, nos será útil para el resto de los scripts:

 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() 

Lee accounts.json e inicializa la API para cada una de las cuentas.

Copiar avatar


 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 

Copia de video


 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']) 

Agregar a grupos


 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 

Crea un gráfico completo de amigos




 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) 

Crea un gráfico de me gusta completo



 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 

Agregar a amigos


crear un archivo de amigos en el que escribimos en cada lĂ­nea

 id_ #_ ( ) 

VKontakte le permite agregar aproximadamente 80 personas al dĂ­a.

 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) 

Bypass CAPTCHA


El lector atento ya ha visto la lĂ­nea.

 from captcha import captcha_handler 

Como a Vkontakte no siempre le gusta esta cantidad de solicitudes, debe procesar captcha. Hay una gran cantidad de servicios que brindan esa oportunidad. Solo necesita enviar una solicitud de publicaciĂłn con captcha en base64 y esperar.



 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:] 

Resultados


AquĂ­ hay algunas capturas de pantalla de lo que la gente me enviĂł.
Texto oculto


github
La pregunta principal sigue abierta: ¿por qué hice esto? No tengo idea

Source: https://habr.com/ru/post/449656/


All Articles