Irgendwann in meinem Leben wurde mir klar, dass ich zum Glück 10 Seiten Kopien von mir auf Vkontakte erstellen und gleichzeitig als Freund zu Leuten aus der Freundesliste meiner Hauptseite hinzugefügt werden muss. Einzelheiten zur Umsetzung der Idee finden Sie unter Kat.-Nr.

Projektziele
- Machen Sie 10 Seiten auf Vkontakte
- Kopieren Sie den Avatar von der Hauptseite
- Kopieren Sie alle Beiträge von der Hauptseite
- Kopieren Sie alle Videos von der Hauptseite
- Zu allen Gruppen der Hauptseite hinzufügen
- Erstellen Sie eine vollständige Grafik der Friendbikes unter den Bots (wie bei jedem Eintrag und fügen Sie jeden Bot als Freund hinzu).
- Fügen Sie zu jeder von 80 Personen aus einer vorkompilierten Liste von Freunden hinzu
Registrierung
Um die Seiten zu erstellen, habe ich den Dienst sms-reg.com verwendet. Weitere Informationen zu SMS-Empfangsdiensten finden Sie
hier .
Wir registrieren alle 10 Seiten und schreiben ihre Benutzernamen / Passwörter in die Datei accounts.json (wobei id die ID der zu registrierenden Seite und zero_id die ID unserer Hauptseite ist):
{ "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
Ich werde mit der Bibliothek vk_api arbeiten.
pip install vk_api --user
Erstellen Sie eine bots.py-Datei, die für den Rest der Skripte nützlich sein wird:
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()
Es liest accounts.json und initialisiert die API für jedes der Konten.
Avatar kopieren
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
Videokopieren
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'])
Hinzufügen zu Gruppen
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
Erstellen Sie ein vollständiges Diagramm mit Freunden

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)
Erstellen Sie ein vollständiges Likes-Diagramm
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:
Zu Freunden hinzufügen
Erstellen Sie eine Freundesdatei, in die wir in jede Zeile schreiben
id_ #_ ( )
Mit VKontakte können Sie täglich etwa 80 Personen hinzufügen.
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)
CAPTCHA-Bypass
Der aufmerksame Leser hat die Zeile bereits gesehen
from captcha import captcha_handler
Da Vkontakte diese Anzahl von Anfragen nicht immer mag, müssen Sie Captcha verarbeiten. Es gibt eine Vielzahl von Diensten, die eine solche Möglichkeit bieten. Sie müssen nur eine Post-Anfrage mit Captcha in base64 senden und warten.

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:]
Ergebnisse
Hier sind einige Screenshots von dem, was mir die Leute geschickt haben
GithubDie Hauptfrage bleibt offen - warum habe ich das getan? Ich habe keine Ahnung.