ぬまろぐ

←戻る

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につなぐことで解消するようです。