Selenium IDE (selenium-side-runner) でakamaiなどのセキュリティブロックを突破する方法
2022/06/22
Selenium IDEで作成したログインシナリオをselenium-side-runnerで実行すると、403 forbiddenでエラーとなるときがあります。 (ちなみに、IDE上から実行すると正常にログインできます)
いろいろ調査していくと、akamaiなどのセキュリティ系のCDNが入っているとボット判定されて弾かれるようです。
Webdriverでブラウザ起動して自動実行するとakamaiに拒否される
Webdriver(Chromedriver)を使っているのですが、これを使うとakamaiに拒否されるようです。
selenium IDE上からの自動実行は、webdriverを使っておらず、Chrome拡張機能で直接Chromeを操作しているからボット判定されないかと思われます。
コーディングしたSeleniumでも同様
IDEやselenium-side-runnerだけでなく、通常のseleniumでも同様の事象となります。
akamaiのjsが画面のソースをチェックして、Chromedriverからの起動か判別していると思われる
これは想定ですが、海外サイトとか調べていると、akamaiのjsが画面上のコードをチェックして、Chromedriverとかで動かされている特定の変数?かなにかを検知しているのかと思われます。
最初はユーザエージェントとかかと思いましたが、ローカルプロキシを立ててユーザエージェントを改ざんしても解消しなかったため、リクエストヘッダで検知はしていなさそう。
対処方法
Chromeをデバッキングポートを開いて起動して、デバッキングポート経由でChromeを操作することで解消しました。
以下のように、selenium-side-runnerのオプションで「goog:chromeOptions.debuggerAddress」を指定することで、起動済みのChromeと接続して操作することができます。
& 'C:\Program Files\Google\Chrome\Application\chrome.exe' --remote-debugging-port=9222
selenium-side-runner .\test.side -c "goog:chromeOptions.debuggerAddress=127.0.0.1:8080 browserName=chrome"
通常のseleniumでもdebugging-portにつなぐことで解消するようです。