问题
reg_distributed.py 中 register_one() 在注册成功后执行:
# reg_distributed.py:138
token_data["proxy"] = token_proxy
但 token_proxy 既不是 register_one() 的参数(见函数签名 reg_distributed.py:119),也不是全局变量——它只在 main() 里定义(reg_distributed.py:195)。调用处(reg_distributed.py:239)也没有把它传进去:
token_data = register_one(
email_provider, reg_proxies, reg_proxy,
retry=args.retry, retry_delay=args.retry_delay,
)
因此只要 register_account() 成功返回,下一行就会抛 NameError: name 'token_proxy' is not defined。该异常被 register_one 内部的 except 捕获,表现为每次注册在最后一步失败并重试,retry 用尽后报 Registration failed after N attempts,最终 0 registered。前面的 OAuth/邮箱/提交流程全部正常,问题只在这一行。
复现
任意一次能走到 register_account 成功返回的注册(即邮箱后端正常、能拿到验证码)都会触发:
[04] Setting password...
Registration attempt 1/3 failed: name 'token_proxy' is not defined, retrying...
...
Registration failed after 3 attempts: name 'token_proxy' is not defined
Done: 0 registered, 1 failed
根因
token_proxy 的作用域只在 main(),却在 register_one() 内被引用。
建议修复
给 register_one() 增加 token_proxy 参数并在调用处传入:
def register_one(email_provider, proxies, proxy, token_proxy="", retry=3, retry_delay=10.0):
...
token_data["proxy"] = token_proxy
return token_data
# 调用处
token_data = register_one(
email_provider, reg_proxies, reg_proxy, token_proxy,
retry=args.retry, retry_delay=args.retry_delay,
)
如需要我可以提 PR。
问题
reg_distributed.py中register_one()在注册成功后执行:但
token_proxy既不是register_one()的参数(见函数签名 reg_distributed.py:119),也不是全局变量——它只在main()里定义(reg_distributed.py:195)。调用处(reg_distributed.py:239)也没有把它传进去:因此只要
register_account()成功返回,下一行就会抛NameError: name 'token_proxy' is not defined。该异常被register_one内部的except捕获,表现为每次注册在最后一步失败并重试,retry 用尽后报Registration failed after N attempts,最终0 registered。前面的 OAuth/邮箱/提交流程全部正常,问题只在这一行。复现
任意一次能走到
register_account成功返回的注册(即邮箱后端正常、能拿到验证码)都会触发:根因
token_proxy的作用域只在main(),却在register_one()内被引用。建议修复
给
register_one()增加token_proxy参数并在调用处传入:如需要我可以提 PR。