ctx := context.Background()
// 读取 PROXY_AUTH
auth := os.Getenv("PROXY_AUTH")
CafeSDK.Log.Info(fmt.Sprintf("当前获取的浏览器认证信息: %s", auth))
// 拼接代理浏览器 WS 地址
browserURL := "ws://chrome-ws-inner.cafescraper.com"
if auth != "" {
browserURL = fmt.Sprintf("ws://%s@chrome-ws-inner.cafescraper.com", auth)
}
CafeSDK.Log.Info(ctx, "使用代理浏览器地址: %s", browserURL)
// 启动 Playwright
pw, err := playwright.Run()
if err != nil {
CafeSDK.Log.Error(ctx, "Playwright 启动失败: %v", err)
return
}
defer playwright.Stop()
// 连接代理浏览器
browser, err := pw.Chromium.ConnectOverCDP(browserURL)
if err != nil {
CafeSDK.Log.Error(ctx, "连接代理浏览器失败: %v", err)
return
}
defer browser.Close()
// 创建页面
page, err := browser.NewPage()
if err != nil {
CafeSDK.Log.Error(ctx, "创建页面失败: %v", err)
return
}
// 访问 ipinfo 验证出口 IP
resp, err := page.Goto("https://ipinfo.io/ip")
if err != nil {
CafeSDK.Log.Error(ctx, "页面访问失败: %v", err)
return
}
page.WaitForLoadState("networkidle")
content, err := page.TextContent("body")
if err != nil {
CafeSDK.Log.Error(ctx, "获取页面内容失败: %v", err)
return
}
CafeSDK.Log.Info(ctx, "当前代理出口 IP: %s", content)
CafeSDK.Log.Info(ctx, "请求状态码: %d", resp.Status())