Устранение неполадок автоматизированных личных сообщений с помощью пакета Twikit Python — избежание ошибки «Выглядит автPython

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Устранение неполадок автоматизированных личных сообщений с помощью пакета Twikit Python — избежание ошибки «Выглядит авт

Сообщение Anonymous »

👋
Сейчас я работаю над ботом для Твиттера, используя Python и пакет Twikit. Цель состоит в том, чтобы нацелиться на конкретных пользователей и отправить им прямое сообщение (DM) только в том случае, если у них нет предыдущей истории DM.
Вот основная проблема: иногда я получаю следующую ошибку, когда пытаюсь отправить DM:

Код: Выделить всё

Error sending DM to : status: 403, message:  "{"errors":[{"code":226,"message":"This request looks like it might be automated.  To protect our users from spam and other malicious activity, we can't complete  this action right now. Please try again later."}]}"
Я пробовал добавлять различные задержки и даже добавлял случайные символы в конец каждого сообщения, чтобы оно выглядело более «человечным». Однако ошибка по-прежнему возникает достаточно часто, чтобы прервать рабочий процесс бота.
Контекст кода
Ниже приведен основной сегмент кода моего бота (упрощенный для удобства чтения):

Код: Выделить всё

import asyncio
import random
import string

async def main():
# Code to initialize and authenticate client
messages_sent = 0

for user_id in users_target:
print("********************************")
print("Message sent so far:", messages_sent)

# Generate a message with random characters at the end
textmessage = f"{base_message}{random.choice(string.ascii_lowercase)}.{random.choice(string.ascii_uppercase)}"

# Random delay between 10 and 15 seconds
random_delay = random.randint(10, 15)
print(f"Delay before checking DM history: {random_delay} seconds")
await asyncio.sleep(random_delay)

# Check DM history
print("User screen name:", user_id.screen_name, "User ID:", user_id.id)
has_dm = await has_dm_history(client, user_id)
print("Has DM history:", has_dm)

if not has_dm:
try:
# Delay before sending DM
random_delay_before_dm = random.randint(7, 15)
print(f"Delay before sending DM: {random_delay_before_dm} seconds")
await asyncio.sleep(random_delay_before_dm)

# Send the DM
await client.send_dm(user_id.id, textmessage)
messages_sent += 1
print(f"DM sent to user: {user_id}")

# Delay after each message
random_delay_afrmsg = random.randint(35, 40)
print(f"Delay after sending message: {random_delay_afrmsg} seconds")
await asyncio.sleep(random_delay_afrmsg)

# Longer delay after every 12 messages
if messages_sent % 12 == 0:
print("Sent 12 messages, waiting for 10 minutes.")
await countdown_sleep(DELAY_BETWEEN_12_MSGS)

except Exception as e:
print(f"Error sending DM to {user_id}: {e}")
# Delay after error
random_delay_on_error = random.randint(7, 10)
print(f"Delay after error: {random_delay_on_error} seconds")
await asyncio.sleep(random_delay_on_error)

print("********************************")

Постоянная проблема
Несмотря на эти усилия, я все еще получаю ошибку 403 с кодом 226, что позволяет предположить, что механизм защиты от спама Twitter обнаруживает эти запросы как автоматизировано.
Вопросы к сообществу
  • Существуют ли другие эффективные способы обхода этой ошибки?
  • Есть ли у кого-нибудь опыт работы с Twikit и может ли он предложить дополнительные стратегии?
  • Есть ли способ дальнейшей рандомизации процесса DM (возможно, другой подход к рандомизации сообщений)?
Будем очень признательны за любую помощь или понимание. Заранее благодарим за чтение, и я с нетерпением жду ваших предложений!
Стратегии, которые я уже пробовал
  • Случайные задержки: добавление случайных задержек между различными этапами рабочего процесса DM, а также более длительная задержка после каждых 12 сообщений, чтобы избежать проблем с ограничением скорости.
  • Рандомизация сообщений: добавление случайный символ (как в верхнем, так и в нижнем регистре) в конце каждого сообщения, чтобы оно выглядело менее предсказуемым.


Подробнее здесь: https://stackoverflow.com/questions/791 ... -the-looks
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Python»