Cara menghibur diri Anda dengan vk api

Pada titik tertentu dalam hidup saya, saya menyadari bahwa untuk kebahagiaan saya perlu membuat 10 halaman salinan diri saya di Vkontakte dan pada saat yang sama ditambahkan sebagai teman kepada orang-orang dari daftar teman halaman utama saya. Untuk detail penerapan ide - harap, di bawah kucing.


Tujuan proyek


  • Buat 10 halaman di Vkontakte
  • Salin avatar dari halaman utama
  • Salin semua posting dari halaman utama
  • Salin semua video dari halaman utama
  • Tambahkan ke semua grup halaman utama
  • Buat grafik lengkap sepeda teman di antara bot (seperti setiap entri dan tambahkan setiap bot sebagai teman)
  • Tambahkan ke masing-masing 80 orang dari daftar teman yang telah dikompilasi sebelumnya

Pendaftaran


Untuk membuat halaman, saya menggunakan layanan sms-reg.com, lebih lanjut tentang layanan penerimaan SMS ditulis dengan baik di sini .

Kami mendaftarkan semua 10 halaman dan menulis nama pengguna / kata sandi mereka di file accounts.json (di mana id adalah id dari halaman yang didaftarkan, dan zero_id adalah id dari halaman utama kami):

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


Saya akan bekerja dengan perpustakaan vk_api.

 pip install vk_api --user 

Buat file bots.py, itu akan berguna bagi kami untuk sisa skrip:

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

Bunyinya accounts.json dan menginisialisasi api untuk masing-masing akun.

Salin 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 

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

Menambahkan ke Grup


 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 

Buat grafik teman yang lengkap




 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) 

Buat grafik suka lengkap



 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 

Tambahkan ke teman


buat file teman di mana kami menulis di setiap baris

 id_ #_ ( ) 

VKontakte memungkinkan Anda untuk menambah sekitar 80 orang sehari.

 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


Pembaca yang penuh perhatian telah melihat garis

 from captcha import captcha_handler 

Karena Vkontakte tidak selalu menyukai jumlah permintaan ini, Anda harus memproses captcha. Ada sejumlah besar layanan yang memberikan peluang seperti itu. Anda hanya perlu mengirim permintaan pos dengan captcha di base64 dan tunggu.



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

Hasil


Berikut adalah beberapa tangkapan layar dari apa yang dikirim orang kepada saya
Teks tersembunyi


github
Pertanyaan utama tetap terbuka - mengapa saya melakukan ini? Saya tidak tahu.

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


All Articles