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

Selenium登录prenotami.esteri.it跳转至Unavailable问题求助

解决prenotami.esteri.it登录时的reCAPTCHA及Unavailable页面问题

问题核心

你遇到的Unavailable页面本质是网站反爬机制触发——尤其是reCAPTCHA验证未通过,不管用Selenium还是直接POST请求,都因为缺少有效的reCAPTCHA验证令牌被判定为机器人。


解决方案1:修复Selenium登录脚本(模拟真实用户+手动验证)

网站升级了反爬检测,原来的Selenium配置会被识别为自动化工具,同时reCAPTCHA未完成验证就提交导致失败。修改脚本如下:

from selenium import webdriver
from selenium.webdriver.chrome.options import Options
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from webdriver_manager.chrome import ChromeDriverManager
import time

website = 'https://prenotami.esteri.it/'

options = Options()
# 核心:隐藏Selenium自动化标识,避免被检测
options.add_argument('--disable-blink-features=AutomationControlled')
# 设置真实浏览器UA,模拟普通用户
options.add_argument('--user-agent="Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/118.0.0.0 Safari/537.36"')
options.add_argument('--start-maximized')
options.add_argument('--disable-dev-shm-usage')
options.add_argument('--disable-gpu')

driver = webdriver.Chrome(ChromeDriverManager().install(), options=options)
driver.get(website)

# 用显式等待替代固定sleep,更稳定
WebDriverWait(driver, 10).until(EC.presence_of_element_located((By.ID, 'login-email'))).send_keys('USERNAME')
time.sleep(2)
WebDriverWait(driver, 10).until(EC.presence_of_element_located((By.ID, 'login-password'))).send_keys('PASSWORD')
time.sleep(2)

# 等待用户手动完成reCAPTCHA验证(自动破解难度极高,手动是最可靠的合规方案)
input("请完成页面上的reCAPTCHA验证后按回车继续...")

# 提交登录
WebDriverWait(driver, 10).until(EC.element_to_be_clickable((By.CLASS_NAME, 'button.primary.g-recaptcha'))).click()
time.sleep(10)

关键说明:

  • --disable-blink-features=AutomationControlled是避免被网站检测为Selenium自动化的核心参数;
  • 手动完成reCAPTCHA是当前最可靠的方案,因为reCAPTCHA v2的自动破解服务存在合规风险,且网站可能随时升级验证逻辑。

解决方案2:修复Requests登录请求(补充必要参数)

直接POST请求失败的原因是缺少两个关键参数:__RequestVerificationToken(防CSRF令牌)和g-recaptcha-response(reCAPTCHA验证令牌)。修正代码如下:

import requests
from bs4 import BeautifulSoup

with requests.session() as session:
    # 先获取登录页面,拿到Cookie和防CSRF令牌
    login_page_res = session.get('https://prenotami.esteri.it/')
    soup = BeautifulSoup(login_page_res.text, 'html.parser')
    csrf_token = soup.find('input', {'name': '__RequestVerificationToken'}).get('value')
    
    # ********** 这里需要获取有效的g-recaptcha-response令牌 **********
    # 可以手动完成验证后从浏览器开发者工具中提取,或使用第三方破解服务
    recaptcha_token = "替换为实际的g-recaptcha-response值"
    
    # 构造完整登录数据
    login_data = {
        'Email': 'USER',
        'Password': 'PASSWORD',
        '__RequestVerificationToken': csrf_token,
        'g-recaptcha-response': recaptcha_token
    }
    
    # 提交登录请求
    login_res = session.post("https://prenotami.esteri.it/Home/Login", data=login_data)
    print(login_res.text)

关键说明:

  • 没有g-recaptcha-response令牌,服务器会直接返回Unavailable页面;
  • 若要自动化获取该令牌,需对接第三方reCAPTCHA破解服务,但需注意网站的使用条款,避免违规。

额外注意事项

  • 避免频繁发送请求,防止IP被网站封禁;
  • 保持ChromeDriver与Chrome浏览器版本一致,避免兼容性问题;
  • 尽量用显式等待替代time.sleep(),提升脚本稳定性。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.28 14:32:15