Python

【プログラミング】PythonのSeleniumBaseを使ってCloudFlareのCAPTCHA認証を突破してみよう。

2024.09.14 土
220 view
【プログラミング】PythonのSeleniumBaseを使ってCloudFlareのCAPTCHA認証を突破してみよう。

CloudFlareによるCAPTCHA認証は非常に多くのサイトで利用されている。

しかし、こういった認証はスクレイピングをするにあたって弊害になってしまう。

つまり今回は、そのような煩わしい認証を突破するためのコードを書いていく。

SeleniumBaseとは

Seleniumの上に構築されているライブラリだ。

Seleniumの機能を拡張し、使いやすさや機能性を向上させるためのライブラリである。

そのため、事前にSeleniumを導入していないと動作しない。

Seleniumの導入については前回の記事を参照してくれ。

SeleniumBaseのインストール

pip install seleniumbase

コマンドプロンプトに入力する。

このように表示されたらインストール完了だ。

サンプルコード

スクリプトファイルの用意

まずは、Pythonのファイルを用意する。

app.py

#app.py

これで準備は完了だ。

ログイン時のCAPTCHAを突破するコード

ログイン時のCAPTCHAというのはこのような小さなCAPTCHAのことだ。

そのログイン時のCAPTCHAを突破するコードを解説する。

app.py

#app.py
from seleniumbase import SB

# ログイン時のCAPTCHA
with SB(uc=True, incognito=True) as sb:
    sb.uc_open_with_reconnect(
        "https://2captcha.com/ja/demo/cloudflare-turnstile", 5
    )
    sb.uc_gui_click_captcha()

たったこの数行だけでログイン時のCAPTCHAを自動でクリックしてくれるようになる。

全画面表示のCAPTCHAを突破するコード

全画面表示のCAPTCHAというのはこのようなブラウザ一面に表示されるCAPTCHAのことだ。

その全画面表示のCAPTCHAを突破するコードを解説する。

app.py

#app.py
from seleniumbase import SB

# 全画面表示のCAPTCHA
with SB(uc=True, incognito=True) as sb:
    sb.uc_open_with_reconnect(
        "https://2captcha.com/ja/demo/cloudflare-turnstile-challenge", 5 
    )
    sb.uc_gui_click_captcha()

たったこの数行だけで全画面表示のCAPTCHAを自動でクリックしてくれるようになる。

コードの説明

両者とも基本的なコードは同じだ。

違う点はsb.uc_open_with_reconnect()の引数に書いてあるURLのみだ。

つまり、URLさえ変更すればどちらのCAPTCHA認証にも対応できるというわけだ。

それでもうまくいかない場合は、URLの後ろにある第二引数の5を20などに変更してみることをおすすめする。

この第二引数は、スクリプトが実行されるまでの遅延時間だ。

つまりこのコードの場合だとページが開いてから5秒後に実行される。

ネットワーク環境などは人それぞれなので、自分に合った時間に設定してみると良いだろう。

注意点

SeleniumBaseのCAPTCHA認証処理にはマウスカーソルを自動で操作してクリックするように設計されている。

そのため、ブラウザがアクティブ状態でないと機能しない。

つまり、ほかの作業をしながらバックグラウンド上でCAPTCHA認証は不可能ということだ。

ただし、CAPTCHA認証後はバックグラウド上でスクレイピング処理は行えるため、CAPTCHA処理時のみアクティブ状態にすれば、あとは裏で処理が行われる。

サンプルコードの動作確認

コードのダウンロードはこちら (github.com)

これらのコードはGithubにアップロードしている。

コードを書くのが面倒な方は、上記のページでダウンロードして使用してみるのも良いだろう。

コードもすべてアップロードしているため、必要な方はぜひ使ってみてくれ。

まとめ

いかがだっただろうか。

無事SeleniumBaseを導入し、CAPTCHA認証を突破できただろうか。

少々使いづらい点もあるが、自動で認証を突破してくれるのは便利だ。

ただし、バックグラウンド上でもCAPTCHA認証を突破してくれるようになると非常に使いやすい。

今後の発展に期待だ。

コメントはこちらから

必須コメント

必須ハンドルネーム