Selenium как обойти recaptcha и отправку автоматических запросов

Рейтинг: -1Ответов: 1Опубликовано: 13.07.2023

Я использую метод с распознаванием аудиофайлов, но капча периодически блокирует мне использование этого метода. И я бы с удовольствием ввел эту капчу, используя ключ сайта, но форма авторизации Angular не позволяет мне просто ввести токен в поле ввода капчи, как в этом видео https://youtu.be/MWh29nUrbKM . Я хотел бы найти способ обойти блокировку captcha (отправка автоматических запросов) или просто найти способ, как я мог бы обойти проверку формы в Angular и просто нажать на кнопку входа в систему без необходимости решать captcha вручную. Вот веб-сайт с формой https://visa.vfsglobal.com/rus/en/fra/login

Заранее хочу сказать, что я использую 15 прокси-адресов и каждый раз меняю пользовательский агент

Пример кода с распознаванием текста

try:
        driver.switch_to.frame(wait_element('/html/body/app-root/div/app-login/section/div/div/mat-card/form/app-captcha-container/div/div/div/iframe'))
        print("IFRAME")
        save_click('//*[@id="recaptcha-anchor"]/div[1]')
        print("CLICK")
    except:
        print("__!__")
        raise Exception('Captcha not founded')
    driver.switch_to.default_content()
    
    driver.switch_to.frame(wait_element('/html/body/div[4]/div[4]/iframe'))
    print("aud")

    time.sleep(1.21)
    
    try:
        save_click('//*[@id="rc-imageselect"]/div[3]/div[2]/div[1]/div[1]/div[2]')
    except Exception as ex:
        print(ex)
        print("EXE")
    print("click")

    mp3_file = 'aud2.mp3'
    
    captcha = False

    try:
        time.sleep(1)
        driver.find_element(By.XPATH,'/html/body/div/div/div[1]/div[1]')
    except:
        captcha = True
        
    if captcha:
        try:
            wait_element('//*[@id="rc-audio"]/div[7]/a')
        except:
            raise Exception('Captcha is blocked')
    else:
        raise Exception('Captcha is blocked')

    with open(mp3_file, 'wb') as f:
                link = wait_element('//*[@id="rc-audio"]/div[7]/a').get_attribute('href')

                audio_download = requests.get(url=link, allow_redirects=True)

                f.write(audio_download.content)

                f.close()

    sound = AudioSegment.from_mp3("aud2.mp3")
    sound.export("aud.wav", format="wav")

    with sr.AudioFile(f'{os.path.dirname(__file__)}/aud.wav') as source:
        recorded_audio = recognizer.listen(source)
        print("Done recording")

    captchasolve = ''

    try:
        print("Recognizing the text")
        captchasolve = recognizer.recognize_google(
                recorded_audio, 
                language="en-US"
            )
        print(captchasolve)

    except Exception as ex:
        print(ex)
        raise Exception("Recognizing failed")

    driver.execute_script('document.getElementsByClassName("rc-response-input-field")[0].value = arguments[0]', captchasolve)

    save_screenshot("solve.png")

    time.sleep(1.21)

    Wait(driver, 10).until(EC.element_to_be_clickable((By.ID, 'recaptcha-verify-button'))).click()

    driver.switch_to.default_content()

Ответы

▲ 0

можете попробовать пройти в ручную проверку, а затем сохранить куки входа, и отсылать их на сервак вместе с запросом на мейн страницу, тем самым обходя авторизацию получение куков

pickle.dump(driver.get_cookies(), open("cookies", "wb"))

скачивание и заливка куков

for cookies in pickle.load(open("cookies", "rb")):
    driver.add_cookie(cookies)

для альтернативы могу предложить эту статью, тут подробно рассказано как обойти recapcha