feat: add Codex API authentication module with TLS fingerprinting and PoW solving, and introduce team processing API.
This commit is contained in:
@@ -593,7 +593,13 @@ func processSingleTeam(idx int, req TeamProcessRequest) (result TeamProcessResul
|
||||
s2aSem <- struct{}{}
|
||||
defer func() { <-s2aSem }()
|
||||
|
||||
logger.Status(fmt.Sprintf("%s 入库中... | 邮箱: %s", memberLogPrefix, memberEmail), memberEmail, "team")
|
||||
// 解析代理
|
||||
proxyToUse := database.Instance.ResolveProxy(req.Proxy)
|
||||
proxyDisplay := "无代理"
|
||||
if proxyToUse != "" {
|
||||
proxyDisplay = getProxyDisplay(proxyToUse)
|
||||
}
|
||||
logger.Status(fmt.Sprintf("%s 入库中... | 邮箱: %s | 代理: %s", memberLogPrefix, memberEmail, proxyDisplay), memberEmail, "team")
|
||||
|
||||
var s2aSuccess bool
|
||||
var lastError string
|
||||
@@ -633,12 +639,8 @@ func processSingleTeam(idx int, req TeamProcessRequest) (result TeamProcessResul
|
||||
// 根据配置选择授权方式
|
||||
var code string
|
||||
if config.Global.AuthMethod == "api" {
|
||||
proxyToUse := database.Instance.ResolveProxy(req.Proxy)
|
||||
if proxyToUse != req.Proxy && proxyToUse != "" {
|
||||
logger.Info(fmt.Sprintf("%s 使用解析代理: %s", memberLogPrefix, getProxyDisplay(proxyToUse)), memberEmail, "team")
|
||||
}
|
||||
code, err = auth.CompleteWithCodexAPI(memberEmail, memberPassword, teamID, s2aResp.Data.AuthURL, s2aResp.Data.SessionID, proxyToUse, authLogger)
|
||||
if proxyToUse != req.Proxy && proxyToUse != "" {
|
||||
if proxyToUse != "" {
|
||||
database.Instance.UpdateCodexProxyStats(proxyToUse, err == nil)
|
||||
}
|
||||
} else {
|
||||
|
||||
@@ -622,7 +622,11 @@ func min(a, b int) int {
|
||||
// authURL 和 sessionID 由 S2A 生成
|
||||
func CompleteWithCodexAPI(email, password, workspaceID, authURL, sessionID, proxy string, logger *AuthLogger) (string, error) {
|
||||
if logger != nil {
|
||||
logger.LogStep(StepBrowserStart, "使用 CodexAuth API 模式...")
|
||||
if proxy != "" {
|
||||
logger.LogStep(StepBrowserStart, "使用 CodexAuth API 模式 (代理: %s)", proxy)
|
||||
} else {
|
||||
logger.LogStep(StepBrowserStart, "使用 CodexAuth API 模式 (无代理)")
|
||||
}
|
||||
}
|
||||
|
||||
auth, err := NewCodexAPIAuth(email, password, workspaceID, authURL, sessionID, proxy, logger)
|
||||
|
||||
Reference in New Issue
Block a user