5
7

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

Puppeteerでユーザーエージェントを偽装する

Posted at

これはなに?

以前 await puppeteer.launch() のオプションでUserAgentを指定できたような気がしたが出来なかったので改めて調査してみた。

手元に昔書いたこんな風のコードあったけど初めから期待した挙動してなかったんかな……

  const browser = await puppeteer.launch({
    headless:true,
    executablePath: "/usr/bin/google-chrome",
    ua: "foobar",
  });

どうするの?

ブラウザの起動オプションに与える

  const browser = await puppeteer.launch({
    headless:true,
    slowMo: 10,
    executablePath: "/usr/bin/google-chrome",
    args: [
      "--user-agent=Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/97.0.4692.99 Safari/537.36",
    ],
  });

argsがブラウザ起動時のコマンドラインオプションになるはずなのでこれで指定する

素直にsetUserAgent()を使う

  const page = await browser.newPage();
  page.setUserAgent("Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/97.0.4692.99 Safari/537.36");

Puppeteer使うならこれが正攻法なんでしょうね。

結果

checkua.js
const puppeteer = require("puppeteer");

(async() => {
  const browser = await puppeteer.launch({
    headless:true,
    slowMo: 10,
    executablePath: "/usr/bin/google-chrome",
    args: [
      // "--user-agent=Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/97.0.4692.99 Safari/537.36",
    ],
  });
  const page = await browser.newPage();
  // page.setUserAgent("Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/97.0.4692.99 Safari/537.36");

  try {
    const value = await page.evaluate(() => {
      return navigator.userAgent;
    });
    console.log(value);
  } catch(e) {
    console.log(e);
  }
  browser.close();
})();
$ node checkua.js
Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) HeadlessChrome/97.0.4692.99 Safari/537.36

argsの方のコメントアウト部分を有効にすると

$ node checkua.js
Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/97.0.4692.99 Safari/537.36

デフォルトでHeadlessChromeとなっていた箇所がChromeとなり、上書きされていることが確認できる。

setUserAgentの方のコメントアウト部分を有効にすると

$ node checkua.js
Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/97.0.4692.99 Safari/537.36

こちらも書き換えられている。

昔書いたスクリプト直さなきゃだ!


それでは良いWebスクレイピングライフを。

5
7
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
7

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?