[Python] Acessar o site da sefaz (CTE), tentando quebrar o captcha

Discussão em 'Python' iniciado por Stack, Julho 24, 2025.

  1. Stack

    Stack Membro Participativo

    Estou tentando desenvolver um tipo de webscraping pra coletar informações se uma CTe esta cancelada ou não. Consegui fazer com pyautogui contudo, não consegui iterar sobre as chaves de acesso das CTEs que preciso. Então comecei de novo com a selenium (queria saber qual seria a ferramenta mais ideal) Esta assim por enquanto:

    import time
    from selenium import webdriver
    from selenium.webdriver.common.by import By
    from selenium.webdriver.support.ui import WebDriverWait
    from selenium.webdriver.support import expected_conditions as EC
    from openpyxl import load_workbook
    import pyautogui
    from webdriver_manager.chrome import ChromeDriverManager
    captcha=583, 835
    from anticaptchaofficial.recaptchav2proxyless import *```

    def consulta_cte_excel(excel_path):
    # 1. Lê a chave da célula A1
    wb = load_workbook(excel_path)
    ws = wb.active
    chave = ws['A1'].value.strip()

    # 2. Abre navegador e acessa a página de consulta
    driver = webdriver.Chrome()
    driver.maximize_window()
    wait = WebDriverWait(driver, 30)
    driver.get("https://www.cte.fazenda.gov.br/portal/consultaRecaptcha.aspx?tipoConsulta=resumo&tipoConteudo=cktLvUUKqh0=")

    # 3. Cola a chave no campo correspondente
    try:
    campo_chave = wait.until(EC.presence_of_element_located((By.ID, "ctl00_ContentPlaceHolder1_txtChaveAcessoResumo")))
    campo_chave.clear()
    campo_chave.send_keys(chave)
    except:
    print("Não consegui localizar o campo de chave!")
    return
    #FZR CAPTCha
    # 4. Espera manual para resolver o captcha
    print("Esperando o captcha aparecer na tela...")

    start = time.time()
    timeout = 30
    nota = pyautogui.locateCenterOnScreen('ValidaCte/chave.png', confidence=0.9)
    while nota is None and (time.time() - start) < timeout:
    nota = pyautogui.locateCenterOnScreen('ValidaCte/chave.png', confidence=0.6)

    if nota:
    pyautogui.moveTo(nota)
    print("Captcha localizado!")
    else:
    print("Captcha não localizado!")
    driver.quit()
    return


    # 5. Clica no botão confirmar
    botao_continuar = wait.until(EC.element_to_be_clickable((By.XPATH, "//input[@type='submit' and @value='Continuar']")))
    botao_continuar.click()

    Continue reading...

Compartilhe esta Página