Gologin固有の部分は接続行だけで、残りは通常のPlaywrightまたはPuppeteerです。以下のタブはすべて、記載どおりにGologin Cloud Browser上で実行済みです。
Googleでサインアップし、ダッシュボードからキーをコピーします。無料、カード不要です。
ダッシュボードでワンクリック、またはAPI呼び出し1回で作成できます。プロファイルにはデバイス、IP、ログイン情報が保存されます。
ライブラリをインストールし、トークンとプロファイルIDを指定して下のスクリプトを実行します。自分のスクリプトを移行する場合は、launch()の呼び出しを接続行に置き換えてください。詳しくはスタートガイドをご覧ください。
npm install playwright-coreGOLOGIN_TOKEN=your_token GOLOGIN_PROFILE_ID=your_profile_id node scrape.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/scroll");
await page.waitForSelector(".quote");
for (let i = 0; i < 30; i++) {
const before = await page.locator(".quote").count();
await page.evaluate(() => window.scrollTo(0, document.body.scrollHeight));
try {
await page.waitForFunction(
(n) => document.querySelectorAll(".quote").length > n,
before,
{ timeout: 3000 }
);
} catch {
break;
}
}
const quotes = await page.$$eval(".quote", (els) =>
els.map((el) => ({
text: el.querySelector(".text")?.textContent,
author: el.querySelector(".author")?.textContent,
}))
);
console.log(quotes.length, quotes[0]);
await page.close();
await browser.close();npm install puppeteer-coreGOLOGIN_TOKEN=your_token GOLOGIN_PROFILE_ID=your_profile_id node scrape.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 = `wss://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/scroll");
await page.waitForSelector(".quote");
for (let i = 0; i < 30; i++) {
const before = await page.$$eval(".quote", (els) => els.length);
await page.evaluate(() => window.scrollTo(0, document.body.scrollHeight));
try {
await page.waitForFunction(
(n) => document.querySelectorAll(".quote").length > n,
{ timeout: 3000 },
before
);
} catch {
break;
}
}
const quotes = await page.$$eval(".quote", (els) =>
els.map((el) => ({
text: el.querySelector(".text")?.textContent,
author: el.querySelector(".author")?.textContent,
}))
);
console.log(quotes.length, quotes[0]);
await page.close();
await browser.disconnect();pip install playwrightGOLOGIN_TOKEN=your_token GOLOGIN_PROFILE_ID=your_profile_id python scrape.pywss://cloudbrowser.gologin.com/connect?token=…&profile=…import os
from playwright.sync_api import sync_playwright, TimeoutError as PlaywrightTimeoutError
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/scroll")
page.wait_for_selector(".quote")
for _ in range(30):
before = page.locator(".quote").count()
page.evaluate("window.scrollTo(0, document.body.scrollHeight)")
try:
page.wait_for_function(
"n => document.querySelectorAll('.quote').length > n",
arg=before,
timeout=3000,
)
except PlaywrightTimeoutError:
break
quotes = page.eval_on_selector_all(
".quote",
"els => els.map(el => ({text: el.querySelector('.text')?.textContent, author: el.querySelector('.author')?.textContent}))",
)
print(len(quotes), quotes[0])
page.close()
browser.close()npm install playwrightGOLOGIN_TOKEN=your_token GOLOGIN_PROFILE_ID=your_profile_id npx playwright testwss://cloudbrowser.gologin.com/connect?token=…&profile=…import { chromium, expect, test as base } from "playwright/test";
const endpoint = `wss://cloudbrowser.gologin.com/connect?token=${process.env.GOLOGIN_TOKEN}&profile=${process.env.GOLOGIN_PROFILE_ID}`;
const test = base.extend({
browser: [
async ({}, use) => {
const browser = await chromium.connectOverCDP(endpoint);
await use(browser);
await browser.close();
},
{ scope: "worker" },
],
});
test("quotes load in Gologin Cloud Browser", async ({ page }) => {
await page.goto("http://quotes.toscrape.com/");
await expect(page.locator(".quote").first()).toBeVisible();
});
test("the next page loads too", async ({ page }) => {
await page.goto("http://quotes.toscrape.com/page/2/");
await expect(page.locator(".quote")).toHaveCount(10);
});チームが使い慣れたライブラリを選んでください。クラウドブラウザも接続先アドレスも、どちらでも同じです。
Microsoft製で、Node.js、Python、Java、.NETに対応。要素を自動で待機し、独自のテストランナーも備えています。Gologinでは、playwright-coreをインストールし、chromium.connectOverCDPで接続します。
Chromeチーム製で、Node.js向け。Chrome DevTools Protocolを直接扱う、より小さなライブラリです。Gologinでは、puppeteer-coreをインストールし、puppeteer.connectで接続します。
スクリプトが今どこで動いていても、移行は接続行だけ。ほかに不要になるものは次のとおりです。
ブラウザイメージは不要です。ブラウザなしでライブラリをインストールし、接続します。
パッケージにChromiumレイヤーは不要です。関数はWebSocketを1つ開くだけです。
Playwright Testタブのようにフィクスチャを1つ追加するだけ。テストはそのままです。
アドレスをGologinの接続行に差し替えます。プロキシはAPI呼び出し1回で追加できます。
どのプランでも同じブラウザが動き、レジデンシャルIPが含まれます。プランの違いは、ブラウザ時間と並列セッション数です。
$0
カード不要
$4.50/月
個人開発者向け
$8/月
成長中のチーム向け
$14/月
重要な業務向け
同時にもっと必要ですか?並列セッションは、どのプランにも1つにつき月$2で必要なだけ追加できます。付与量を超えたプロキシトラフィックは$1/GBです。
4並列セッションから。専任のアカウントマネージャー、プレミアムSLA、個別のオンボーディング付き。
1つのアカウント、1つのプロキシネットワーク、1つのエコシステム。用途に合った製品をお選びください。
どちらも同じ接続行でGologin Cloud Browser上で動くので、チームが使い慣れた方を選んでください。Playwrightは対応言語が多く、独自のテストランナーがあります。PuppeteerはChromeチームによる、より小さなNode.jsライブラリです。ローカルではPlaywrightはFirefoxやWebKitも操作できますが、クラウドではどちらも同じChromiumベースのブラウザを操作します。
Playwrightはchromium.connectOverCDP、Python版Playwrightはconnect_over_cdp、PuppeteerはbrowserWSEndpointを指定したpuppeteer.connectを使います。3つとも、トークンとプロファイルIDを付けてwss://cloudbrowser.gologin.com/connectを指定します。スクリプトの残りはそのままです。スクロールに合わせて読み込まれるページからデータを収集しますか?動的スクレイピングをご覧ください。
いいえ。ブラウザを含まないplaywright-coreまたはpuppeteer-coreをインストールし、クラウドに接続します。固定すべきChromeのバージョンも、再ビルドするDockerイメージも、サーバー上のブラウザ依存関係もありません。ヘッドレスブラウザAPIをご覧ください。
はい。ログイン情報はプロファイルに保存されます。上のスクリプトのように、同じプロファイルIDで接続し、プロファイル自身のウィンドウ(Playwrightではbrowser.contexts()[0])でページを開けば、次の実行は同じレジデンシャルIPからログイン済みで始まります。browser.newPage()で開いたページは、そのログインのない新しいウィンドウで開きます。2FAの手順を手動で完了する必要がありますか?Cloud Browser UIをご覧ください。
はい。上のPlaywright TestタブのようにconnectOverCDPでブラウザに接続するフィクスチャを追加すれば、すべてのテストがGologin Cloud Browserで実行されます。テストとアサーションはそのままで、npx playwright testでこれまでどおり実行できます。
無料プランとProfessionalは1つ、Businessは2つ、Enterpriseは3つ、Customは4つからです。どのプランでも、1つにつき月$2で追加できます。並列セッション1つが、接続されたブラウザ1つです。