Pythonで2 Captchaとセレンを使用してrecaptchaをバイパスする方法

17434 ワード

彼らがセキュリティ目的のためにそこにいるとしても、彼らは本当に我々の時間を消費する傾向があります.
5分のフォームを充填し、あなたがその迷惑を得たので、再度フォームを充填を再起動する必要があります想像してみて😠 キャプチャ間違っています.
しかし、...解決策があります.2captcha

何がcaptchaのですか?
まず第一に、captchaは完全に自動化された公衆チューリングテストのためにコンピュータと人間を区別するために際立っている.それはあなたが人間や機械であるかどうかをテストするために取られるだけのテストです.Capchaのヘルプは、ウェブページのコメントで彼らの詐欺を促進する広告スパマーに対して防御する.すべてのユーザーがCAPTCHA認証を交渉するのを必要とすることによって、管理者は彼らの活動を自動化しようとするスパマーを除外することができます.

なぜ彼らは迷惑ですか?
まず第一に、彼らは素晴らしいですが、それはあなたのためにハードに解決するために人間を解決するために迷惑になる

2 captchaは何ですか?
2 captchaは、リアルタイムで多くのcaptchasを認識する必要がある顧客を接続するために作られています.一言で言えば、彼らはあなたのためにそれらの迷惑なcaptchaの解決に役立つ会社です.多くのCAPTCHA解決サービスが利用可能ですが、CAPTCHAを解決するのに非常に高速であるので、2 captchaはとても最高です.それは私がCAPTCHAを解決するために使用する主なツールであり、あなたがセレンを使用してPythonでcapthaのを解決するために2 capthaを使用する方法を示すつもりです.

