StripedBear
Green Team
- 24.07.2021
- 33
- 23
Вы определили клиента в переменную?Не работает((((
line 14, in <module>
if not сlient.is_user_authorized():
NameError: name 'сlient' is not defined. Did you mean: 'client'?
Познакомьтесь с пентестом веб-приложений на практике в нашем новом бесплатном курсе
Вы определили клиента в переменную?Не работает((((
line 14, in <module>
if not сlient.is_user_authorized():
NameError: name 'сlient' is not defined. Did you mean: 'client'?
Столько вопросов)как поймать ответы пользователей после рассылки ?
При отправке 30-40 сообщений в день с аккаунта его рано или поздно блокируют. Если получателя сообщения попросить прореагировать как-то "Если интересно, отправь +" или еще что-либо, как это ответы собрать ? Цель не сам ответ, а id пользователя записать в какую-то базу данных.
Если с 5 аккаунтов запустить, то будет 5 баз с ответами. Может, как-то можно ответы в 1 базу собрать автоматом? как ?
Я не использовал прокси, но должно работать так:День добрый
Спасибо за статью
Такой вопрос, вы используете прокси?
Потому я почему то ловлю сразу блок аккаунта при подключении сессии либо спам блок.
Аккаунты не новореги
Нужно ли создавать приложение вЯ не использовал прокси, но должно работать так:
from telethon import TelegramClient
import socks
client = TelegramClient('session_id', api_id='12123123', api_hash='0123456789abcdef0123456789abcdef', proxy=(socks.SOCKS5, 'ip-proxy', port-proxy, 'логин', 'пароль'))
При попытке залогиниться в новый акк и отправить кому-то сообщение, пишет Too many requests (caused by SendMessageRequest) и кидает блок на отправку (без даты окончания)Нужно ли создавать приложение вСсылка скрыта от гостейдля каждого акка Телеги с которым я хочу взаимодействовать?
привет бот очень не плох но такой вопрос куда сохраняются данные собранные о пользователиПосмотреть вложение 59293
Привет всем!
Это моя первая статья, буду рад за конструктивную критику. В приниципе, любая критика приветствуется)Обычно в этом месте все пишут предысторию, но у меня она достаточно заурядная: недавно возникла необходимость сделать рассылку по телеграм(никакой чёрнухи :Р).
UPDATE.
Меня правильно поправили - спам в РФ запрещен. Но есть возможность проводить автоматизированный сбор данных. Поэтому перед использованием данного метода следует получить согласие «каждого субъекта на такие действия».
То же самое с рекламной рассылкой - стоит также получить согласие «каждого субъекта на такие действия».
Ссылка скрыта от гостей
Сначала посмотрел готовые решения. Их действительно очень много, но либо не нравилось, либо не подходило по нуждам, либо я совсем терялся в коде.
Вот решил, наконец, проверить свои навыки после курса «Python для Пентестера» и написать все сам.
Ссылка на готовый код с гитхаб в конце статьи.
У нас будет три основные части программы: коннектор клиента(как это назвать по-русски??), сбор участников чата и рассылка по пользователям.
Будем использовать библиотеку telethon. Документация по библиотеке -Ссылка скрыта от гостей
Устанавливаем библиотеку telethon
Импортируем необходимые модули:Код:pip3 install telethon
Python:import time import random from telethon.sync import TelegramClient from telethon.errors.rpcerrorlist import PeerFloodError, SessionPasswordNeededError
Далее необходимо получить App api_id и App api_hash. Для это заходим на my.telegram.org в разделСсылка скрыта от гостей.
Посмотреть вложение 59182
Создаем app, копируем необходимое и создаем переменные:
Код:phone = 'строка' api_id = число api_hash = 'строка'
С помощью следующих двух строчек мы подключаемся к Телеграм
Python:client = TelegramClient(phone, api_id, api_hash) client.connect()
Но при первом подключении надо будет ввести одноразовый код, а если включена двухфакторная авторизация, то и дополнительный пароль.
Поэтому пишем такую конструцию, которая учитывает эти вопросы.
Python:if not сlient.is_user_authorized(): #запрашиваем однаразовый код client.send_code_request(phone) try: client.sign_in(phone, input('Enter verification code: ')) #дополнительный пароль двухфакторной авторизации если необходимо except SessionPasswordNeededError: client.sign_in(password=input("Enter password: "))
В текущей директории создается файл *.session. Был момент, когда я долго разбирался как работает подключение и коннектился огромное количество раз, и Телеграм забанил меня на несколько суток. Если такое случится, нужно удалить это файл сессии и приконнектиться заново.
Получаем список чатов:
Python:chats = [dialog for dialog in client.get_dialogs() if dialog.is_group and dialog.is_channel] print('From which chat you want to parse members:') #выводим список чатов для выбора [print(str(chats.index(i) + 1) + ' - ' + i.title) for i in chats]
.get_dialogs – получить все диалоги
.is_group - проверка является ли диалог групповым чатом/megagroup-чатом
.is_channel – то же самое для каналов.
То есть вместе два этих условия дают спарсить групповые чаты от каналов(пабликов). Отдельно .is_channel можно спарсить участников канала, только если имеются админские права.
Дальше берем в переменную выбор пользователя.
Python:your_choice = input(‘Your choice is: ‘)
Собираем пользователей если у них имеется юзернейм
!Можно спарсить только тех, у кого юзернейм не закрыт!
Python:users = [user.username for user in self.client.get_participants(your_choice ) if user.username]
Можно также спарсить такие параметры как:
id, bot(False or True), scam(False or True), fake(False or True), access_hash, first_name, last_name, phone, и status(когда в последний раз был онлайн)
Далее можно добавить опцию выбора: сохранить или спамить по списку. А можно и не добавлять. Взрослые люди все-таки, сами можете выбрать есть мороженное на завтрак или в обед.
Итак, спам.
- время задержки между собщениями. Лимиты часто меняются и стоит гуглить, чтобы не словить бан.Python:delay = random.randint(15, 40)
Лимиты в телеграме на данный момент:
- Оптимальная пауза при рассылке от 10 сек.
- На рассылку без ссылки - 40 сообщений.
- На рассылку со ссылкой - 10 сообщений.
Варианты сообщения можно положить в список message. И мы будем выбирать рандомное сообщение для каждого юзера.
Python:message = ['Hello!', 'Ola!', 'Ni Hao!'] #сделаю рассылку на первые 40 юзеров из списка for user in users[:39]: print("Sending Message to: ", user) try: #отправляем сообщение client.send_message(user, random.choice(message)) #Возможно словить Flood Error, поэтому лучше сразу прекратить спам и разорвать связь except PeerFloodError: print("[!] Got Flood Error from telegram. \n[!] Try later.") self.client.disconnect() break except Exception as e: print("[!] Error:", e, "\n Trying to continue...") continue else: if user != users[:39]: print(f"Waiting {delay} seconds") time.sleep(delay) print('\nEnd of the program')
Вот и все!
В программу можно добавить красивую заставку, менюшку, colorama, а также обработчики исключений и больше выбора(сохранить, не сохранить, продолжить, сменить аккаунт и тд).
Это уже по Вашему усмотрению.
Ссылка на GitHub:
![]()
GitHub - StripedBear/TeleSpam: Chat member parser and spammer for Telegram
Chat member parser and spammer for Telegram. Contribute to StripedBear/TeleSpam development by creating an account on GitHub.github.com
В статье нет такой реализации. Посмотрите код на гитхабе(ссылка в конце статьи), там простое сохранение в файлпривет бот очень не плох но такой вопрос куда сохраняются данные собранные о пользователи
Обучение наступательной кибербезопасности в игровой форме. Начать игру!