5
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

2024年版 reCAPTCHAの突破(2captcha)

Last updated at Posted at 2024-02-02

はじめに

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などで自動ログインができないようにしてる。

image.png

image.png


2captcha

有力でreCAPTCHAを代理でオンライン上で処理してくれてクリアしたデータをもらうことで自動ログインなどを可能にしてくれるAPI。

image.png


data-sitekey

reCAPTCHAのサイトに必ずあるIDみたいなもの。
そのサイト固有のIDが付与されてる。


solveRecaptcha関数

サイトのURL、data-sitekeyを2captchaにデータを渡すことで「解除key(トークン)」をくれる。

sample.py
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に入力

sample.py
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』でブラウザ操作の完全自動化に挑む

5
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?