reCAPTCHAを導入しているサービスのスクレイピングについて

GoogleのreCAPTCHAを回避する手段として2captchaを使用していました。
この2captchaは一回のリクエストに0.03ドル必要となります。

2captchaとは人為的に処理した結果が反映されてログインが可能になるサービスです。
この処理はreCAPTCHA自体にはv2とv3があり、v2ではログイン時に「バス画像を選択する」ポップアップ画面を見たことがあるのではないだろうか、人為的に指示内容を処理しています。
v3はよくわかんないけどv2が不評だったので作られた?・・・人為的な処理がどのように行われるのかわかりません。

2captchaはv2とv3に対応しつつも成功率に違いがある。v2はほぼ100%に対してv3は50%まで低下する。対応策としてはv3で処理せずにv2で処理します。

確認方法とv3からv2処理にするために次の様に確認できます。
例としては
四国電力のよんでんコンシェルジュ
https://ies2.yonden.co.jp/jsk/v1080101

開くと右下にreCAPTCHAのロゴが見えて、ページソースを見ると次のソースが見れます。

これがv3のJavaScript [action" value="login"]で判断できます。
稀にversion v3が記載されていることで確認が出来ます。

<input type="hidden" id="google_recaptcha_version" name="_.google_recaptcha_version" value="v3" />
<input type="hidden" id="google_recaptcha_token" name="_.google_recaptcha_token" value="" />
<input type="hidden" id="google_recaptcha_sitekey" value="6Lcd160UAAAAABIVfr9sbaO5W1uDjYn-Dlup1ArC" />
<input type="hidden" id="google_recaptcha_action" value="login" />
<script src="https://www.google.com/recaptcha/api.js?render=6Lcd160UAAAAABIVfr9sbaO5W1uDjYn-Dlup1ArC">

HttpWebRequest等でリクエストを投げてみるとログインできない趣旨のソースが送られてきます。
ソースを見ると【「私はロボットではありません」へチェックしてログインをお願いします。】が記載されています。

これがv2のJavaScript [action]が無いことで判断できる。
稀にversion v2が記載されています。

<input type="hidden" id="google_recaptcha_version" name="_.google_recaptcha_version" value="v2" />
<input type="hidden" id="google_recaptcha_token" name="_.google_recaptcha_token" value="" />
<input type="hidden" id="google_recaptcha_sitekey" value="6LfHLX4UAAAAAGvVXzSYwMMdqHBB0uhHSLW-9LNf" />
<script src="https://www.google.com/recaptcha/api.js?onload=recaptchaOnloadCallback&render=explicit" async defer>

v2とv3ではsitekeyにも違いがあるのがわかります。

v2のsitekeyが判明したら2captchaに投げて返事をもらう。ログイン情報(IDとPS)と2captchaからの返事をリクエストすると
正常にログインできる。ここまでの処理で10秒から20秒程度時間がかかる・・・

最近分かったことだが、reCAPTCHAのv3はJavaScriptでsubmitボタンを押すこと自体は問題なくログインできることが判明しました。
ログインしてクッキーが取得できれば、HttpWebRequest又はHttpClientでスクレイピングが可能になります。。

JavaScriptが扱えるコンポーネントは次の通り
スマホではXamarin.FormのWebView
ウインドウズではWebView2
マックではWKWebView

ログインはこのコンポーネントで処理して取得したクッキーをHttpWebRequestへ渡すことでスクレイピングが可能になります。