Python ビジネス関連

「ReCaptcha V2」を突破する!2Captchaで挑む完全自動化

スクレイピングやブラウザ操作の自動化タスクにおいて、一番の難所は何といっても各種キャプチャの突破です。

そもそもキャプチャ機能はロボット操作されないために設置するため、それを突破しようとする時点で「?」ではありますが、それでもなんとかしたい場合の解決方法として「2Captcha」というサービスがあります。

実はこのサービスを使うと、サクッとキャプチャ突破できます。
早速紹介したいと思います。

※利用は自己責任でお願いいたします。悪用厳禁です。

2Captchaについて

ロシアの会社が提供するキャプチャ機能を突破するためのサービスです。
APIを利用することでキャプチャ処理を自動化できます。
サービスは有償になりますが、APIリクエスト1回0.3円程度と非常にリーズナブルです。

仕組みはとても単純。
APIを用いてキャプチャの情報を送ると、どこかにいるWorkerがキャプチャを解除し、必要な情報を返してくれます。
ぶっちゃけ小遣い稼ぎの人海戦術によるロック解除です。

2Captchaの仕組み



2Captchaの使用方法

アカウントの作成と入金をする

https://2captcha.com/にアクセスします。
右上の「Registration」ボタンからアカウント登録を実施してください。

メールアドレスとパスワードを設定し、登録完了です。
簡単ですよね!

それではログインしてみましょう。
ログインすると以下の様な画面が表示されます。

ログイン画面

続いて入金のフェーズに入ります。

2Captchaは無料で使用できないため、はじめに入金しておく必要があります。
ログイン後画面上部の「Add funds」から入金を行います。

利用可能な決済サービスを選んで金額を設定します。
私はコンビニ払いで払いました。

テストを兼ねて、最低入金額の3$の入金をしました。

APIキーの取得をする

ログイン後の画面(ダッシュボード)の中央部分にAPIキーが記載されています。
後ほど使用しますので、コピーしておきましょう。

APIキー

Python+Selenium+2Captchaで『ReCaptcha V2』を突破してみる

個人的にPythonを使っているため、今回はPythonを使用してReCaptcha V2を突破してみましょう。

パッケージのインストール方法

Python用のパッケージが用意されています。
以下のコマンドを入力し、インストールしてください。

pip install 2captcha-python

また、今回はChromeDriverを使用します。
こちらのインストール手順は以下の記事からご確認ください。

関連記事
トップ画像
pyhon3でWEBクローリングするならSelenium WebDriverを活用しよう(導入手順と使い方)

スクレイピングは情報を「抽出」すること スクレイピングとは「何らかのデータ構造から抽出すること」を指します。 簡単に言う ...

続きを見る

デモページでテストしてみる

今回はこちらのデモページを使ってテストしてみます。
(あえてセキュリティレベルの高い物を選びました)

https://2captcha.com/demo/recaptcha-v2?level=high

import requests
import json
import time
from selenium import webdriver
from selenium.webdriver.support.ui import Select # Selectタグが扱えるエレメントに変化させる為の関数を呼び出す



options = webdriver.ChromeOptions()
options.add_argument('--user-agent=Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.88 Safari/537.36')
options.add_argument('--lang=ja-JP,ja;q=0.9,en-US;q=0.8,en;q=0.7')

driver = webdriver.Chrome(options=options)

# ページにアクセス
driver.get('https://2captcha.com/demo/recaptcha-v2?level=high')

# JSでtextareaタグのdisplay:noneを削除する
driver.execute_script('var element=document.getElementById("g-recaptcha-response"); element.style.display="";')

service_key = 'YOUR_API_KEY' # 自分のAPIキーを設定してください 
google_site_key = driver.find_element_by_css_selector('[data-sitekey]').get_attribute('data-sitekey')
pageurl = 'https://2captcha.com/demo/recaptcha-v2?level=high'
url = "https://2captcha.com/in.php?key=" + service_key + "&method=userrecaptcha&googlekey=" + google_site_key + "&pageurl=" + pageurl

resp = requests.get(url) 
if resp.text[0:2] != 'OK': 
    quit('Service error. Error code:' + resp.text) 
captcha_id = resp.text[3:]


fetch_url = "https://2captcha.com/res.php?key="+ service_key + "&action=get&id=" + captcha_id
 
for i in range(1, 10):
    time.sleep(5) # wait 5 sec.
    resp = requests.get(fetch_url)
    if resp.text[0:2] == 'OK':
        break
print('Google response token: ', resp.text)

# textareaにトークンを入力する
driver.find_element_by_id('g-recaptcha-response').send_keys(resp.text[3:])
time.sleep(5)

# ボタンクリック
driver.find_element_by_css_selector('button[type="submit"]').click()

# スリープ&クローズ
time.sleep(10)
driver.quit()

2Captchaのレスポンスには数秒(10秒程度)かかりましたが、難なく突破しました。

キャプチャを解決する方法は2Captchaのサイトに記載がある

2Captchaのアカウント作成が済んでいれば、以下のページからキャプチャの種類ごとの突破方法が記載されています。

https://2captcha.com/2captcha-api#solving_captchas

実際に使用する前に、チェックをしておくと良いですね!



最後に

思ったよりも簡単にReCaptcha V2を突破できてしまいました。
ReCaptcha V3やGoogle以外のキャプチャに関しても対応しているようなので、APIを確認してみてください。

かかった費用と時間(コスト)は非常に小さなものでした。
どうしても困ってしまったとき、最小限の費用で済ませたい場合に活用してみてください。

1日1ポチお願いいたします!
人気ブログランキング

-Python, ビジネス関連
-, ,

© 2024 with-Biz