@rsytrade

Selenium, как заполнить форму и не попасть в бан?

Есть регистрационная форма на сайте (с инпутами и капчей), пытаюсь заполнить ее с использованием Selenium таким образом:
username_input = driver.find_element_by_xpath('/html/body/section[2]/div/div/div/div/form/div[1]/div/input')
    username_input.send_keys(name)
    time.sleep(random.randrange(2, 4))

    email_input = driver.find_element_by_xpath('/html/body/section[2]/div/div/div/div/form/div[2]/div/input')
    email_input.send_keys(mail)
    time.sleep(random.randrange(2, 3))

    password_input = driver.find_element_by_xpath('/html/body/section[2]/div/div/div/div/form/div[3]/div/input')
    password_input.send_keys(password)
    time.sleep(random.randrange(1, 2))

    re_password_input = driver.find_element_by_xpath('/html/body/section[2]/div/div/div/div/form/div[4]/div/input')
    re_password_input.send_keys(password)
    time.sleep(random.randrange(1, 2))

    # Переключение на фрейм с капчей
    driver.switch_to.frame(driver.find_element_by_id('mtcaptcha-iframe-1'))
    # WebDriverWait(driver, 10).until(EC.frame_to_be_available_and_switch_to_it(By.ID, "mtcaptcha-iframe-1"))
    driver.find_element_by_id("mtcap-inputtext-1").send_keys(captcha)
    time.sleep(random.randrange(1, 4))

    # Переключение в родительский фрейм
    driver.switch_to.default_content()

    # скролл
    driver.execute_script("window.scrollTo(0, 500)")
    time.sleep(random.randrange(15, 17))
    
     # кнопка регистрации
driver.find_element_by_xpath('/html/body/section[2]/div/div/div/div/form/div[7]/div/input').click()
    time.sleep(random.randrange(33, 44))


После автонажатия кнопки регистрации сайт выдает что "ваш адрес заблокирован"

При этом, если я запускаю скрипт без заполнения капчи:
username_input = driver.find_element_by_xpath('/html/body/section[2]/div/div/div/div/form/div[1]/div/input')
    username_input.send_keys(name)
    time.sleep(random.randrange(2, 4))

    email_input = driver.find_element_by_xpath('/html/body/section[2]/div/div/div/div/form/div[2]/div/input')
    email_input.send_keys(mail)
    time.sleep(random.randrange(2, 3))

    password_input = driver.find_element_by_xpath('/html/body/section[2]/div/div/div/div/form/div[3]/div/input')
    password_input.send_keys(password)
    time.sleep(random.randrange(1, 2))

    re_password_input = driver.find_element_by_xpath('/html/body/section[2]/div/div/div/div/form/div[4]/div/input')
    re_password_input.send_keys(password)
    

    time.sleep(random.randrange(10, 15))

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

В чем может быть проблема? как заполнить автоматом весь процесс с selenium? что можно попробовать еще???
  • Вопрос задан
  • 292 просмотра
Пригласить эксперта
Ответы на вопрос 1
@Ivannik20
из города Н.
Трудно сказать, почему не ест капчу, но я бы для начала заменил абсолютный пути до тэгов.
Например через xpath(div[@class='']) и далее по аналогии, так как структура DOM может поменяться.
Так же sleep лучше заменить на WebDriverWeb и until, больше шансов, что будут разные периоды ожидания.
А как/чем вы получаете значение capcha ? может имеет смысл вводить капчу посимвольно, с задержками
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы