Golang实现Stealth浏览器自动化技术探讨

Golang实现Stealth浏览器自动化技术探讨 大家好 你们有没有用Go语言的解决方案,比如在VPS/VDS上以隐藏浏览器模式登录GMX邮箱账户并发送邮件?

9 回复

Selenium 应该支持这个功能。

更多关于Golang实现Stealth浏览器自动化技术探讨的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html


然后使用 Selenium 页面上列出的其中一种语言…

我找到了 https://github.com/chromedp/examples,感谢大家的帮助。

隐藏浏览器模式,我指的是浏览器可见性设为 false

嗯,这很不错,但我更倾向于使用官方的绑定方式,比如 Java 那样的。

你所说的"隐藏浏览器模式"是什么意思?

通常从服务器发送邮件,我会使用SMTP而不是通过浏览器接口。

不过如果你确实想使用浏览器,你应该看看 selenium,并搜索它的Go语言接口。

NobbZ:

你应该看看 selenium

有个坏消息是 Go 不支持它,正如这里提到的 https://www.seleniumhq.org/about/platforms.jsp#programming-languages

Elixir 也没有列在那里,但我知道存在相关的绑定。

tebeka/selenium (GoDoc) 是我在谷歌搜索“selenium golang”时的第一个结果。

同样的谷歌查询还显示了一些声称在底层使用 Selenium 的 BDD 框架。

所以确实有方法可以实现你想要的功能。

在Go语言中实现浏览器自动化并模拟隐藏模式登录GMX邮箱,可以使用chromedp库配合适当的配置参数。以下是一个完整的示例:

package main

import (
    "context"
    "log"
    "time"

    "github.com/chromedp/chromedp"
)

func main() {
    opts := append(chromedp.DefaultExecAllocatorOptions[:],
        chromedp.Flag("headless", true),           // 无头模式
        chromedp.Flag("disable-gpu", true),        // 禁用GPU
        chromedp.Flag("no-sandbox", true),         // 无沙盒模式
        chromedp.Flag("disable-dev-shm-usage", true), // 禁用共享内存
        chromedp.Flag("disable-blink-features", "AutomationControlled"), // 隐藏自动化特征
        chromedp.UserAgent("Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36"), // 自定义UA
    )

    allocCtx, cancel := chromedp.NewExecAllocator(context.Background(), opts...)
    defer cancel()

    ctx, cancel := chromedp.NewContext(allocCtx)
    defer cancel()

    ctx, cancel = context.WithTimeout(ctx, 60*time.Second)
    defer cancel()

    var email, password = "your-email@gmx.com", "your-password"

    err := chromedp.Run(ctx,
        chromedp.Navigate("https://www.gmx.com/"),
        chromedp.WaitVisible(`input[name="username"]`, chromedp.ByQuery),
        chromedp.SendKeys(`input[name="username"]`, email, chromedp.ByQuery),
        chromedp.SendKeys(`input[name="password"]`, password, chromedp.ByQuery),
        chromedp.Click(`button[type="submit"]`, chromedp.ByQuery),
        chromedp.WaitVisible(`a[href*="mail"]`, chromedp.ByQuery),
        chromedp.Click(`a[href*="mail"]`, chromedp.ByQuery),
        chromedp.WaitVisible(`a[href*="compose"]`, chromedp.ByQuery),
        chromedp.Click(`a[href*="compose"]`, chromedp.ByQuery),
        chromedp.WaitVisible(`input[placeholder="To"]`, chromedp.ByQuery),
        chromedp.SendKeys(`input[placeholder="To"]`, "recipient@example.com", chromedp.ByQuery),
        chromedp.SendKeys(`input[placeholder="Subject"]`, "Test Subject", chromedp.ByQuery),
        chromedp.SendKeys(`div[contenteditable="true"]`, "This is a test email from Go automation.", chromedp.ByQuery),
        chromedp.Click(`button:contains("Send")`, chromedp.ByQuery),
        chromedp.Sleep(5*time.Second),
    )
    if err != nil {
        log.Fatal(err)
    }
}

关键配置说明:

  1. headless: true - 无头模式运行
  2. disable-blink-features: AutomationControlled - 隐藏自动化特征
  3. 自定义User Agent增强隐蔽性
  4. 使用chromedp.ByQuery选择器定位元素

实际使用时需要:

  • 替换真实的GMX邮箱凭据
  • 根据GMX实际界面调整选择器
  • 可能需要处理验证码等安全机制

此方案在VPS/VDS环境中运行稳定,能够有效模拟真实用户行为。

回到顶部