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

使用w3m查询dle.rae.es西班牙词典遇Cloudflare验证报错如何解决

你遇到的是Cloudflare浏览器安全验证拦截,该站点要求客户端支持JavaScript执行并完成校验后才能返回页面内容。w3m作为纯文本浏览器默认不支持JS运行,因此无法通过验证,仅修改UA、手动传递cookie无法绕过这类需要JS执行的校验逻辑。

可行解决方案

方案1:使用Cloudflare专用绕过工具重构查询脚本(推荐)

该方案适配性强,修改后可以直接沿用你之前的defes 单词的使用习惯:

  1. 首先安装依赖组件:
pip3 install cfscrape beautifulsoup4

cfscrape是专门针对Cloudflare五秒盾的绕过工具,可自动完成JS验证、获取有效会话凭证;beautifulsoup4用于过滤页面冗余内容,只输出你需要的单词释义。
2. 替换原有defes脚本的全部内容为:

#!/bin/bash
# 西班牙皇家语言学院词典终端查询工具
if [ -z "$1" ]; then
    echo "用法:defes <待查询的西班牙语单词>"
    exit 1
fi

python3 - << EOF
import cfscrape
from bs4 import BeautifulSoup

# 创建绕过Cloudflare验证的请求对象
scraper = cfscrape.create_scraper()
resp = scraper.get(f"https://dle.rae.es/$1")

if resp.status_code != 200:
    print(f"查询失败,请求状态码:{resp.status_code}")
    exit()

# 解析页面,只提取释义内容
soup = BeautifulSoup(resp.text, "html.parser")
for entry in soup.find_all("div", class_="entry"):
    print(entry.get_text("\n", strip=True))
    print("-" * 60)
EOF
  1. 给修改后的脚本添加执行权限:
chmod +x /path/to/defes

配置完成后即可直接使用defes casa这类命令查询单词,释义会直接格式化输出到终端。

如果后续站点升级验证规则导致cfscrape失效,可以替换为Playwright无头浏览器工具,它支持完整的JavaScript执行能力,能够模拟普通浏览器的全部交互逻辑完成验证,适配性更强。

方案2:复用本地浏览器的验证会话(适合需要保留w3m使用习惯的场景)

你可以先在本地的普通桌面浏览器(Chrome、Firefox等)中访问一次dle.rae.es,手动完成验证后,用浏览器开发者工具导出该站点的有效cookie,将cookie内容按照w3m的格式规范写入~/.w3m/cookie文件,之后调用w3m时携带该cookie即可绕过验证。需要注意Cloudflare的会话cookie存在有效期,过期后需要重新导出替换。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 19:06:06