Суть Скрипт берёт первые посты (можно указать сколько) из сообществ и вытаскивает ID тех людей которые Лайкали эти посты и оставляли комментарии. Дальше расскладывает ID по файлам UserID_All.txt - Суда тех кто лайкал посты и комментировал UserID_comm.txt - Суда попадают ID тех, кто только комментировал. UserID_Like.txt - И соответсвенно сюда только тех, кто лайкал посты. Теперь можно запустить Масслайкинг и выбрать кого лайкать. - лайкать тех пользователей, которые ставили лайки постам. - лайкать тех пользователей, кто оставлял комментарии. - лайкать тех пользователей, кто лайкал и комментировал. На данный момент скрипт лайкает только аватарку и случайные фотографии от 1 до 3шт рандомно. Что ещё надо, стену? Возможности. 0) Поддержка ****** 1) Многопоточность - Можно добавить несколько аккаунтов и они пойдут лайкать людей по списку. Для каждого аккаунта список будет рандомизироваться, что бы вся толпа ботов в раз не залайкала одного и того же человека. 2) Антикапча - cptch.net 3) Кого лайкать - Только тех кто онлайн или всех 4) Остальное можно понять из комментариев к коду. import vk_api from python_cptchnet import ImageCaptcha import threading import time import json import random from datetime import datetime LIKE_PHOTO = random.randint(0, 1) # Если 1 то лайкать случайную фотку, если 0 то нет ONLINE = 1 # Если 1 то лайкать тех кто Online, если 0 то всех print('*' * 55) print(' ' * 15, end='') print('#### Liker VK v 1.0 ####') print('*' * 55 + '\n') def GET_JSON(J): print(json.dumps(J, sort_keys=True, indent=4)) Count_captcha = [] def captcha_handler(captcha): SERVICE_KEY = "4543534543543543534543534" try: image_link = captcha.get_url() user_answer = ImageCaptcha.ImageCaptcha(service_key=SERVICE_KEY).captcha_handler(captcha_link=image_link) if not user_answer['Error']: Count_captcha.append(user_answer['captchaSolve']) print('CAPTCHA', str(len(Count_captcha))) return captcha.try_again(user_answer['captchaSolve']) elif user_answer['Error captcha']: pass except: pass ''' Авторизация. Получение сессии. Запуск работы. ''' def Start(coll): Options = '3' print('=' * 55) with open("Account.txt") as file: GetToken = [row.strip() for row in file] if coll == False: print('\nВыберите вариант работы:') print('[1] Начать лайкать тех, кто лайкал посты.') print('[2] Начать лайкать тех, кто оставлял комментарии') print('[3] Начать лайкать тех, кто лайкал и комментировал') print('=' * 55) Options = input(": ") for sessions in range(len(GetToken)): AccountProxy = '' AccountToken = GetToken[sessions].split(' ')[0].split(':')[0] vk_session = vk_api.VkApi(token=AccountToken, captcha_handler=captcha_handler) try: AccountProxy = GetToken[sessions].split(' ')[1] vk_session.http.proxies = { 'http': 'http://' + AccountProxy + '/', 'https': 'https://' + AccountProxy + '/' } except: try: VK = vk_session.get_api() ConnectType = 'Без Proxy' except: print(f"Ошибка авторизации: {AccountToken}") continue else: try: VK = vk_session.get_api() ConnectType = 'Через Proxy' except: print(f"Ошибка авторизации: {AccountToken}") continue Users = VK.users.get(fields='first_name,id,counters') first_name = Users[0]['first_name'] print(f"[{first_name}] \t Авторизован: {ConnectType}") ''' Начало работы. ''' if coll == False: Start_GetRequests = threading.Thread(target=Liker, args=(first_name, VK, Options)) Start_GetRequests.start() time.sleep(0.5) if coll == True: collector(first_name, VK) break ''' Сбор ID пользователей ''' def collector(first_name, VK): print('-' * 55) with open("id.txt") as file: GetID = [row.strip() for row in file] UserIDList_Like = [] List_comm = [] UserIDList_comm = [] ALL_ID = [] WALL_GET_COUNT = input("Сколько постов обходить в каждом сообщистве: ") if WALL_GET_COUNT.isdigit() == False: print(f"Ну ты пизде конечно, введи цыфру, а не эту \"{WALL_GET_COUNT}\" хуйню...") exit(0) print(f"Начинаю поиск пользователей: \nКто лайкнул и прокомментировал первые {str(WALL_GET_COUNT)} постов") print('=' * 55) for index in range(len(GetID)): i_count = index + 1 wall_get = VK.wall.get(owner_id='-' + GetID[index], count=int(WALL_GET_COUNT), filter='owner') print(f"\n[{str(i_count)}/{len(GetID)}] Работаю в сообщистве: - https://vk.com/club{GetID[index]}") for post in range(len(wall_get['items'])): # Собрать все ID пользователей которые поставили лайки likes_getList = VK.likes.getList(type='post', owner_id='-' + GetID[index], item_id=wall_get['items'][post]['id'], count=1000) UserIDList_Like.extend(likes_getList['items']) time.sleep(1) # Собрать все ID пользователей которые оставили комментари comm_getList = VK.wall.getComments(owner_id='-' + GetID[index], post_id=wall_get['items'][post]['id'], count=100) List_comm.extend(comm_getList['items']) for i in range(len(List_comm)): try: UserIDList_comm.append(List_comm[i]['from_id']) except: pass print(f"- Найдено пользователей с лайков: \t\t [{len(set(UserIDList_Like))}]") print(f"- Найдено пользователей с комментариев: \t [{len(set(UserIDList_comm))}]") print('-' * 55) time.sleep(1) print('\n') print('=' * 55) UserIDList_Like.extend(UserIDList_Like) User_ID_Count = int(len(UserIDList_Like)) + int(len(UserIDList_comm)) print("- Результат:") print(f"- Общее количество пользователей: \t[{str(User_ID_Count)}]") print(f"- Общее количество с лайков: \t\t[{len(UserIDList_Like)}]") print(f"- Общее количество с комментариев: \t[{len(UserIDList_comm)}]") ALL_ID.extend(UserIDList_Like) ALL_ID.extend(UserIDList_comm) with open('UserID_Like.txt', 'w') as file: for i in UserIDList_Like: file.write(str(i) + '\n') with open('UserID_comm.txt', 'w') as file: for i in UserIDList_comm: file.write(str(i) + '\n') with open('UserID_All.txt', 'w') as file: for i in ALL_ID: file.write(str(i) + '\n') Start(coll=False) ''' Начало работы. ''' def Liker(first_name, VK, Options): time.sleep(5) ''' Работа по списку тех пользователей, которые ставили лайки постам ''' if Options == '1': with open("UserID_Like.txt") as file: UserID = [row.strip() for row in file] ''' Работа по списку тех пользователей, кто оставлял комментарии ''' if Options == '2': with open("UserID_comm.txt") as file: UserID = [row.strip() for row in file] ''' Работа по списку тех пользователей, кто лайкал и комментировал ''' if Options == '3': with open("UserID_All.txt") as file: UserID = [row.strip() for row in file] random.shuffle(UserID) like_count = 0 page_count = 0 start_time = datetime.now() # будем следить по времени за каждым аккаунтом for photo_i in range(len(UserID)): page_count = page_count + 1 time.sleep(3) try: photos_getAll = VK.photos.getAll(owner_id=UserID[photo_i], count=20, photo_sizes=0) users_get = VK.users.get(user_ids=UserID[photo_i], fields='photo_id,sex,online,counters,bdate') except: continue print('-' * 55) timeWork = str(datetime.now() - start_time).split('.') print(f"[{timeWork[0]}] [{str(like_count)}/{str(page_count)}] - [{first_name}] Смотрю страницу: \thttps://vk.com/id{users_get[0]['id']}") try: # Если профиль закрытый if users_get[0]['is_closed'] == True: print('- Пропускаю профиль закрытый') continue # Если друзей меньше * то пропустить if users_get[0]['counters']['friends'] < 50: print('- Пропускаю мало друзей') continue # Если фото меньше * то пропустить if users_get[0]['counters']['photos'] < 50: print('- Пропускаю мало фото') continue # Если пользователь Офлайн, то пропустить if ONLINE == 1: if users_get[0]['online'] == 0: print('- Пропускаю пользователь Офлайн') continue # GET_JSON(users_get) except: pass ''' Лайкаем аватарку пользователя ''' try: photo_id = str(users_get[0]['photo_id']).split('_') Add_Likes = VK.likes.add(type='photo', owner_id=UserID[photo_i], item_id=photo_id[1]) except: pass else: like_count = like_count + 1 timeWork = str(datetime.now() - start_time).split('.') print(f"[{timeWork[0]}] [{str(like_count)}/{str(page_count)}] - [{first_name}] Лайк на аватарку: \thttps://vk.com/id{users_get[0]['id']}?z=photo{users_get[0]['photo_id']}") timeWork = str(datetime.now() - start_time).split('.') print(f"[{timeWork[0]}] [{str(like_count)}/{str(page_count)}] - [{first_name}] TimeOut - и лайкаем фото") time.sleep(random.randint(30, 60)) # TimeOut после лайка на аву ''' Лайкаем случайные фотографии пользователя ''' Photo_Buff = [] for i in range(len(photos_getAll['items'])): Photo_Buff.append(photos_getAll['items'][i]['id']) random.shuffle(Photo_Buff) # Так интереснее)))) for l in range(random.randint(1, 3)): # Лайк на случайные 3 фотки time.sleep(random.randint(20, 50)) # TimeOut между лайками на фото try: Add_Likes = VK.likes.add(type='photo', owner_id=UserID[photo_i], item_id=Photo_Buff[l]) except: pass else: like_count = like_count + 1 timeWork = str(datetime.now() - start_time).split('.') print(f"[{timeWork[0]}] [{str(like_count)}/{str(page_count)}] - [{first_name}] Лайк на фото: \t\thttps://vk.com/id{users_get[0]['id']}?z=photo{str(users_get[0]['id'])}_{str(Photo_Buff[l])}") #print(f"[{first_name}] TimeOut") #time.sleep(random.randint(20, 50)) # TimeOut после того, как пролайкали фотки timeWork = str(datetime.now() - start_time).split('.') print(f"[{timeWork[0]}] [{str(like_count)}/{str(page_count)}] - [{firs Код import vk_api from python_cptchnet import ImageCaptcha import threading import time import json import random from datetime import datetime LIKE_PHOTO = random.randint(0, 1) # Если 1 то лайкать случайную фотку, если 0 то нет ONLINE = 1 # Если 1 то лайкать тех кто Online, если 0 то всех print('*' * 55) print(' ' * 15, end='') print('#### Liker VK v 1.0 ####') print('*' * 55 + '\n') def GET_JSON(J): print(json.dumps(J, sort_keys=True, indent=4)) Count_captcha = [] def captcha_handler(captcha): SERVICE_KEY = "4543534543543543534543534" try: image_link = captcha.get_url() user_answer = ImageCaptcha.ImageCaptcha(service_key=SERVICE_KEY).captcha_handler(captcha_link=image_link) if not user_answer['Error']: Count_captcha.append(user_answer['captchaSolve']) print('CAPTCHA', str(len(Count_captcha))) return captcha.try_again(user_answer['captchaSolve']) elif user_answer['Error captcha']: pass except: pass ''' Авторизация. Получение сессии. Запуск работы. ''' def Start(coll): Options = '3' print('=' * 55) with open("Account.txt") as file: GetToken = [row.strip() for row in file] if coll == False: print('\nВыберите вариант работы:') print('[1] Начать лайкать тех, кто лайкал посты.') print('[2] Начать лайкать тех, кто оставлял комментарии') print('[3] Начать лайкать тех, кто лайкал и комментировал') print('=' * 55) Options = input(": ") for sessions in range(len(GetToken)): AccountProxy = '' AccountToken = GetToken[sessions].split(' ')[0].split(':')[0] vk_session = vk_api.VkApi(token=AccountToken, captcha_handler=captcha_handler) try: AccountProxy = GetToken[sessions].split(' ')[1] vk_session.http.proxies = { 'http': 'http://' + AccountProxy + '/', 'https': 'https://' + AccountProxy + '/' } except: try: VK = vk_session.get_api() ConnectType = 'Без Proxy' except: print(f"Ошибка авторизации: {AccountToken}") continue else: try: VK = vk_session.get_api() ConnectType = 'Через Proxy' except: print(f"Ошибка авторизации: {AccountToken}") continue Users = VK.users.get(fields='first_name,id,counters') first_name = Users[0]['first_name'] print(f"[{first_name}] \t Авторизован: {ConnectType}") ''' Начало работы. ''' if coll == False: Start_GetRequests = threading.Thread(target=Liker, args=(first_name, VK, Options)) Start_GetRequests.start() time.sleep(0.5) if coll == True: collector(first_name, VK) break ''' Сбор ID пользователей ''' def collector(first_name, VK): print('-' * 55) with open("id.txt") as file: GetID = [row.strip() for row in file] UserIDList_Like = [] List_comm = [] UserIDList_comm = [] ALL_ID = [] WALL_GET_COUNT = input("Сколько постов обходить в каждом сообщистве: ") if WALL_GET_COUNT.isdigit() == False: print(f"Ну ты пизде конечно, введи цыфру, а не эту \"{WALL_GET_COUNT}\" хуйню...") exit(0) print(f"Начинаю поиск пользователей: \nКто лайкнул и прокомментировал первые {str(WALL_GET_COUNT)} постов") print('=' * 55) for index in range(len(GetID)): i_count = index + 1 wall_get = VK.wall.get(owner_id='-' + GetID[index], count=int(WALL_GET_COUNT), filter='owner') print(f"\n[{str(i_count)}/{len(GetID)}] Работаю в сообщистве: - https://vk.com/club{GetID[index]}") for post in range(len(wall_get['items'])): # Собрать все ID пользователей которые поставили лайки likes_getList = VK.likes.getList(type='post', owner_id='-' + GetID[index], item_id=wall_get['items'][post]['id'], count=1000) UserIDList_Like.extend(likes_getList['items']) time.sleep(1) # Собрать все ID пользователей которые оставили комментари comm_getList = VK.wall.getComments(owner_id='-' + GetID[index], post_id=wall_get['items'][post]['id'], count=100) List_comm.extend(comm_getList['items']) for i in range(len(List_comm)): try: UserIDList_comm.append(List_comm[i]['from_id']) except: pass print(f"- Найдено пользователей с лайков: \t\t [{len(set(UserIDList_Like))}]") print(f"- Найдено пользователей с комментариев: \t [{len(set(UserIDList_comm))}]") print('-' * 55) time.sleep(1) print('\n') print('=' * 55) UserIDList_Like.extend(UserIDList_Like) User_ID_Count = int(len(UserIDList_Like)) + int(len(UserIDList_comm)) print("- Результат:") print(f"- Общее количество пользователей: \t[{str(User_ID_Count)}]") print(f"- Общее количество с лайков: \t\t[{len(UserIDList_Like)}]") print(f"- Общее количество с комментариев: \t[{len(UserIDList_comm)}]") ALL_ID.extend(UserIDList_Like) ALL_ID.extend(UserIDList_comm) with open('UserID_Like.txt', 'w') as file: for i in UserIDList_Like: file.write(str(i) + '\n') with open('UserID_comm.txt', 'w') as file: for i in UserIDList_comm: file.write(str(i) + '\n') with open('UserID_All.txt', 'w') as file: for i in ALL_ID: file.write(str(i) + '\n') Start(coll=False) ''' Начало работы. ''' def Liker(first_name, VK, Options): time.sleep(5) ''' Работа по списку тех пользователей, которые ставили лайки постам ''' if Options == '1': with open("UserID_Like.txt") as file: UserID = [row.strip() for row in file] ''' Работа по списку тех пользователей, кто оставлял комментарии ''' if Options == '2': with open("UserID_comm.txt") as file: UserID = [row.strip() for row in file] ''' Работа по списку тех пользователей, кто лайкал и комментировал ''' if Options == '3': with open("UserID_All.txt") as file: UserID = [row.strip() for row in file] random.shuffle(UserID) like_count = 0 page_count = 0 start_time = datetime.now() # будем следить по времени за каждым аккаунтом for photo_i in range(len(UserID)): page_count = page_count + 1 time.sleep(3) try: photos_getAll = VK.photos.getAll(owner_id=UserID[photo_i], count=20, photo_sizes=0) users_get = VK.users.get(user_ids=UserID[photo_i], fields='photo_id,sex,online,counters,bdate') except: continue print('-' * 55) timeWork = str(datetime.now() - start_time).split('.') print(f"[{timeWork[0]}] [{str(like_count)}/{str(page_count)}] - [{first_name}] Смотрю страницу: \thttps://vk.com/id{users_get[0]['id']}") try: # Если профиль закрытый if users_get[0]['is_closed'] == True: print('- Пропускаю профиль закрытый') continue # Если друзей меньше * то пропустить if users_get[0]['counters']['friends'] < 50: print('- Пропускаю мало друзей') continue # Если фото меньше * то пропустить if users_get[0]['counters']['photos'] < 50: print('- Пропускаю мало фото') continue # Если пользователь Офлайн, то пропустить if ONLINE == 1: if users_get[0]['online'] == 0: print('- Пропускаю пользователь Офлайн') continue # GET_JSON(users_get) except: pass ''' Лайкаем аватарку пользователя ''' try: photo_id = str(users_get[0]['photo_id']).split('_') Add_Likes = VK.likes.add(type='photo', owner_id=UserID[photo_i], item_id=photo_id[1]) except: pass else: like_count = like_count + 1 timeWork = str(datetime.now() - start_time).split('.') print(f"[{timeWork[0]}] [{str(like_count)}/{str(page_count)}] - [{first_name}] Лайк на аватарку: \thttps://vk.com/id{users_get[0]['id']}?z=photo{users_get[0]['photo_id']}") timeWork = str(datetime.now() - start_time).split('.') print(f"[{timeWork[0]}] [{str(like_count)}/{str(page_count)}] - [{first_name}] TimeOut - и лайкаем фото") time.sleep(random.randint(30, 60)) # TimeOut после лайка на аву ''' Лайкаем случайные фотографии пользователя ''' Photo_Buff = [] for i in range(len(photos_getAll['items'])): Photo_Buff.append(photos_getAll['items'][i]['id']) random.shuffle(Photo_Buff) # Так интереснее)))) for l in range(random.randint(1, 3)): # Лайк на случайные 3 фотки time.sleep(random.randint(20, 50)) # TimeOut между лайками на фото try: Add_Likes = VK.likes.add(type='photo', owner_id=UserID[photo_i], item_id=Photo_Buff[l]) except: pass else: like_count = like_count + 1 timeWork = str(datetime.now() - start_time).split('.') print(f"[{timeWork[0]}] [{str(like_count)}/{str(page_count)}] - [{first_name}] Лайк на фото: \t\thttps://vk.com/id{users_get[0]['id']}?z=photo{str(users_get[0]['id'])}_{str(Photo_Buff[l])}") #print(f"[{first_name}] TimeOut") #time.sleep(random.randint(20, 50)) # TimeOut после того, как пролайкали фотки timeWork = str(datetime.now() - start_time).split('.') print(f"[{timeWork[0]}] [{str(like_count)}/{str(page_count)}] - [{firs Как это все запустить? Если не вкурсе что такое Python, то в google "как запуститить скипт на python" Если ничего не понял - забуть про все это! Создать файл "Account.txt" туда положить токен аккаунтов. Если нужно использовать ****** то формат строк такой Token loginProxy:PassProxy@IPProxy:port Код Token loginProxy:PassProxy@IPProxy:port Между токеном и ****** ПРОБЕЛ!!!!! TIMEOUT Паузы между действиями так же можете указать сами в секундах, но смотрите примерно что бы не выйти из лимита на лайки 500 в сутки или сколько там хз? Результаты. хз тестирую первый день.
lastwek, Да впринципи уже готово под anti-captcha.com Просто допиливать лень. Надо трафика насобирать, а сам алгоритм хз. Думаю всеже нужно научить скрипт лайкать записи на стене, так же как и фото рандомно несколько штук. Отклик уже есть, люди по тихому переходят на мою страницу и даже взаимные лайки были. Нужен ахуенный алгоритм, что бы выжеть дахуя трафика)))) ANTICAPTCHA_KEY ="9809890890" try: image_link = captcha.get_url() print(image_link) user_answer = ImageToTextTask.ImageToTextTask(anticaptcha_key=ANTICAPTCHA_KEY). \ captcha_handler(captcha_link=image_link) key = user_answer['solution']['text'] return captcha.try_again(key) except: pass Код ANTICAPTCHA_KEY ="9809890890" try: image_link = captcha.get_url() print(image_link) user_answer = ImageToTextTask.ImageToTextTask(anticaptcha_key=ANTICAPTCHA_KEY). \ captcha_handler(captcha_link=image_link) key = user_answer['solution']['text'] return captcha.try_again(key) except: pass
Забыл сказать что ещё нужен файл id.txt куда нужно положить ID пабликов из которых нужно собрать людей.
Интересно, развивай и мб продавать начнешь, я бы купил ес чо, но чтобы не сильно ебаться с запуском. Сделай по красоте и продавай, желаю успехов!
natixxx, Можно простенькую GUI прикрутить с настройками + копка "Запустить" Так же можно сам Python с установленными модулями положить к скрипту, только весить все это будет метров 70, зато челу не нужно будет устанавливать Python и все необходимые модули. pyinstaller юзать нет смысла на него орут все говно антивирусы в том числе стандартный виндовый, ибучий защитник или как там это гавно называется. Да и открытый код явным образом повышает доверии к чему либо! Так что pyinstaller отметается 100% Но это все позже, Надо научится извлекать выгоду из всего этого Масслайкинга, а потом я если что, могу сделать красиво и не дорого!)))
natixxx, Согласен на все 100%. К тому же я мысли выразил не правильно, хотел сказать, надо научится с этого дела драфик добывать! А что с ним делать каждый конечно же сам пусть думает)))
Добавил немного инфы что бы можно было заниматься какой-то аналитикой и делать выводы по работе скрипта. - Сколько времени в работе каждый аккаунт - Сколько поставил лайков каждый аккаунт - Сколько просмотрел страниц каждый аккаунт Как читать такой вывод в консоли? Это значит что: - Аккаунт в работе 52 секуды - Лайков поставленно - 0 - Страниц просмотренно - 14
Пршила идея ( на поверхности ) , реализовать все в интерфейсе телеграма, чтобы аккаунты можно было выгружать прямо в мессенджер. Сделай услугу по аренде такого бота, цену загибать не стоит ,но хостинг и труд должны быть оплачены. Я бы лицензию такую приобрел.
natixxx, Прям идеи совпали. Думаю над этим вопросом! ))) Вынуждать людей скачивать себе на ПК ёбаные экзешники то же не хочется!
natixxx, А что сдохло то? Не работает не лайкает? Посмотрю на днях, сейчас лето к компу подойти некогда...