2 captchaの使い方
あなたのためにCAPTCHAを解決するために2 captchaのために、それは若干のデータを必要とします.
だから、ここでどのように動作します.
  • APIのエンドポイントにデータを送信します.
    データはsitekey , page url , 2captcha key and method .
    The sitekey ページ上のCAPTCHAサービスを呼び出すために使用するコードが含まれます.The page url catpchaを含むページのURLを参照します.The 2captcha key 2 captchaから取得したAPIキーとmethod captchaを解決する方法を2 captchaに伝えます.
  • エンドポイントの誰かが詳細をキャプチャします
  • captchaが解決されるまで、あなたはエンドポイントをポーリングし続けます
  • 結果はあなたに返されます

  • CAPTCHAの2 CAPTCHAを使用してPythonで解決する方法

    パッケージのインストール
    まず最初に、Python言語をコンピュータにインストールする必要があります.次に、セレンパッケージをインストールします.セレンはウェブブラウザを自動化します、そして、それは我々がcaptchaを解決するのを助けるつもりです.
    端末を開き、pip install selenium .
    それから、リクエストをインストールします.pip install requests ) これにより、HTTPリクエストを2 captcha終了点にすることができます.
    インストールが完了したら、Chromeブラウザドライバをインストールする必要がありますdownload it here .

    セレンを始める
    from selenium import webdriver
    
    driver_path = "C:\\Program Files (x86)\\chromedriver_win32\\chromedriver.exe"
    brave_path = "C:\\Program Files\\BraveSoftware\\Brave-Browser\\Application\\brave.exe"
    
    option = webdriver.ChromeOptions()
    option.binary_location = brave_path
    
    browser = webdriver.Chrome(executable_path=driver_path, chrome_options=option)
    
    browser.get("https://www.google.com/recaptcha/api2/demo")
    
    したがって、上記のスニペットでは、Webドライバをセレンからインポートします.The driver_path and brave_path 変数は、Chromeドライバファイルとブレイブブラウザファイルへのパスを保持します.
    次に、オプション変数はブラウザに余分なオプションを与えたい場合に便利です.例えば、インコグニートモードで起動します.
    ブラウザ変数は、ブラウザインスタンスを作成します.The browser.get 関数は、我々が解決しようとしているキャプチャを含むページでブラウザを開きます.
    コードを実行した後、このようなイメージを取得すると、すべてが正しく動作していることを意味します.


    ページからデータを抽出する
    私が以前言ったように、2 captchaがあなたのためにCAPTCHAを解決するために、若干の詳細を必要とします、そして、それらの詳細はcaptchaを含むページにあります.
    site_key_element = browser.find_element_by_css_selector('[data-sitekey]')
    site_key = site_key_element.get_attribute("data-sitekey")
    page_url = "https://www.google.com/recaptcha/api2/demo"
    method = "userrecaptcha"
    key = "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"
    
    The site key 属性“data sitekey”を持つ要素に含まれているので、属性を含む要素を最初に見つけます.次に、site key 要素からの値.
    The page_url はcaptchaを含むページのURLです.
    The method captchaタイプがrecaptchaであると2 capthaに話します.
    The key あなたが彼らのサービスのためにサインアップするならば、2 captchaから得られます.

    データをエンドポイントに送信する
    import requests
    
    url = "http://2captcha.com/in.php?key={}&method={}&googlekey={}&pageurl={}".format(key,method,site_key,page_url)
    response = requests.get(url)
    
    if response.text[0:2] != 'OK':
        quit('Service error. Error code:' + response.text)
    captcha_id = response.text[3:]
    
    
    サーバへのリクエストを行うには、Pythonを使用しますrequests モジュールです.そこでリクエストモジュールをインポートし、リクエストをurl どちらが作成されました.
    応答が「OK」に等しくないならば、我々は応答を待ちます、そして、それが我々がプログラムを閉じるように何かが間違っていたことを意味しますcapthca_id 反応から.

    受信解決CAPTCHA
    我々が彼らの終点に要請を送ったあと、我々は彼らが我々のcaptchaを解決し終えたかどうかチェックするために彼らのサーバーをポーリングし続けます.
    import time
    
    token_url = "http://2captcha.com/res.php?key={}&action=get&id={}".format(key,captcha_id)
    
    while True:
        time.sleep(10)
        response = requests.get(fetch_url)
    
        if resp.text[0:2] == 'OK':
            break
    
    要求を提出した後に、我々は我々のcaptchaが解決されるかどうかチェックするために我々が使うcaptcha idを与えられます.それが送られるならば、CAPTCHAが解決されないので、我々はwhileループを使う必要があります.ループの中で、10秒待ってリクエストをする.レスポンスが「OK」なら、captchaが解決されたので、ループを中断します.

    ページに解決されたキャプチャを挿入する
    それで、解決されたcaptchaを受けた後に、私たちは、セレンCapchaをページに挿入するためにセレンを使用するでしょう.
    captha_results = response.text[3:]
    browser.execute_script("""document.querySelector('[name="g-recaptcha-response"]').innerText='{}'""".format(captha_results))
    browser.find_element_by_css_selector('[id="recaptcha-demo-submit"]').click()
    
    そこで、解決されたcaptchaを抽出した後、Seleniumを使用して、コードをフォームに挿入して送信するJavaScriptを実行します
    それ.

    全コード
    from selenium import webdriver
    import requests
    import time
    
    driver_path = r"C:\\Program Files (x86)\\chromedriver_win32\\chromedriver.exe"
    brave_path = r"C:\\Program Files\\BraveSoftware\\Brave-Browser\\Application\\brave.exe"
    
    option = webdriver.ChromeOptions()
    option.binary_location = brave_path
    
    browser = webdriver.Chrome(executable_path=driver_path, options=option)
    
    browser.get("https://www.google.com/recaptcha/api2/demo")
    
    site_key_element = browser.find_element_by_css_selector('[data-sitekey]')
    
    site_key = site_key_element.get_attribute("data-sitekey")
    page_url = "https://www.google.com/recaptcha/api2/demo"
    method = "userrecaptcha"
    key = "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"
    
    url = "http://2captcha.com/in.php?key={}&method={}&googlekey={}&pageurl={}".format(key,method,site_key,page_url)
    response = requests.get(url)
    
    if response.text[0:2] != 'OK':
        quit('Service error. Error code:' + response.text)
    captcha_id = response.text[3:]
    
    
    
    token_url = "http://2captcha.com/res.php?key={}&action=get&id={}".format(key,captcha_id)
    
    while True:
        time.sleep(10)
        response = requests.get(fetch_url)
    
        if response.text[0:2] == 'OK':
            break
    
    
    
    captha_results = response.text[3:]
    browser.execute_script("""document.querySelector('[name="g-recaptcha-response"]').innerText='{}'""".format(captha_results))
    browser.find_element_by_css_selector('[id="recaptcha-demo-submit"]').click()