每次运行时,Cookie、设备指纹和住宅 IP 都会一起回来,因此门户网站在第 40 次运行时看到的,和第 1 次一样是同一位回访用户,而不是一台要求验证的新设备。
脚本登录一次,由一个人在实时会话中输入验证码,配置文件随即保存。
同一台设备,同一个地址,同一个账户。没有登录页面,脚本直接开始工作。
什么都没有变化。始终是一个账户、一台前后一致的设备,门户网站没有任何新情况需要检查。
想了解原理?阅读如何连接配置文件,然后创建您的第一个配置文件。
需要登录的脚本在两次运行之间需要两样东西:持久的登录状态,以及持续运行的浏览器。下面是由谁来负责每一项。
| 您能得到什么 | 自有服务器 | Browserbase | Browserless | |
|---|---|---|---|---|
| 下次运行仍保持登录 | 是 | 需自行搭建 | 是 | 最长 7 天 |
| 下次运行使用同一住宅 IP | 是 | 否 | 未公开 | 未公开 |
| 最长会话时长(首个付费套餐) | 不限 | 不限 | 6 小时 | 15 分钟 |
| 需要安装和更新的 Chrome | 无 | 需自备 | 无 | 无 |
| 可通过链接让人工介入 | 是 | 否 | 是 | 是 |
| 住宅流量 | $1/GB | 另找服务商 | $12/GB | $12/GB |
| 首个付费套餐 | 每月 $4.50 | 服务器费用 | 每月 $20 | 每月 $25,按年付费 |
要采集数据而不是执行操作?请参阅动态网页抓取。
电商平台、广告平台和门户网站会检查每一次登录。Gologin 在每次运行时带回同一台设备、同一个 IP 和同一个登录状态。
在您的 Amazon、eBay 或 Etsy 卖家账户中更新价格、库存和商品信息,步骤与团队手动操作的完全相同。
在只提供网页的供应商、旅行和预订网站上重复下单或预约时段。
从限制 API 使用或对 API 收费的广告账户和分析工具中下载报表。
把订单、发票或记录从您的系统逐个字段复制到供应商或政府门户网站。
为表格的每一行填写并提交同一个多步骤表单,并在每一步之后检查结果。
当一方没有 API 时,在旧的网页工具和您的 CRM 之间迁移记录。
一行代码连接您的脚本。第一次运行时登录;之后每次运行都会检查配置文件是否仍处于登录状态,然后直接开始工作。下面的代码在一个公开的练习网站上运行了两次:第一次运行时登录,第二次运行时已经处于登录状态。
使用 Google 注册,然后从控制面板复制您的密钥。免费,无需信用卡。
在控制面板中点击一下,或调用一次 API。配置文件会保存设备、IP 和登录状态。
用您的令牌和配置文件 ID 运行脚本。第一次运行会登录并输出“Signed in”;第二次打开时已登录,并输出“Already signed in”。更多内容请参阅入门指南。
npm install playwright-coreGOLOGIN_TOKEN=your_token GOLOGIN_PROFILE_ID=your_profile_id node login.mjswss://cloudbrowser.gologin.com/connect?token=…&profile=…import { chromium } from "playwright-core";
const token = process.env.GOLOGIN_TOKEN;
const profileId = process.env.GOLOGIN_PROFILE_ID;
const endpoint = `wss://cloudbrowser.gologin.com/connect?token=${token}&profile=${profileId}`;
const browser = await chromium.connectOverCDP(endpoint);
const page = await browser.contexts()[0].newPage();
await page.goto("http://quotes.toscrape.com/");
const signedIn = await page.locator("a[href='/logout']").isVisible();
if (!signedIn) {
await page.goto("http://quotes.toscrape.com/login");
await page.fill("#username", "demo");
await page.fill("#password", "demo");
await page.click("input[type=submit]");
await page.waitForSelector("a[href='/logout']");
}
const first = await page.locator(".quote .text").first().textContent();
console.log(signedIn ? "Already signed in" : "Signed in", "|", first);
await page.close();
await browser.close();npm install puppeteer-coreGOLOGIN_TOKEN=your_token GOLOGIN_PROFILE_ID=your_profile_id node login.mjswss://cloudbrowser.gologin.com/connect?token=…&profile=…import puppeteer from "puppeteer-core";
const token = process.env.GOLOGIN_TOKEN;
const profileId = process.env.GOLOGIN_PROFILE_ID;
const endpoint = `https://cloudbrowser.gologin.com/connect?token=${token}&profile=${profileId}`;
const browser = await puppeteer.connect({ browserWSEndpoint: endpoint });
const page = await browser.newPage();
await page.goto("http://quotes.toscrape.com/");
const signedIn = (await page.$("a[href='/logout']")) !== null;
if (!signedIn) {
await page.goto("http://quotes.toscrape.com/login");
await page.type("#username", "demo");
await page.type("#password", "demo");
await Promise.all([page.waitForNavigation(), page.click("input[type=submit]")]);
await page.waitForSelector("a[href='/logout']");
}
const first = await page.$eval(".quote .text", (el) => el.textContent);
console.log(signedIn ? "Already signed in" : "Signed in", "|", first);
await page.close();
await browser.disconnect();pip install playwrightGOLOGIN_TOKEN=your_token GOLOGIN_PROFILE_ID=your_profile_id python login.pywss://cloudbrowser.gologin.com/connect?token=…&profile=…import os
from playwright.sync_api import sync_playwright
token = os.environ["GOLOGIN_TOKEN"]
profile_id = os.environ["GOLOGIN_PROFILE_ID"]
endpoint = f"wss://cloudbrowser.gologin.com/connect?token={token}&profile={profile_id}"
with sync_playwright() as p:
browser = p.chromium.connect_over_cdp(endpoint)
page = browser.contexts[0].new_page()
page.goto("http://quotes.toscrape.com/")
signed_in = page.locator("a[href='/logout']").is_visible()
if not signed_in:
page.goto("http://quotes.toscrape.com/login")
page.fill("#username", "demo")
page.fill("#password", "demo")
page.click("input[type=submit]")
page.wait_for_selector("a[href='/logout']")
first = page.locator(".quote .text").first.text_content()
print("Already signed in" if signed_in else "Signed in", "|", first)
page.close()
browser.close()每个套餐运行的都是同一款浏览器,并包含住宅 IP。套餐的区别在于浏览器小时数和并行会话数。
$0
无需信用卡
$4.50/月
适合个人开发者
$8/月
适合成长中的团队
$14/月
适合关键业务
需要同时运行更多?任何套餐都可以加购并行会话,每个每月 $2,按需添加。超出额度的代理流量为 $1/GB。
4 个并行会话起,配备专属客户经理、高级 SLA 和定制化上手指导。
一个账户,一个代理网络,一套生态。按任务需要选择产品。
网页自动化也叫浏览器自动化,是指由软件在网站上完成原本由人来做的点击和输入:登录、填写表单、读取页面、在工具之间迁移数据。开发者用 Playwright、Puppeteer 或 Selenium 等库来编写,并让它在浏览器中按计划运行。
要用代码自动执行浏览器任务,如今 Playwright 是常见的选择,只针对 Chrome 的工作则可以用 Puppeteer。库决定您如何编写步骤;它所驱动的浏览器决定登录状态能否保留。Gologin Cloud Browser 只需改动一行代码,就能运行 Playwright 和 Puppeteer 脚本。
把登录状态保存在配置文件中,而不是文件里。Playwright 的 storage state 会保存 Cookie,但网站一旦发现这些 Cookie 来自新的 IP 或设备,往往会要求您重新验证。Gologin 配置文件会把 Cookie 连同同一台设备和同一个住宅 IP 一起带回来,因此下次运行打开时就已登录。
运行会停在验证码页面等待。打开该会话的 Live View 链接,输入验证码,脚本就会在同一个已登录的配置文件中继续运行。请参阅 Cloud Browser UI。
可以,用您现有的调度工具即可:由 cron、GitHub Actions 或任务队列启动脚本,脚本每次都连接到同一个配置文件。会话的运行时长不设上限;闲置 20 分钟的会话会自动关闭,因此不会有任何东西一直在运行。
是的。浏览器在 Gologin 的云端运行,您的电脑上没有窗口,对您的脚本来说这就是无头模式。要观看某次运行,请打开它的 Live View 链接。请参阅 无头浏览器 API。
不需要。浏览器在 Gologin 的云端运行,您的脚本只需连接它:无需安装、更新或重启 Chrome,也无需为服务器规划内存。
可以。Python Playwright 用 connect_over_cdp 连接,上面的 Python 标签页中有完整脚本。用 pip install playwright 安装即可;无需在本地下载浏览器。