はじめに
reCAPTCHAの突破(2captcha)に関しての備忘録です。
初心者です😅
間違えてる部分が多々あると思います。
もし見つけた場合、ツッコミいただけると助かります🙇
🦁結論🦁
reCAPTCHAを突破するために「2captcha」を使って回避します。
前提🙊
「2captcha」のアカウント作成して「APIKEY」を取得
「2captcha」にチャージ
https://2captcha.com/
【流れ】
サイトにアクセス
→「reCAPTCHA」が出現
→「reCAPTCHA」が出現したサイトの「data-sitekey」を取得(reCAPTCHA近くにある)
→「サイトURL」「data-sitekey」「2captchaのAPIKEY」この3つを「2captcha」にリクエスト。
→「2captcha」が「reCAPTCHA」を代理で解除
→「reCAPTCHA」を解除することで「トークン」が発行
→「2captcha」からのレスポンスで「トークン」を取得
→サイトの特定のtextareaに「トークン」を貼り付けて「ログインボタン」を押下して終了。
※textareaはdisplay:noneを解除しないと入力はできない
※ログインボタンが条件下で無効化されてる場合は有効化する
押さえておくべき点
- 「2captcha」は有料です。
- reCAPTCHA V2で 15円/回程度(詳細はこちら)
利用シーン
- スクレイピングによる自動ログイン
注意点
- 有料
- セキュリティの難易度が高ければ課金要素は高くなる
- まれにセキュリティの解除に失敗することがある。
詳細内容
reCAPTCHAについて
こういうやつです。(写真)
botなどで自動ログインができないようにしてる。
2captcha
有力でreCAPTCHAを代理でオンライン上で処理してくれてクリアしたデータをもらうことで自動ログインなどを可能にしてくれるAPI。
data-sitekey
reCAPTCHAのサイトに必ずあるIDみたいなもの。
そのサイト固有のIDが付与されてる。
solveRecaptcha関数
サイトのURL、data-sitekeyを2captchaにデータを渡すことで「解除key(トークン)」をくれる。
from twocaptcha import TwoCaptcha
def solveRecaptcha(api_key, sitekey, url):
solver = TwoCaptcha(YourAPIKey)
try:
result = solver.recaptcha(
sitekey=sitekey,
url=url)
return result
except Exception:
return "Captcha solving failed"
handle_recaptcha関数
textareaはdisplay:noneを解除しない
→data-sitekeyを検索
→data-sitekeyの値を解析
→2captchaからレスポンスがあったトークンをdata-sitekeyのtextareaに入力
def handle_recaptcha(browser, current_url):
# display:noneを[""](空欄)に書き換え
chrome.execute_script('var element=document.getElementById("g-recaptcha-response"); element.style.display="";')
# data-sitekeyを検索
recaptcha_element = browser.find_element_by_css_selector('[data-sitekey]')
# sitekeyの値を抽出
data_sitekey_value = recaptcha_element.get_attribute('data-sitekey')
result = solveRecaptcha(data_sitekey_value, current_url)
# トークンをtextareaに入力
code = result['code']
textarea = browser.find_element_by_id('g-recaptcha-response')
chrome.execute_script(f'arguments[0].value = "{code}";', textarea)
このあとログインなどのボタン押下などで進む。
※ログインボタンが押せないなどの状態はjsで解除。
まとめ😺
テストサイトではなく、実際のサイトでやってみると、障害があり、なかなか上手くいきませんでしたが、できた時の快感は今でも忘れられません🤭
参考にしたサイト📗
reCaptcha v2.0を突破するための2captchaサービス (python版)
Google『reCAPTCHA』を突破!『2Captcha』でブラウザ操作の完全自動化に挑む