browser-use を使って Web サービスにログインした際に発行されるセッションクッキーを取得する方法です。
セッションクッキーは、通常 httponly=true で発行されるため、browser-use に 「セッションクッキーを取得して」と依頼しても返されません。
Javascript ではアクセスできないためです。
取得したい場合、browser_use.Browser インスタンス をあらかじめ作っておき、browser-use の Agent に注入することにより、 処理中に Playwright のブラウザインスタンスを扱うことができるようになります。
セッションクッキーに限らず、ブラウザ内部の細かいリソースを取り扱う場合に有効だと思います。
from browser_use import Agent, Browser
from langchain_openai import ChatOpenAI
DEFAULT_LLM_MODEL = "gpt-4.1-mini"
def get_sessoin_cookies():
browser = Browser()
current_cookies = []
async def handle_step(browser_state, agent_output, step_number):
nonlocal browser, current_cookies
try:
# Playwright のインスタンスを扱う
context = browser.playwright_browser.contexts[0]
current_cookies = list(await context.cookies())
except Exception as e:
print(
'An error occurred while getting cookies: '
f'{e.__class__.__name__}: {e}'
)
_login_prompt = '自社のウェブサービス ◯◯ にログインしてください。\n\n...'
async def run_agent():
agent = Agent(
task=_login_prompt,
browser=browser,
llm=ChatOpenAI(model=DEFAULT_LLM_MODEL),
register_new_step_callback=handle_step,
)
await agent.run(max_steps=5)
asyncio.run(run_agent())
# ログイン完了。ここでクッキーが取得できている
print(current_cookies)