Seleniumで、Chromeをヘッドレスでスクレイピングできない場合があります。

よくできたサイト?!では、スクレイピングであることを察知して防ぐようになっているんです。 Seleniumで、Chromeをヘッドレスではなく通常起動すると、普通にアクセスできてしまいます。


なぜ検知できるかというと、ヘッドレスモードで動作させるとUserAgentに「Headless」という文字列が入ってしまうからです。

ヘッドレスでアクセスしたい場合は、UserAgentを偽装して回避します。 正しく、UserAgentを設定してもいいのですが、何でも良さそうです。私はDUMMYという文字を設定してます。

  opt.add_argument("--user-agent=DUMMY")    # UAにHeadlessと書かれるのを防ぐ


UserAgent自体廃止の噂もありますが、上記で動かなくなったらまた考えますかね。


参考:

2021/11/19