Closed5

Playwrightでヘッドレス動作時にUser-Agentを偽装する方法

idumistidumist

実現したいこと

  1. PlaywrightでヘッドレスだとアクセスできないWebサイトにアクセスしたい。
  2. User-Agentを偽装してヘッドレス動作時でも通常動作に見せかけることでアクセスする。
idumistidumist

前提条件

  • Playwright for .NET 1.49.0
  • インストール済みのGoogle Chrome(Playwrightではブラウザをインストールしない)
  • 通常表示とヘッドレスのどちらも利用
  • puppeteer/pyppeteerやPower Automateの代替としてブラウザ操作の自動化のみが目的(テスト自動化等の本来の用途は全くわかっていない)
idumistidumist

NewContextAsync()にオプションUserAgentを設定する。

using Microsoft.Playwright;

using var playwright = await Playwright.CreateAsync();
await using var browser = await playwright.Chromium.LaunchAsync(new()
{
    Channel = "chrome",  // インストール済みのChromeを起動
    Headless = true  // trueならヘッドレス
});
var context = await browser.NewContextAsync(new()
{
    // 通常動作と同じUserAgentを指定する(以下の値は適当)
    UserAgent = @"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/100.0.0.0 Safari/537.36"
});

var page = await context.NewPageAsync();
await page.GotoAsync("https://example.jp");

await context.CloseAsync();
await browser.CloseAsync();

https://playwright.dev/dotnet/docs/api/class-browser#browser-new-context-option-ignore-https-errors

idumistidumist

ヘッドレス動作時にアクセスできない原因

  • ヘッドレス動作時はUser-AgentがHeadlessChrome/~となる(通常はChrome/~
  • User-AgentにHeadlessが含まれているとWebサイト側がアクセスを拒否している
このスクラップは2025/02/05にクローズされました