browser-use でログインしたサービスの、httponly=true のセッションクッキーを取得する

Python
2025-05-21 12:10 (2日前) ytyng
View in English

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)
現在未評価
タイトルとURLをコピー
著者は、アプリケーション開発会社 Cyberneura を運営しています。
開発相談をお待ちしています。

アーカイブ

2025
2024
2023
2022
2021
2020
2019
2018
2017
2016
2015
2014
2013
2012
2011