· 5 years ago · Jan 28, 2021, 02:20 PM
1import time
2import random
3import vk_api
4import requests
5from PIL import Image
6import urllib.request
7
8
9def captcha(url):
10 urllib.request.urlretrieve(url, "./Captcha/captcha.jfif")
11 Image.open("./Captcha/captcha.jfif").save("./Captcha/captcha.png")
12
13 key = "f18cca4cadb1c07bd6b528a476e144f1"
14 data = {"key" : key}
15 files = {"file": open("./Captcha/captcha.png", "rb")}
16
17 response = requests.post("https://rucaptcha.com/in.php", data=data, files=files)
18 print("Отправка запроса на решение капчи...")
19 if(response.status_code == 200):
20 print("Запрос отправлен успешно! Будем запрашивать ответ через 5 секунд")
21 id = str(response.text).split('|')[1]
22 while True:
23 time.sleep(5)
24 print("Запрос ответа...")
25 response = requests.get("https://rucaptcha.com/res.php?key=" + key + "&action=get&id=" + id)
26 if(str(response.text).split('|')[0] == "OK"):
27 print("Капча готова: " + str(response.text).split('|')[1])
28 return str(response.text).split('|')[1]
29 elif(str(response.text) == "CAPCHA_NOT_READY"):
30 print("Капча еще не готова, повторим запрос через 5 сек...")
31 else:
32 print("Неизвестный ответ: " + str(response.text))
33 if(input("Продолжить запросы? (y/n) ").upper() == "Y"):
34 print("Повторим запрос через 5 сек...")
35 continue
36 else:
37 print("Отменено пользователем.")
38 return -1
39
40def send_message_captcha(id, sid, key):
41 try:
42 api.method('messages.send', {'user_id':id, 'random_id':0, 'message':message, 'captcha_sid': sid, 'captcha_key':key})
43 except:
44 pass
45
46tokens = ['76b4a9554e8e738c84fc47273b14be2a5025af844328a911ef0355b67a63a1097edb57ba41a07e8e0a190']
47
48USERS_SPAM = ['626690886', '538755781','589497211','455099091','64115760','631216279']
49
50GROUP = True
51
52RUCAPTCHA = True
53
54
55FROM_GROUP = '134026773'
56
57text_spam = ['сообщение 1','сообщение 2']
58
59proxy = [{'http': '91.77.162.117:8080'}, {'http': '192.109.165.221:80'}]
60
61print(f'Загружено токенов - {len(tokens)}')
62for token in tokens:
63 active_sesion = requests.Session()
64 active_sesion.proxies.update(random.choice(proxy))
65 api = vk_api.VkApi(token=token, session=active_sesion)
66 for user_id in USERS_SPAM:
67 if not GROUP:
68 try:
69 message = random.choice(text_spam)
70 api.method('messages.send', {'user_id':user_id, 'random_id':0, 'message':message})
71 except vk_api.exceptions.Captcha as captcha:
72 try:
73 print(f'Появилась капча - {captcha.get_url()}')
74 captcha_key = input('Введите капчу:')
75 captcha.try_again(captcha_key)
76 except:
77 pass
78 except:
79 pass
80 elif GROUP:
81 if not RUCAPTCHA:
82 GET_FROM_GROUP = api.method('groups.getMembers', {'group_id':FROM_GROUP,'count':1000})
83 users = GET_FROM_GROUP['items']
84 for user in users:
85 try:
86 message = random.choice(text_spam)
87 api.method('messages.send', {'user_id':user, 'random_id':0, 'message':message})
88 except vk_api.exceptions.Captcha as captcha:
89 try:
90 print(f'Появилась капча - {captcha.get_url()}')
91 captcha_key = input('Введите капчу:')
92 captcha.try_again(captcha_key)
93 except:
94 pass
95 except vk_api.ApiError:
96 pass
97 elif RUCAPTCHA:
98 GET_FROM_GROUP = api.method('groups.getMembers', {'group_id':FROM_GROUP,'count':1000})
99 users = GET_FROM_GROUP['items']
100 for user in users:
101 try:
102 message = random.choice(text_spam)
103 api.method('messages.send', {'user_id':user, 'random_id':0, 'message':message})
104 except vk_api.exceptions.Captcha as captcha:
105 try:
106 captcha_compl = captcha(captcha.get_url())
107 if(captcha_compl == -1):
108 print("Отмена в связи с ошибкой капчи!")
109 break
110 else:
111 try:
112 send_message_captcha(user, captcha.sid, captcha_compl)
113 except:
114 print("Попалась неправильная капча")
115 except:
116 pass
117 except vk_api.ApiError:
118 pass
119