突然の死
Seleniumで作ったツールで保存したキャプチャ画像みんなCAPTCHA認証(Cloudflare)になってるやろがい!
先週までちゃんと動いてたのに何で急に認証を要求してくんの!?聞いてないわ!
そんな感じで突然それまで動いてたツールが死んでしまったので、その対処法のメモです。
なお、突然の死が発覚したキャプチャ対象はMavenのリポジトリでした。
手動では閲覧のために認証を必要としない普通のサイトです…
動作確認を行ったChrome本体とChromeDriverのバージョンは以下の通りです。
- Google Chrome: 89.0.4389.90(Official Build) (64 bit)
- ChromeDriver - WebDriver for Chrome:89.0.4389.23
JSoupでCAPTCHA認証による突然の死を迎えた場合は、こちらの解決法が使えるかも?
→【Java】JSoupでCAPTCHA認証を回避する
ソース
ChromeDriverService service = new ChromeDriverService.Builder()
.usingDriverExecutable(new File("chromedriver.exeのパス")))
.usingAnyFreePort()
.build();
service.start();
ChromeOptions options = new ChromeOptions();
options.addArguments("user-agent=Type user agent here"); // headlessでのCAPTCHA回避に必須
options.addArguments("--disable-blink-features=AutomationControlled"); // headlessじゃなければこれだけでもいけた
options.setHeadless(true);
WebDriver driver = new RemoteWebDriver(service.getUrl(), options);
急に自転車やらボートの画像を選択するよう強制されて大変びっくりしました…長女だから我慢できた。
社内ツールだからいいけど、客先に納品してたらまじで困ったことになってたね…
2022/10/11 追記
どうやら知らないうちに表示したページから遷移すると、再びCAPTCHA認証が発生するようになってました…
これはもうどうしていいかわからん。chromedriver.exeのバイナリ書き換えとか考えないといけないかも。
Pythonだとなんかいろいろライブラリも出ているんだけど、Javaは見つからないねえ…