ブラウザの永続化は、Wuying AgentBay ソフトウェア開発キット (SDK) のコア機能です。これにより、cookie、キャッシュ、ローカルストレージ、その他のブラウザデータを含む永続的なブラウザの状態を複数のセッションにわたって維持できます。これにより、アンチボット検出による干渉が大幅に削減され、ページの読み込み時間が短縮されます。
概要
ブラウザの永続化は、以下を含むブラウザの状態を保存する永続的なブラウザ環境を作成します。
Cookie
キャッシュ
ローカルストレージ
セッションストレージ
ブラウザのプリファレンス
インストールされた拡張機能 (拡張機能管理と併用する場合)
利点
アンチボット検出の干渉を削減: ブラウザの状態を維持することで、ウェブサイトはセッションを新規訪問者ではなく、再訪問ユーザーからのものとして扱います。
ページの読み込み時間の短縮: キャッシュされたリソースと cookie により、ページの読み込み時間が短縮されます。
セッションの継続性: 複数のセッションにわたって以前の操作を継続できます。
一貫したユーザーエクスペリエンス: ユーザーのプリファレンスと設定はセッションをまたいで維持されます。
Python の例
基本的な使用方法
from agentbay import AgentBay
from agentbay.session_params import CreateSessionParams, BrowserContext
# AgentBay クライアントを初期化します
agent_bay = AgentBay(api_key="your_api_key")
# 永続化コンテキストを作成または取得します
context_result = agent_bay.context.get("my-browser-context", create=True)
context = context_result.context
# 永続化を使用してブラウザセッションを作成します
browser_context = BrowserContext(
context_id=context.id,
auto_upload=True
)
session_params = CreateSessionParams(
image_id="browser-image-id",
browser_context=browser_context
)
session_result = agent_bay.create(session_params)
session = session_result.session
Cookie の永続化
import time
from agentbay import AgentBay
from agentbay.session_params import CreateSessionParams, BrowserContext
from agentbay.browser.browser import BrowserOption
from playwright.sync_api import sync_playwright
# AgentBay を初期化します
agent_bay = AgentBay(api_key="your_api_key")
# 永続化コンテキストを作成します
context_result = agent_bay.context.get("cookie-demo-context", create=True)
context = context_result.context
# 最初のセッション - cookie を設定します
browser_context = BrowserContext(
context_id=context.id,
auto_upload=True
)
params = CreateSessionParams(
image_id="browser-image-id",
browser_context=browser_context
)
session1 = agent_bay.create(params).session
# 最初のセッションで cookie を設定します
session1.browser.initialize(BrowserOption())
endpoint_url = session1.browser.get_endpoint_url()
with sync_playwright() as p:
browser = p.chromium.connect_over_cdp(endpoint_url)
context_p = browser.contexts[0] if browser.contexts else browser.new_context()
page = context_p.new_page()
# ナビゲートして cookie を設定します
page.goto("https://example.com")
context_p.add_cookies([
{
"name": "session_cookie",
"value": "session_value",
"domain": "example.com",
"path": "/",
}
])
browser.close()
# コンテキスト同期を使用して最初のセッションを削除します
agent_bay.delete(session1, sync_context=True)
# 2 番目のセッション - cookie が永続化されていることを確認します
session2 = agent_bay.create(params).session
# 2 番目のセッションで cookie を確認します
session2.browser.initialize(BrowserOption())
endpoint_url2 = session2.browser.get_endpoint_url()
with sync_playwright() as p:
browser = p.chromium.connect_over_cdp(endpoint_url2)
context_p = browser.contexts[0] if browser.contexts else browser.new_context()
# cookie が永続化されていることを確認します
cookies = context_p.cookies()
print(f"Persisted cookies: {cookies}")
browser.close()TypeScript の例
基本的な使用方法
import { AgentBay, CreateSessionParams, BrowserContext } from 'wuying-agentbay-sdk';
// AgentBay クライアントを初期化します
const agentBay = new AgentBay({ apiKey: "your_api_key" });
// 永続化コンテキストを作成または取得します
const contextResult = await agentBay.context.get("my-browser-context", true);
const context = contextResult.context;
// 永続化を使用してブラウザセッションを作成します
const browserContext: BrowserContext = {
contextId: context.id,
autoUpload: true
};
const params = new CreateSessionParams()
.withImageId("browser-image-id")
.withBrowserContext(browserContext);
const sessionResult = await agentBay.create(params);
const session = sessionResult.session;Cookie の永続化
import { AgentBay, CreateSessionParams, BrowserContext, BrowserOption } from 'wuying-agentbay-sdk';
import { chromium } from 'playwright';
// AgentBay を初期化します
const agentBay = new AgentBay({ apiKey: "your_api_key" });
// 永続化コンテキストを作成します
const contextResult = await agentBay.context.get("cookie-demo-context", true);
const context = contextResult.context;
// 最初のセッション - cookie を設定します
const browserContext: BrowserContext = {
contextId: context.id,
autoUpload: true
};
const params = new CreateSessionParams()
.withImageId("browser-image-id")
.withBrowserContext(browserContext);
const session1 = (await agentBay.create(params)).session;
// 最初のセッションで cookie を設定します
await session1.browser.initializeAsync(new BrowserOption());
const endpointUrl = session1.browser.getEndpointUrl();
const browser = await chromium.connectOverCDP(endpointUrl);
const contextP = browser.contexts()[0] || await browser.newContext();
const page = await contextP.newPage();
// ナビゲートして cookie を設定します
await page.goto("https://example.com");
await contextP.addCookies([
{
name: "session_cookie",
value: "session_value",
domain: "example.com",
path: "/",
}
]);
await browser.close();
// コンテキスト同期を使用して最初のセッションを削除します
await agentBay.delete(session1, true);
// 2 番目のセッション - cookie が永続化されていることを確認します
const session2 = (await agentBay.create(params)).session;
// 2 番目のセッションで cookie を確認します
await session2.browser.initializeAsync(new BrowserOption());
const endpointUrl2 = session2.browser.getEndpointUrl();
const browser2 = await chromium.connectOverCDP(endpointUrl2);
const contextP2 = browser2.contexts()[0] || await browser2.newContext();
// cookie が永続化されていることを確認します
const cookies = await contextP2.cookies();
console.log(`Persisted cookies: ${JSON.stringify(cookies)}`);
await browser2.close();推奨される使用方法
わかりやすいコンテキスト名を使用する: コンテキストには、
ecommerce-scrapingやsocial-media-automationのように、その目的に基づいた名前を付けます。自動アップロードを有効にする: セッションの終了時にブラウザデータを自動的に同期するには、
auto_upload=Trueを設定します。リソースのクリーンアップ: 操作が完了したらセッションを削除して、クラウドリソースを解放します。
エラーを適切に処理する: コンテキスト操作に対して適切なエラー処理を実装します。
コンテキストの再利用: 継続性を維持するために、複数のセッションで同じコンテキストを再利用します。
高度な機能
コンテキスト同期ポリシー
from agentbay.context_sync import SyncPolicy
# カスタム同期ポリシーを作成します
policy = SyncPolicy(
upload=True,
extract=True,
white_list=["/cookies.json", "/storage/"],
black_list=["/cache/large_files/"]
)
# コンテキスト同期を使用します
context_sync = ContextSync.new(
context_id=context.id,
path="/browser-data",
policy=policy
)複数のコンテキスト
# 異なるウェブサイト用に個別のコンテキストを作成します
ecommerce_context = agent_bay.context.get("ecommerce-site", create=True).context
social_context = agent_bay.context.get("social-media", create=True).context
# 異なるセッションに異なるコンテキストを使用します
ecommerce_session_params = CreateSessionParams(
browser_context=BrowserContext(ecommerce_context.id, True)
)
social_session_params = CreateSessionParams(
browser_context=BrowserContext(social_context.id, True)
)エラー処理
try:
context_result = agent_bay.context.get("my-context", create=True)
if not context_result.success:
print(f"Failed to create context: {context_result.error_message}")
session_result = agent_bay.create(session_params)
if not session_result.success:
print(f"Failed to create session: {session_result.error_message}")
except Exception as e:
print(f"An error occurred: {e}")