修改推特账号注册方法

This commit is contained in:
zyj
2025-09-30 18:10:49 +08:00
parent dbf8b5bcca
commit 9cefdb1804
3 changed files with 52 additions and 11 deletions

View File

@@ -232,6 +232,7 @@ func (bit *BitBrowserService) Register() *libs.ErrorInfo {
if browserId == "" { if browserId == "" {
return libs.ErrorCode["BrowserCreationFailed"] return libs.ErrorCode["BrowserCreationFailed"]
} }
time.Sleep(10 * time.Second)
ws := bit.OpenBrowser(browserId) ws := bit.OpenBrowser(browserId)
if ws == "" { if ws == "" {
return libs.ErrorCode["BrowserCreationFailed"] return libs.ErrorCode["BrowserCreationFailed"]
@@ -243,15 +244,33 @@ func (bit *BitBrowserService) Register() *libs.ErrorInfo {
log.Println("当前邮箱信息", emailInfo) log.Println("当前邮箱信息", emailInfo)
obj := Browser.GetBitBrowser(ws) obj := Browser.GetBitBrowser(ws)
page := obj.Page page := obj.Page
err := rod.Try(func() {
page.MustNavigate("https://x.com/i/flow/signup").MustWaitLoad() 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 := 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() 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"]`) // _, err := page.Element(`input[name="email"]`)
// if err != nil { // 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, 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() 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"]`) inputEmail := page.Timeout(5 * time.Second).MustElement(`input[name="email"]`)
@@ -302,6 +321,15 @@ func (bit *BitBrowserService) Register() *libs.ErrorInfo {
if err1 != nil { if err1 != nil {
// res := getApiResponse(page, "") // 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 对接获取邮箱信息接口 //TODO 对接获取邮箱信息接口
time.Sleep(10 * time.Second) time.Sleep(10 * time.Second)
codeValue := LoopGetEmailCode("pop.dragonsmail.com:993", emailInfo.Email, emailInfo.Password) 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") cookieArr := GetPageCookie(page, "https://x.com")
// 创建用户 // 创建用户
twitterAccountService := InitTwitterAccountService() twitterAccountService := InitTwitterAccountService()
twitterAccountService.Create(&models.TwitterAccount{ accountId := twitterAccountService.Create(&models.TwitterAccount{
Name: nameStr, Name: nameStr,
Email: emailInfo.Email, Email: emailInfo.Email,
Password: emailInfo.Password, Password: emailInfo.Password,
@@ -395,7 +423,11 @@ func (bit *BitBrowserService) Register() *libs.ErrorInfo {
if errOCF == nil { if errOCF == nil {
OCF_CallToAction_Button.MustClick() 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) // bit.DeleteBrowser(browserId)
return libs.ErrorCode["RegisterSuccessful"] return libs.ErrorCode["RegisterSuccessful"]

View File

@@ -19,7 +19,7 @@ func InitEmailService() *EmailService {
func (e *EmailService) GetEmailOne() *models.Email { func (e *EmailService) GetEmailOne() *models.Email {
var email 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 { if err != nil {
return nil return nil
} }

View File

@@ -17,10 +17,14 @@ func InitTwitterAccountService() *TwitterAccountService {
return &TwitterAccountService{db: db} 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.CreateTime = time.Now().Unix()
params.UpdateTime = 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 { 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) u.db.Model(&models.TwitterAccount{}).Where("status = ?", params.Status).Update("status", nil)
return true 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)
}