Проблема обхода капчи Python
Пишу парсер, но есть проблема обхода капчи. Выдает ошибку:
ERROR relyhome.parser Failed to solve CAPTCHA
def solve_captcha(self):
url = "https://2captcha.com/in.php"
params = {
'key': self.api_key,
'method': 'userrecaptcha',
'googlekey': self.site_key,
'pageurl': self.page_url,
'json': 1
}
response = requests.get(url, params=params)
if response.json().get('status') == 1:
captcha_id = response.json().get('request')
url = "https://2captcha.com/res.php"
params = {
'key': self.api_key,
'action': 'get',
'id': captcha_id,
'json': 1
}
for _ in range(30): # Ожидание решения CAPTCHA
response = requests.get(url, params=params)
if response.json().get('status') == 1:
return response.json().get('request')
time.sleep(5)
return None
def parse(self):
self.setup_driver()
try:
self.login()
self.save_cookies()
self.main_loop()
finally:
self.driver.quit()
def setup_driver(self):
chrome_options = Options()
chrome_options.add_argument("--headless")
chrome_options.add_argument("--disable-gpu")
chrome_options.add_argument("--no-sandbox")
chrome_options.add_argument("--window-size=1920,1080")
chrome_options.add_argument("--disable-dev-shm-usage")
self.driver = webdriver.Chrome(options=chrome_options)
def login(self):
self.driver.get(MAIN_URL)
WebDriverWait(self.driver, 10).until(EC.visibility_of_element_located((By.ID, "login-email")))
email_field = self.driver.find_element(By.ID, "login-email")
password_field = self.driver.find_element(By.ID, "login-password")
email_field.send_keys(LOGIN)
password_field.send_keys(PASSWORD)
captcha_solution = self.solve_captcha()
if captcha_solution:
captcha_field = self.driver.find_element(By.ID, "captcha-field")
captcha_field.send_keys(captcha_solution)
else:
raise Exception("Failed to solve CAPTCHA")
login_button = self.driver.find_element(By.XPATH, "//button[@type='submit']")
login_button.click()
WebDriverWait(self.driver, 10).until(EC.presence_of_element_located((By.ID, "DataTables_Table_0")))