feat: Implement S2A OAuth authorization using chromedp and introduce new files for browser automation and team processing.
This commit is contained in:
@@ -902,23 +902,53 @@ func processSingleTeam(idx int, req TeamProcessRequest) (result TeamProcessResul
|
||||
return result
|
||||
}
|
||||
|
||||
// registerWithTimeout 带超时的注册
|
||||
// registerWithTimeout 带超时的注册(遇到 403 会换指纹重试)
|
||||
func registerWithTimeout(email, password, name, birthdate, proxy string) (*register.ChatGPTReg, error) {
|
||||
reg, err := register.New(proxy)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
const maxInitRetries = 3
|
||||
var reg *register.ChatGPTReg
|
||||
var initErr error
|
||||
|
||||
// 初始化阶段:遇到 403 换指纹重试
|
||||
for attempt := 0; attempt < maxInitRetries; attempt++ {
|
||||
var err error
|
||||
reg, err = register.New(proxy)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
if err := reg.InitSession(); err != nil {
|
||||
initErr = err
|
||||
// 检查是否是 403 错误,换指纹重试
|
||||
if strings.Contains(err.Error(), "403") {
|
||||
continue
|
||||
}
|
||||
return nil, fmt.Errorf("初始化失败: %v", err)
|
||||
}
|
||||
|
||||
if err := reg.GetAuthorizeURL(email); err != nil {
|
||||
// 403 也可能在这里出现
|
||||
if strings.Contains(err.Error(), "403") {
|
||||
initErr = err
|
||||
continue
|
||||
}
|
||||
return nil, fmt.Errorf("获取授权URL失败: %v", err)
|
||||
}
|
||||
|
||||
if err := reg.StartAuthorize(); err != nil {
|
||||
if strings.Contains(err.Error(), "403") {
|
||||
initErr = err
|
||||
continue
|
||||
}
|
||||
return nil, fmt.Errorf("启动授权失败: %v", err)
|
||||
}
|
||||
|
||||
// 初始化成功,跳出重试循环
|
||||
initErr = nil
|
||||
break
|
||||
}
|
||||
|
||||
if err := reg.InitSession(); err != nil {
|
||||
return nil, fmt.Errorf("初始化失败: %v", err)
|
||||
}
|
||||
|
||||
if err := reg.GetAuthorizeURL(email); err != nil {
|
||||
return nil, fmt.Errorf("获取授权URL失败: %v", err)
|
||||
}
|
||||
|
||||
if err := reg.StartAuthorize(); err != nil {
|
||||
return nil, fmt.Errorf("启动授权失败: %v", err)
|
||||
if initErr != nil {
|
||||
return nil, fmt.Errorf("初始化失败(重试%d次): %v", maxInitRetries, initErr)
|
||||
}
|
||||
|
||||
if err := reg.Register(email, password); err != nil {
|
||||
|
||||
Reference in New Issue
Block a user