[bug]:Fedora DNF 代理被 Cloudflare Bot 拦截(官方实例同样存在) #28

Closed
opened 2026-10-07 21:22:23 +00:00 by xixu-me · 0 comments
Owner

问题描述

Xget 在代理 dl.fedoraproject.org(Fedora DNF 包管理器的上游)时,返回的不是 XML 元数据,而是 Cloudflare 的 "Are you a bot?" 验证 HTML 页面。

官方实例 xget.xi-xu.me 同样存在此问题,我已实测验证。

复现步骤

# Xget 代理返回 bot 验证页面(5263 字节 HTML)
curl -s https://xget.johntime.top/fedora/pub/fedora/linux/releases/43/Everything/x86_64/os/repodata/repomd.xml | head -5
# → <!doctype html><html lang="en"><head><title>Making sure you're not a bot!</title>...

# 官方实例同样(16 字节,bot 页面)
curl -s https://xget.xi-xu.me/fedora/pub/fedora/linux/releases/43/Everything/x86_64/os/repodata/repomd.xml | head -5  
# → <!doctype html>...同样的 bot 页面

# 直连 dl.fedoraproject.org 正常(5966 字节 XML)
curl -s https://dl.fedoraproject.org/pub/fedora/linux/releases/43/Everything/x86_64/os/repodata/repomd.xml | head -5
# → <?xml version="1.0" encoding="UTF-8"?><repomd ...(正常)

根因分析

dl.fedoraproject.org 也使用了 Cloudflare 的 Bot Management 保护。Xget 部署在 Cloudflare Workers 上,Workers 的出站 fetch() 请求会被目标站的 Cloudflare Bot 检测识别为自动化流量,从而触发 Challenge 页面。这是 CF Workers → CF 保护站点之间的架构限制。

环境信息

  • Xget 自部署:xget.johntime.top(Cloudflare Workers)
  • 官方实例:xget.xi-xu.me
  • 目标上游:dl.fedoraproject.org (Fedora 43)
  • 已验证其他平台(GitHub、npm、PyPI、Go、crates.io)自部署加速正常

问题

  1. 这是已知限制吗?
  2. 是否有配置项可以自定义上游请求的 User-Agent(如设置 libdnf/0.73.0)来绕过 bot 检测?
  3. 或者是否有其他推荐的处理方式?

GitHub 来源:https://github.com/xixu-me/xget/issues/271
作者:johntime2005 · 创建时间:2026-05-09T11:22:20Z

## 问题描述 Xget 在代理 `dl.fedoraproject.org`(Fedora DNF 包管理器的上游)时,返回的不是 XML 元数据,而是 Cloudflare 的 `"Are you a bot?"` 验证 HTML 页面。 **官方实例 `xget.xi-xu.me` 同样存在此问题**,我已实测验证。 ## 复现步骤 ```bash # Xget 代理返回 bot 验证页面(5263 字节 HTML) curl -s https://xget.johntime.top/fedora/pub/fedora/linux/releases/43/Everything/x86_64/os/repodata/repomd.xml | head -5 # → <!doctype html><html lang="en"><head><title>Making sure you're not a bot!</title>... # 官方实例同样(16 字节,bot 页面) curl -s https://xget.xi-xu.me/fedora/pub/fedora/linux/releases/43/Everything/x86_64/os/repodata/repomd.xml | head -5 # → <!doctype html>...同样的 bot 页面 # 直连 dl.fedoraproject.org 正常(5966 字节 XML) curl -s https://dl.fedoraproject.org/pub/fedora/linux/releases/43/Everything/x86_64/os/repodata/repomd.xml | head -5 # → <?xml version="1.0" encoding="UTF-8"?><repomd ...(正常) ``` ## 根因分析 `dl.fedoraproject.org` 也使用了 Cloudflare 的 Bot Management 保护。Xget 部署在 Cloudflare Workers 上,Workers 的出站 `fetch()` 请求会被目标站的 Cloudflare Bot 检测识别为自动化流量,从而触发 Challenge 页面。这是 CF Workers → CF 保护站点之间的架构限制。 ## 环境信息 - Xget 自部署:`xget.johntime.top`(Cloudflare Workers) - 官方实例:`xget.xi-xu.me` - 目标上游:`dl.fedoraproject.org` (Fedora 43) - 已验证其他平台(GitHub、npm、PyPI、Go、crates.io)自部署加速正常 ## 问题 1. 这是已知限制吗? 2. 是否有配置项可以自定义上游请求的 User-Agent(如设置 `libdnf/0.73.0`)来绕过 bot 检测? 3. 或者是否有其他推荐的处理方式? --- GitHub 来源:https://github.com/xixu-me/xget/issues/271 作者:johntime2005 · 创建时间:2026-05-09T11:22:20Z <!-- github-archive:4412338681 -->
Sign in to join this conversation.