在Selify Python中使用antiaptcha插件來解決ReCAPTCHA問題

更新時間:2024-04-02 12:29:17

問題闡述

我最近開始在一個我從事了一段時間的涉及自動化的項目中使用Se🌸lify。該計劃中的一個障礙是ReCaptcha系統,所以我決定使用反驗證碼作為服務,當我的機器人遇到驗證碼時可以解決它。我正確地安裝了該插件,并在他們的網站上找到了一些使用Selify的測試代碼。

from python_anticaptcha import AnticaptchaClient, NoCaptchaTaskProxylessTask

def captcha_solver():
    api_key = 'xxxxxxxxxxxxxxxxxxxxxxx'
    site_key = '6LdZPw8aAAAAAA_1XrIfloCojPwo4TdJ_A_7ioRy'  # grab from site
    url = '//www.rp.gob.pa/'
    
    client = AnticaptchaClient(api_key)
    task = NoCaptchaTaskProxylessTask(url, site_key)
    job = client.createTask(task)
    job.join()
    return job.get_solution_response()

captcha = captcha_solver()
driver.execute_script('document.getElementById("g-recaptcha-response").innerHTML = "{}";'.format(captcha))
time.sleep(1)
wait.until(EC.element_to_be_clickable((By.XPATH,'//button[@type="submit"]'))).click()

反驗證碼表示reCAPTCHA已解決,已解決的代碼如下

03AGdBq24C2SwOzrdAoGpltxX-8vMuBEjwSmHVIRkVcthtqHEsmm7sEyac1vUgTZQHs7bUtK0YwW6NiduvAmXQt6xVxGRSvO1XhsiRPTfa8spSxRG6scwInLccriAV408I4plNzEykQVQya9v2u4PMyCyrVQ6NADI_A_56DuQvuzhLKuiNL-eN4MvtwEt1ueDefa3nwHUZoW-hgMiEcg1jQ4UhZJ0Ncz1favKF8aMB--Ru1-ewClN41MjyVwREHn1xuCNtnMt5rxaFLt0f5SehaFkdccem1rbCTqsb7lOomTEWpX0TiWKl2kOP9efgOJDlwV84ISncydrQseda7pTlf6nL0m_oUY8U-tnWFQi2i8g_ZWwOgrXb6o9lBapoy0-z0SWZARHKecBbfwHa906mG_b2jh9-IPOI-6rduxTnDw4HDlizXGKOU7Z8Cb8pQAhiaYEejiaBU0X2Dc44dq7CL4Q_365277zoKG4YDwgRXjUstT39e-3C_-lpjdNHMkkz9RJTNe0kOie2i3U-BruAh3trh-vM8F7JU4f8m52F335q3GdUb8FQXL7Fd9hLJpb9KfDMV0pfmRuxl5NoECKRbP2gtTTXUJ0ZwQ
我將這段已解決的代碼執行到g-recaptcha-response文本區域,并告訴Selify單擊按鈕,但結果如下

我無法使用antiaptcha解決reCAPTCHA,我不知道我的代碼是否有問題,但我遵循官方文檔使用了reCAPTCHA。伙計們,請幫我解✨決這個問ꦆ題。

精準答案

我終于自己解決了這個問題。如果其他人正在為類似的問題而苦苦掙扎,我的精準答案是:

  • 打開控制臺并執行以下cmd: ___grecaptcha_cfg.clients
  • 找到包含回調函數的路徑,在我的例子中是_grecaptcha_cfg.Clients[0].R.R
  • 使用以下代碼:driver.execute_script(f"___grecaptcha_cfg.clients[0].R.R.callback('{new_token}')")(請記住相應地更改路徑)

可以使用Google控制臺獲取路徑

右鍵單擊回調&>復制屬性路徑并粘貼到driver.execute_script中,在開始時添加___grecaptcha_cfg.并傳遞已解析的令牌值

Article將幫助您查找您的reCAPTCHA站點的_grecaptcha_cfg客戶端

driver.execute_script('document.getElementById("g-recaptcha-response").innerHTML = "{}";'.format(g_response))   
time.sleep(1)  
driver.execute_script(f"___grecaptcha_cfg.clients[0].R.R.callback('{g_response}')")