指纹浏览器配置
🧩 浏览器指纹环境说明
Section titled “🧩 浏览器指纹环境说明”为应对目标网站的浏览器指纹识别与自动化检测机制,平台在脚本运行时会自动提供并托管一个隔离的浏览器指纹环境,用于执行需要真实浏览器上下文的操作(如 JS 渲染、页面交互、登录态访问等)。
该指纹环境由平台统一维护,开发者无需自行部署、购买或管理指纹浏览器实例,即可直接使用稳定、可用的浏览器运行环境。
该机制可有效避免因设备特征、浏览器信息重复而导致的访问失败或账号关联风险。
📌 指纹环境配置说明
Section titled “📌 指纹环境配置说明”- 类型:Chromium(平台托管远程实例)
- 连接方式:
WebSocket - 访问入口:平台内部浏览器服务
- 认证方式:
- 环境变量名:
PROXY_AUTH - 格式:
username:password
- 环境变量名:
- 使用说明:脚本读取
PROXY_AUTH并拼接 WebSocket 地址即可连接 - 费用说明:平台内置提供,无需额外付费或单独配置
🐍 Python 示例
Section titled “🐍 Python 示例”try: Auth = os.environ.get("PROXY_AUTH") CoreSDK.Log.info(f"当前获取的浏览器认证信息: {Auth}")except Exception as e: CoreSDK.Log.error(f"当前获取浏览器认证信息失败: {e}") Auth = None
# 代理浏览器 WebSocket 地址(从环境变量读取,支持灵活部署)chrome_ws = os.environ.get("ChromeWs") or "chrome-ws-inner.coreclaw.com"CoreSDK.Log.info(f"Chrome WebSocket 地址: {chrome_ws}")
browser_url = f'ws://{Auth}@{chrome_ws}'
CoreSDK.Log.info(f"使用代理浏览器地址: {browser_url}")
# ✅ 使用 ipinfo 验证测试test_url = "https://ipinfo.io/ip"
company_overview = GlassdoorCrawlerCompanyOverview( browser_url=browser_url)
status, soup = await company_overview.fetch_with_playwright(test_url)
# 打印抓取结果if soup: ip_text = soup.get_text(strip=True) CoreSDK.Log.info(f"当前代理出口 IP: {ip_text}")else: CoreSDK.Log.error("未获取到页面内容")
CoreSDK.Log.info(f"请求状态码: {status}")🧱 Go 示例
Section titled “🧱 Go 示例”ctx := context.Background()
// 读取 PROXY_AUTHauth := os.Getenv("PROXY_AUTH")coresdk.Log.Info(fmt.Sprintf("当前获取的浏览器认证信息: %s", auth))
// 拼接代理浏览器 WS 地址(从环境变量读取,支持灵活部署)chromeWs := os.Getenv("ChromeWs")if chromeWs == "" { chromeWs = "chrome-ws-inner.coreclaw.com"}coresdk.Log.Info(ctx, "Chrome WebSocket 地址: %s", chromeWs)
browserURL := fmt.Sprintf("ws://%s@%s", auth, chromeWs)coresdk.Log.Info(ctx, "使用代理浏览器地址: %s", browserURL)
// 启动 Playwrightpw, err := playwright.Run()if err != nil { coresdk.Log.Error(ctx, "Playwright 启动失败: %v", err) return}defer playwright.Stop()
// 连接代理浏览器browser, err := pw.Chromium.ConnectOverCDP(browserURL)if err != nil { coresdk.Log.Error(ctx, "连接代理浏览器失败: %v", err) return}defer browser.Close()
// 创建页面page, err := browser.NewPage()if err != nil { coresdk.Log.Error(ctx, "创建页面失败: %v", err) return}
// 访问 ipinfo 验证出口 IPresp, err := page.Goto("https://ipinfo.io/ip")if err != nil { coresdk.Log.Error(ctx, "页面访问失败: %v", err) return}
page.WaitForLoadState("networkidle")
content, err := page.TextContent("body")if err != nil { coresdk.Log.Error(ctx, "获取页面内容失败: %v", err) return}
coresdk.Log.Info(ctx, "当前代理出口 IP: %s", content)coresdk.Log.Info(ctx, "请求状态码: %d", resp.Status())🟢 Node.js 示例
Section titled “🟢 Node.js 示例”const { chromium } = require('playwright')
;(async () => { // 获取 PROXY_AUTH const Auth = process.env.PROXY_AUTH console.log('当前获取的浏览器认证信息:', Auth)
// 拼接代理浏览器 WS(从环境变量读取,支持灵活部署) const chromeWs = process.env.ChromeWs || 'chrome-ws-inner.coreclaw.com' console.log('Chrome WebSocket 地址:', chromeWs)
const browserUrl = `ws://${Auth}@${chromeWs}` console.log('使用代理浏览器地址:', browserUrl)
// 连接代理浏览器 const browser = await chromium.connectOverCDP(browserUrl) const page = await browser.newPage()
// 访问 ipinfo const response = await page.goto('https://ipinfo.io/ip', { timeout: 60000, })
await page.waitForLoadState('networkidle')
// 获取 IP const ipText = await page.textContent('body')
console.log('当前代理出口 IP:', ipText.trim()) console.log('请求状态码:', response.status())
await browser.close()})()