PlaywrightとGoogle reCAPTCHA
Playwrightは当然ロボット系のテストなので、Google reCAPTCHAに引っかかります。
なんですが、よくわかりませんが、reCAPTCHA v3をテストできるページでちょっと試してみたら意外なことが…。
まず予備知識としてreCAPTCHAにはv2とv3が今は出回っています。
v2は写真の中から「バス」を選択してくださいみたいな写真から選ぶやつ。
v3はブラウザ利用者は何もしないで判定される進化した版です。
当然v3であればユーザーは余計な選択などをしなくてもいいため、ユーザー利便性も上がりますが、導入側はボットと判断したときの処理を自前で作らなければならないという仕様です。
で、このボット判定ですが、Googleでやってくれるのはボット度合いを数値化した指数みたいなものを返してきます。
一応1.0~0.0で値が1.0に近ければより人間らしいということになります。
問題はv2と違って、v3は値をいくつの時にボットと判定するかはサイトの運営者が決めてくださいってこと。
閾値0.5ぐらいで振り分けるのが一般的なようですが、いろいろ読んでいるとボットでもないのに0.3と判断されたといった記事も見かけます。
さて、ではPlaywrightではどうかというと…。
v3のロボット閾値判定が0.7になるんですよ。上記にも書いたように0.9ぐらいなら間違いなく人間判定で、場合によっては人間の操作で0.5や0.3と判定値を返してくることすらあるらしいのに、Playwrightでアクセスしてみたら0.7って結果に…。
まじか。
ちなみにreCAPTCHA v2は音声での認証にしてMicrosoftのAzureの音声API通せば(Googleクラウドをあえて使わず)まず失敗しません。試してみたところ、Googleの無料の音声解析APIはまず聞き取ってくれません。Azureはほぼ確実に聞き取れます。
v3のほうはまあ、テストページが1つだけなので、いろんなページに移動する(各ページにreCAPTCHA APIが設置されている)場合はちゃんと0.3とか0.1になるのかもしれませんが、トップページとかお問い合わせのページにポツンと入れているだけだと、Playwrightでは通過できてしまうのかもしれません。
6/28 追記
いくつかのテストサイトで試してみましたが、0.3と判断されるサイトもあれば、0.9と判断するサイトもあるようです。
Playwrightで0.3と判断されたサイトで手動でマウスクリック連打してみても0.9か0.7までしか行きませんが、0.3の判定はページ遷移とランダムな時間待機とボタンクリックしかしていなくても0.3でした。まあ、マウス移動とかないからね。
どのサイトもだいたい単純にGotoAsync()でページ表示した後、スコア表示するボタンを適当にClickAsync()しているだけなんですけどね。
4サイトためして、0.9が1つ、0.7が2つ、0.3が1つ。何回かボタン押させてもかわらず。
0.9とか0.7になるのは何かの罠なんだろうか。
あとはどうも、v3の返している値っていろいろな値を取りそうなふりして、
0.1と0.3と0.5と0.7と0.9の5段階だけなんじゃないかって気がする。
つまり、判断は5段階のうちのどれにする?っていうことみたい。
実際に自分がreCAPTCHAにぶつかるサイトでv3を使っているところはないのだけど。v2は上記のように回避可能なので(アヒャ)v3でなんらかの問題が出始めたら考えてみますか…。
コメント
コメントを投稿