diff --git a/services/bit_browser_service.go b/services/bit_browser_service.go index e4741c4..ceeb4e6 100644 --- a/services/bit_browser_service.go +++ b/services/bit_browser_service.go @@ -232,6 +232,7 @@ func (bit *BitBrowserService) Register() *libs.ErrorInfo { if browserId == "" { return libs.ErrorCode["BrowserCreationFailed"] } + time.Sleep(10 * time.Second) ws := bit.OpenBrowser(browserId) if ws == "" { return libs.ErrorCode["BrowserCreationFailed"] @@ -243,15 +244,33 @@ func (bit *BitBrowserService) Register() *libs.ErrorInfo { log.Println("当前邮箱信息", emailInfo) obj := Browser.GetBitBrowser(ws) page := obj.Page - page.MustNavigate("https://x.com/i/flow/signup").MustWaitLoad() - // 点击创建账号 - createAccount := page.Timeout(5 * time.Second).MustElement(`button.css-175oi2r.r-sdzlij.r-1phboty.r-rs99b7.r-lrvibr.r-ywje51.r-184id4b.r-13qz1uu.r-2yi16.r-1qi8awa.r-3pj75a.r-1loqt21.r-o7ynqc.r-6416eg.r-1ny4l3l`) - createAccount.MustClick() + err := rod.Try(func() { + page.MustNavigate("https://x.com/i/flow/signup").MustWaitLoad() + // 点击创建账号 + createAccount := page.Timeout(5 * time.Second).MustElement(`button.css-175oi2r.r-sdzlij.r-1phboty.r-rs99b7.r-lrvibr.r-ywje51.r-184id4b.r-13qz1uu.r-2yi16.r-1qi8awa.r-3pj75a.r-1loqt21.r-o7ynqc.r-6416eg.r-1ny4l3l`) + createAccount.MustClick() + }) + if err != nil { + page.MustReload() + time.Sleep(10 * time.Second) + // 点击创建账号 + createAccount := page.Timeout(5 * time.Second).MustElement(`button.css-175oi2r.r-sdzlij.r-1phboty.r-rs99b7.r-lrvibr.r-ywje51.r-184id4b.r-13qz1uu.r-2yi16.r-1qi8awa.r-3pj75a.r-1loqt21.r-o7ynqc.r-6416eg.r-1ny4l3l`) + createAccount.MustClick() + } + time.Sleep(5 * time.Second) // 判断当前是否是邮箱注册 // _, err := page.Element(`input[name="email"]`) // if err != nil { - switchButton := page.Timeout(5 * time.Second).MustElement(`button.css-146c3p1.r-bcqeeo.r-qvutc0.r-37j5jr.r-1ff274t.r-a023e6.r-rjixqe.r-16dba41`) - switchButton.MustClick() + switchButton, switchButtonErr := page.Timeout(5 * time.Second).Element(`button.css-146c3p1.r-bcqeeo.r-qvutc0.r-37j5jr.r-1ff274t.r-a023e6.r-rjixqe.r-16dba41`) + if switchButtonErr == nil { + switchButton.MustClick() + } + + emailButtonQ, switchButtonErr := page.Timeout(5 * time.Second).Element(`button.css-146c3p1.r-bcqeeo.r-qvutc0.r-1tl8opc.r-1ff274t.r-a023e6.r-rjixqe.r-16dba41`) + if switchButtonErr == nil { + emailButtonQ.MustClick() + } + // } // 获取邮箱输入框 inputEmail := page.Timeout(5 * time.Second).MustElement(`input[name="email"]`) @@ -302,6 +321,15 @@ func (bit *BitBrowserService) Register() *libs.ErrorInfo { if err1 != nil { // res := getApiResponse(page, "") } + var codeInputVer *rod.Element = nil + // 循环获取 验证码输入框 + for codeInputVer == nil { + t, err1 := page.Timeout(5 * time.Second).Element(`input[name="verfication_code"]`) + if err1 == nil { + codeInputVer = t + } + time.Sleep(5 * time.Second) + } //TODO 对接获取邮箱信息接口 time.Sleep(10 * time.Second) codeValue := LoopGetEmailCode("pop.dragonsmail.com:993", emailInfo.Email, emailInfo.Password) @@ -340,7 +368,7 @@ func (bit *BitBrowserService) Register() *libs.ErrorInfo { cookieArr := GetPageCookie(page, "https://x.com") // 创建用户 twitterAccountService := InitTwitterAccountService() - twitterAccountService.Create(&models.TwitterAccount{ + accountId := twitterAccountService.Create(&models.TwitterAccount{ Name: nameStr, Email: emailInfo.Email, Password: emailInfo.Password, @@ -395,7 +423,11 @@ func (bit *BitBrowserService) Register() *libs.ErrorInfo { if errOCF == nil { OCF_CallToAction_Button.MustClick() } - + if accountId != 0 { + twitterAccountService.Update(accountId, &models.TwitterAccount{Fa2: fa2CodeText}) + } + time.Sleep(2 * time.Second) + page.MustNavigate("https://x.com/home").MustWaitLoad() // 删除浏览器 // bit.DeleteBrowser(browserId) return libs.ErrorCode["RegisterSuccessful"] diff --git a/services/email_service.go b/services/email_service.go index 65f0afb..f4cac3e 100644 --- a/services/email_service.go +++ b/services/email_service.go @@ -19,7 +19,7 @@ func InitEmailService() *EmailService { func (e *EmailService) GetEmailOne() *models.Email { var email models.Email - err := e.db.Model(email).Where("use_status = ? and status=?", 0, 1).First(&email).Error + err := e.db.Model(email).Where("use_status = ? and status=?", 0, 1).Order("RAND()").Limit(1).Find(&email).Error if err != nil { return nil } diff --git a/services/twitter_account_service.go b/services/twitter_account_service.go index 56cd733..02a9cb0 100644 --- a/services/twitter_account_service.go +++ b/services/twitter_account_service.go @@ -17,10 +17,14 @@ func InitTwitterAccountService() *TwitterAccountService { return &TwitterAccountService{db: db} } -func (t *TwitterAccountService) Create(params *models.TwitterAccount) { +func (t *TwitterAccountService) Create(params *models.TwitterAccount) int64 { params.CreateTime = time.Now().Unix() params.UpdateTime = time.Now().Unix() - t.db.Create(params) + result := t.db.Create(params) + if result.Error != nil { + return 0 + } + return params.ID } func (t *TwitterAccountService) GetInfo(id int64) *models.TwitterAccount { @@ -81,3 +85,8 @@ func (u *TwitterAccountService) ClearAccountStatus(params *models.TwitterAccount u.db.Model(&models.TwitterAccount{}).Where("status = ?", params.Status).Update("status", nil) return true } + +func (u *TwitterAccountService) Update(id int64, params *models.TwitterAccount) { + params.UpdateTime = time.Now().Unix() + u.db.Model(&models.TwitterAccount{}).Where("id = ?", id).Updates(params) +}