You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Selenium+Python访问巴西税局网站Cookie加载异常求助

解决Selenium访问CNPJ查询页面的Cookie验证失败问题

问题核心

使用Selenium自动填充CNPJ并提交时,网站提示Cookie或hCaptcha验证失败,但手动操作正常。根源在于网站反爬机制会检测自动化工具标识,且原代码的元素定位过于脆弱,操作时机不合理。

修改后的代码

import time
from selenium.webdriver.common.by import By
from selenium import webdriver
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC

chrome_options = webdriver.ChromeOptions()
# 基础配置:禁用通知和信息栏
chrome_options.add_argument("--disable-notifications")
chrome_options.add_argument("--disable-infobars")
# 反检测配置:隐藏Selenium自动化标识
chrome_options.add_experimental_option("excludeSwitches", ["enable-automation"])
chrome_options.add_experimental_option('useAutomationExtension', False)
# 最大化窗口,避免元素因视图隐藏无法定位
chrome_options.add_argument("--start-maximized")

driver = webdriver.Chrome(options=chrome_options)

driver.get("https://solucoes.receita.fazenda.gov.br/Servicos/cnpjreva/cnpjreva_solicitacao.asp")

# 先等待页面核心元素加载完成,再进入验证码等待阶段
try:
    WebDriverWait(driver, 10).until(
        EC.presence_of_element_located((By.NAME, "cnpj"))
    )
except:
    print("页面加载超时,程序退出")
    driver.quit()

# 提示用户手动填写验证码
print("请在40秒内完成验证码填写...")
time.sleep(40)

cnpj_code = "33.224.254/0001-42"

# 显式等待输入框可交互,用name属性定位更稳定
campo_texto = WebDriverWait(driver, 10).until(
    EC.element_to_be_clickable((By.NAME, "cnpj"))
)
campo_texto.clear()  # 清空输入框避免残留内容
campo_texto.send_keys(cnpj_code)

# 定位提交按钮,用相对XPATH匹配按钮特征
enter_button = WebDriverWait(driver, 10).until(
    EC.element_to_be_clickable((By.XPATH, "//button[contains(@class, 'btn-primary') and contains(text(), 'Consultar')]"))
)
enter_button.click()

# 等待结果页面加载,验证是否跳转成功
try:
    WebDriverWait(driver, 15).until(
        EC.presence_of_element_located((By.ID, "resultado"))
    )
    print("查询成功,已进入结果页面")
except:
    print("跳转结果页面超时,请检查页面提示")

time.sleep(5)
driver.quit()

关键修改说明

  1. 反检测优化:禁用Selenium自动化标识,让浏览器环境更接近真实用户,避免网站拒绝Cookie验证。
  2. 稳定元素定位:替换冗长的绝对XPATH为name属性和相对XPATH,避免页面结构变化导致定位失败。
  3. 显式等待替代固定延迟:使用WebDriverWait确保元素加载完成后再操作,减少因页面加载延迟引发的问题。
  4. 输入预处理:填充CNPJ前清空输入框,避免残留内容干扰提交逻辑。

额外解决方案(若仍有问题)

如果上述修改后仍提示Cookie错误,可复用本地Chrome的用户会话,确保Cookie上下文与手动操作完全一致:

# 在chrome_options中添加以下配置,替换为你的Chrome用户数据路径
# Windows示例:C:\Users\[你的用户名]\AppData\Local\Google\Chrome\User Data
# Linux示例:~/.config/google-chrome/
chrome_options.add_argument(r"--user-data-dir=C:\Users\YourUsername\AppData\Local\Google\Chrome\User Data")
chrome_options.add_argument("--profile-directory=Default")  # 使用默认配置文件

内容的提问来源于stack exchange,提问作者Paulo Silva

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.13 14:47:42