任何人禁止修改我帖子权限!
import httpx
import json
import random
import string
import time
from cf import YesCaptchaSolver
import os
# 用于存储已经使用过的邮箱,避免重复
used_emails = set()
# 尝试从现有文件加载已使用的邮箱
try:
if os.path.exists("assemblyai_accounts.json"):
with open("assemblyai_accounts.json", "r") as f:
accounts = json.load(f)
for account in accounts:
used_emails.add(account["email"])
print(f"已从文件加载 {len(used_emails)} 个已使用的邮箱")
except Exception as e:
print(f"加载已使用邮箱时出错: {e}")
# 初始化验证码解决器
solver = YesCaptchaSolver("")
# 用于生成随机名字的列表
first_names = [
"James",
"John",
"Robert",
"Michael",
"William",
"David",
"Richard",
"Joseph",
"Thomas",
"Charles",
"Mary",
"Patricia",
"Jennifer",
"Linda",
"Elizabeth",
"Barbara",
"Susan",
"Jessica",
"Sarah",
"Karen",
"Emma",
"Olivia",
"Ava",
"Isabella",
"Sophia",
"Charlotte",
"Mia",
"Amelia",
"Harper",
"Evelyn",
]
last_names = [
"Smith",
"Johnson",
"Williams",
"Jones",
"Brown",
"Davis",
"Miller",
"Wilson",
"Moore",
"Taylor",
"Anderson",
"Thomas",
"Jackson",
"White",
"Harris",
"Martin",
"Thompson",
"Garcia",
"Martinez",
"Robinson",
"Clark",
"Rodriguez",
"Lewis",
"Lee",
"Walker",
"Hall",
"Allen",
"Young",
"Hernandez",
"King",
]
# 邮箱域名列表
email_domains = [
"gmail.com",
"outlook.com",
"hotmail.com",
"yahoo.com",
"icloud.com",
"protonmail.com",
]
def generate_random_name():
"""生成随机的名字"""
first_name = random.choice(first_names)
last_name = random.choice(last_names)
return first_name, last_name
def generate_random_email():
"""生成随机的邮箱地址,确保不重复"""
global used_emails
# 最大尝试次数,避免无限循环
max_attempts = 100
attempts = 0
while attempts < max_attempts:
first_name, last_name = generate_random_name()
# 增加更多随机性的用户名生成选项
random_num = random.randint(1, 9999)
random_chars = ''.join(random.choices(string.ascii_lowercase, k=random.randint(1, 3)))
current_year = random.choice(["2023", "2024", "2025"])
username_options = [
f"{first_name.lower()}{last_name.lower()}",
f"{first_name.lower()}.{last_name.lower()}",
f"{first_name.lower()}_{last_name.lower()}",
f"{first_name.lower()}{random_num}",
f"{last_name.lower()}{first_name.lower()}",
f"{first_name.lower()[0]}{last_name.lower()}",
f"{first_name.lower()}{last_name.lower()}{random.randint(1, 99)}",
f"{first_name.lower()}{random.randint(100, 999)}_{random_chars}",
f"{first_name.lower()}.{last_name.lower()}{current_year}",
f"{first_name.lower()[0]}{last_name.lower()}{random.randint(10, 9999)}",
f"{random_chars}{first_name.lower()}{random.randint(1, 99)}",
f"{last_name.lower()}{first_name.lower()[0]}{random.randint(1, 999)}",
]
username = random.choice(username_options)
domain = random.choice(email_domains)
email = f"{username}@{domain}"
# 检查邮箱是否已经使用过
if email not in used_emails:
used_emails.add(email) # 添加到已使用集合
return email
attempts += 1
# 如果尝试多次仍然无法生成唯一邮箱,使用时间戳确保唯一性
timestamp = int(time.time())
email = f"{first_name.lower()}{last_name.lower()}{timestamp}@{random.choice(email_domains)}"
used_emails.add(email)
return email
def generate_random_password(length=12):
"""生成随机密码"""
# 确保密码包含大小写字母、数字和特殊字符
lowercase = string.ascii_lowercase
uppercase = string.ascii_uppercase
digits = string.digits
special = "!@#$%^&*()_+-=[]{}|;:,.<>?"
# 确保至少包含每种字符
password = [
random.choice(lowercase),
random.choice(uppercase),
random.choice(digits),
random.choice(special),
]
# 填充剩余长度
remaining_length = length - len(password)
all_chars = lowercase + uppercase + digits + special
password.extend(random.choice(all_chars) for _ in range(remaining_length))
# 打乱密码顺序
random.shuffle(password)
return "".join(password)
def register_assemblyai_account():
"""注册 AssemblyAI 账号并返回账号信息"""
# 生成随机邮箱和密码
email = generate_random_email()
password = "me15259649051." # 使用固定密码
print(f"生成的邮箱: {email}")
print(f"生成的密码: {password}")
try:
# 解决 reCAPTCHA v3 验证码
print("正在解决 reCAPTCHA v3 验证码...")
recaptcha_result = solver.recaptcha_v3(
sitekey="6Le8MNsqAAAAAIGamHeHFTVdsoUF22Jzdkx6G9Qe",
url="https://www.assemblyai.com/dashboard/signup",
)
recaptcha_token = recaptcha_result["code"]
print(f"reCAPTCHA Token: {recaptcha_token[:30]}...(已截断)")
# 准备注册请求
signup_url = "https://www.assemblyai.com/dashboard/api/auth/signup"
headers = {
"Content-Type": "application/json",
"accept": "application/json",
"origin": "https://www.assemblyai.com",
"referer": "https://www.assemblyai.com/dashboard/signup",
}
data = {
"email": email,
"password": password,
"signupSource": "Google",
"utm": {},
"recaptchaToken": recaptcha_token,
}
# 发送注册请求
print("正在发送注册请求...")
with httpx.Client() as client:
response = client.post(signup_url, json=data, headers=headers)
if response.status_code == 200:
result = response.json()
print("注册成功!")
# 提取需要的信息
account_info = {
"email": email,
"password": password,
"api_token": result.get("api_token"),
"id": result.get("id"),
"created": result.get("created"),
}
# 保存账号信息到文件并更新已使用邮箱集合
save_account_info(account_info)
used_emails.add(email) # 确保添加到已使用集合
return account_info
else:
print(f"注册失败,状态码: {response.status_code}")
print(f"响应内容: {response.text}")
return None
except Exception as e:
print(f"注册过程中出现错误: {e}")
return None
def save_account_info(account_info):
"""保存账号信息到文件"""
# 确保结果文件存在
result_file = "assemblyai_accounts.json"
# 如果文件不存在,创建一个空的 JSON 数组
if not os.path.exists(result_file):
with open(result_file, "w") as f:
json.dump([], f)
# 读取现有数据
with open(result_file, "r") as f:
try:
accounts = json.load(f)
except json.JSONDecodeError:
accounts = []
# 检查是否已存在相同邮箱的账号(额外检查)
for account in accounts:
if account.get("email") == account_info["email"]:
print(f"警告:邮箱 {account_info['email']} 已存在于账号文件中!")
# 这里我们仍然继续保存,因为可能是同一账号的不同信息
# 添加新账号
accounts.append(account_info)
# 写回文件
with open(result_file, "w") as f:
json.dump(accounts, f, indent=2)
print(f"账号信息已保存到 {result_file}")
# 同时保存为简单格式
with open("assemblyai_accounts.txt", "a") as f:
f.write(
f"{account_info['email']}----{account_info['password']}----{account_info['api_token']}"
)
print("账号信息已保存到 assemblyai_accounts.txt")
def main():
"""主函数"""
print("开始注册 AssemblyAI 账号...")
print(f"当前已有 {len(used_emails)} 个已使用的邮箱地址")
# 注册账号数量
num_accounts = 1
try:
num_accounts = int(input("请输入要注册的账号数量: "))
except ValueError:
print("输入无效,默认注册 1 个账号")
successful_registrations = 0
for i in range(num_accounts):
print(f"正在注册第 {i + 1}/{num_accounts} 个账号...")
account_info = register_assemblyai_account()
if account_info:
successful_registrations += 1
print(f"账号 {i + 1} 注册成功!")
print(f"邮箱: {account_info['email']}")
print(f"密码: {account_info['password']}")
print(f"API Token: {account_info['api_token']}")
else:
print(f"账号 {i + 1} 注册失败!")
# 如果不是最后一个账号,等待一段时间再继续
if i < num_accounts - 1:
wait_time = random.randint(3, 8)
print(f"等待 {wait_time} 秒后继续...")
time.sleep(wait_time)
print(f"注册完成!成功注册 {successful_registrations}/{num_accounts} 个账号。")
print(f"总共已使用 {len(used_emails)} 个唯一邮箱地址")
if __name__ == "__main__":
main()