98 lines
2.9 KiB
Python
98 lines
2.9 KiB
Python
|
|
import asyncio
|
|||
|
|
import threading
|
|||
|
|
import time
|
|||
|
|
|
|||
|
|
from loguru import logger
|
|||
|
|
from opentele.api import API
|
|||
|
|
from telethon.errors import SessionPasswordNeededError, PhoneCodeInvalidError, RPCError, PhoneNumberBannedError, \
|
|||
|
|
PasswordHashInvalidError
|
|||
|
|
from telethon import TelegramClient
|
|||
|
|
|
|||
|
|
from models.tg_phone_devices import TgPhoneDevices
|
|||
|
|
|
|||
|
|
|
|||
|
|
async def create_telegram_client(server_type):
|
|||
|
|
"""
|
|||
|
|
创建并配置 Telegram 客户端
|
|||
|
|
"""
|
|||
|
|
|
|||
|
|
# gw.dataimpulse.com:824:14fa7e7aa8280a914611__cr.gb:f1c1501b6b535c19
|
|||
|
|
# 定义代理
|
|||
|
|
PROXY_CONFIG = {
|
|||
|
|
'proxy_type': 'http', # 或 'socks4',具体看你的代理类型
|
|||
|
|
'addr': '192.168.50.220', # 代理服务器地址
|
|||
|
|
'port': 10809, # 代理服务器端口
|
|||
|
|
'username': '', # 如果有用户名,填写
|
|||
|
|
'password': '' # 如果有密码,填写
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
client = TelegramClient(
|
|||
|
|
fr"C:\sessions\{server_type.phone}",
|
|||
|
|
api_id=server_type.api_id,
|
|||
|
|
api_hash=server_type.api_hash,
|
|||
|
|
device_model=server_type.device_model,
|
|||
|
|
system_version=server_type.system_version,
|
|||
|
|
app_version=server_type.app_version,
|
|||
|
|
system_lang_code=server_type.system_lang_code,
|
|||
|
|
lang_code=server_type.lang_code,
|
|||
|
|
proxy=PROXY_CONFIG
|
|||
|
|
)
|
|||
|
|
return client
|
|||
|
|
|
|||
|
|
|
|||
|
|
async def main(tg_info):
|
|||
|
|
# 创建 Telegram 客户端
|
|||
|
|
|
|||
|
|
logger.info(f"账号 {tg_info.phone},开始修改》》》")
|
|||
|
|
|
|||
|
|
client = await create_telegram_client(tg_info)
|
|||
|
|
|
|||
|
|
try:
|
|||
|
|
await client.connect()
|
|||
|
|
|
|||
|
|
if await client.is_user_authorized():
|
|||
|
|
current_password = tg_info.code
|
|||
|
|
new_password = "Qasdasd123.0"
|
|||
|
|
|
|||
|
|
try:
|
|||
|
|
# time.sleep(5)
|
|||
|
|
await client.edit_2fa(current_password=current_password, new_password=new_password)
|
|||
|
|
logger.info(f"账号 {tg_info.phone},修改成功!!!")
|
|||
|
|
|
|||
|
|
tg_info.to_code = new_password
|
|||
|
|
tg_info.save(only=[TgPhoneDevices.to_code])
|
|||
|
|
|
|||
|
|
except PasswordHashInvalidError:
|
|||
|
|
logger.error(f"账号 {tg_info.phone},操作失败,原始2FA不对!!!")
|
|||
|
|
|
|||
|
|
else:
|
|||
|
|
logger.error(f"账号 {tg_info.phone},当前号码已死!!!")
|
|||
|
|
|
|||
|
|
except PhoneNumberBannedError:
|
|||
|
|
logger.error(f"账号 {tg_info.phone},账号以死!!!")
|
|||
|
|
|
|||
|
|
tg_info.is_valid_session = -1
|
|||
|
|
tg_info.save(only=[TgPhoneDevices.is_valid_session])
|
|||
|
|
|
|||
|
|
finally:
|
|||
|
|
await client.disconnect()
|
|||
|
|
|
|||
|
|
|
|||
|
|
def main1(tg_info):
|
|||
|
|
asyncio.run(main(tg_info))
|
|||
|
|
|
|||
|
|
|
|||
|
|
if __name__ == '__main__':
|
|||
|
|
|
|||
|
|
for tg_info in TgPhoneDevices().select().where(
|
|||
|
|
TgPhoneDevices.to_code.is_null(),
|
|||
|
|
TgPhoneDevices.is_valid_session == 1,
|
|||
|
|
# TgPhoneDevices.server_ip.is_null(),
|
|||
|
|
TgPhoneDevices.create_time > '2025-06-06 12:04:19',
|
|||
|
|
# TgPhoneDevices.create_time < '2025-02-28 23:00:00',
|
|||
|
|
):
|
|||
|
|
# asyncio.run(main(tg_info))
|
|||
|
|
|
|||
|
|
threading.Thread(target=main1, args=(tg_info,)).start()
|
|||
|
|
time.sleep(1)
|