关于 proxy-scraper
proxy-scraper 收集并检测公开的 HTTP、SOCKS4 和 SOCKS5 代理,每项检测结果均可查看。其 MCP 服务允许 AI Agent 获取代理并通过代理抓取网页,也可直接使用 CLI 和 Python API。
主要功能
- 01从公开列表收集代理
- 02检测代理并呈现各项结果
- 03诊断单个代理
- 04运行本地轮换代理服务
- 05通过所选代理抓取网页
适用场景
- 01按协议或国家筛选代理
- 02从本地网络重新检测代理
- 03诊断代理失效原因
- 04通过代理读取公开网页
MCP 相关
MCP 服务提供工具,可获取已发布列表中的代理、从调用方网络检测代理,以及通过代理抓取网页。服务会拒绝本地和私有地址。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
工具
3收录的工具列表 · 更新于 4 天前
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| limit | integer | 否 | 返回数量(按速度从快到慢) |
| protocol | enum | 否 | 代理协议。socks5 适用于任何 TCP 流量,http 是大多数 HTTP 客户端所需的协议。any | http | socks4 | socks5 |
| works_on | array | 否 | 仅返回最近一次每小时检查中成功访问以下所有站点的代理(大多数免费代理会在这些站点遇到验证码或 403) |
| countries | array | 否 | 出口 IP 的两字母国家/地区代码,例如 ['DE', 'NL']。留空表示任意国家/地区。 |
| elite_only | boolean | 否 | 仅返回目标无法识别为代理的代理 |
| https_only | boolean | 否 | 仅返回通过已验证 TLS 隧道传输 HTTPS 的代理。访问 https:// 网站时需要。 |
| stable_only | boolean | 否 | 仅返回已稳定工作 24 小时或更久的代理 |
| max_latency_ms | integer | 否 | 最大响应时间,0 = 任意 |
| min_speed_kbps | integer | 否 | 仅返回最近一次每小时检查中下载速度至少达到此 KiB/s 值的代理,例如,加载实际网页时可设为 300 |
| exclude_datacenter | boolean | 否 | 跳过位于数据中心的出口节点(许多网站会屏蔽这些节点) |
| min_uptime_percent | integer | 否 | 仅返回最近 7 天每小时检查的通过率至少达到此比例的代理,例如,最可靠的代理可设为 90 |
| exclude_blocklisted | boolean | 否 | 跳过 SpamCop 屏蔽列表中的出口节点(减少验证码) |
详细介绍
English · 简体中文 · Español · Deutsch · Русский · Português (Brasil) · Français
安装 · 实时列表 · 检查状态 · 面向 AI Agent · 代理服务 · 示例 · 选项 · 常见问题 · 所有文档
可查看的代理检查结果:哪些通过了、哪些失败了,以及检查时间。 proxy-scraper 从数百个列表中收集公开的 HTTP、SOCKS4 和 SOCKS5 代理,对每个代理最多执行四项检查,并保留所列代理的每项检查结果(对于其余代理,则统计每项检查的结束状态),因此“可用”是可以亲自查看的结果,而不是一个只能盲目信任的标签。
https://github.com/user-attachments/assets/b99c1d8f-5bce-4a52-a8a9-b9c2c726301b
21 秒 · 真实界面、示例数字、文档中的 IP 地址 · mp4
试用——无需安装,uvx 随 uv 一起提供(pipx run 的效果相同):
uvx proxy-scraper-cli --pick 3 --verify # up to 3 proxies from the hourly list that pass right now, from your network
uvx proxy-scraper-cli --diagnose socks5://HOST:PORT # one proxy, check by check: what it did and what it didn't
该软件包在 PyPI 上名为 proxy-scraper-cli(未加修饰的名称已被占用)。安装后,命令为 proxy-scraper。--verify 和 --diagnose 需要 1.30 或更高版本。
获取代理的三种方式,以及每种方式中“已检查”的含义:
| 命令 | 代理来源 | 检查时间 | 耗时 |
|---|---|---|---|
proxy-scraper --pick 5 | 已发布的列表 | 列表构建时由 GitHub 的服务器检查,大约每小时一次 | 不到一秒 |
proxy-scraper --pick 5 --verify | 已发布的列表 | 现在,由你的网络检查 | 最多数秒至一分半 |
proxy-scraper -y | 工具所知的所有列表 | 现在,由你的网络检查 | 数分钟(每小时运行时约三分钟) |
你将获得
- 每项检查都有可读的结果。 终端、JSON 和 Python 中都会显示
passed、failed、unavailable或skipped,并附带原因代码、目标和时间。未运行的检查绝不会显示为通过,而检查目标不可用也不会导致针对该目标检查的代理被判定为失败。→ 检查状态 - 在需要时保持新鲜。
--pick --verify会通过你自己的网络检查少量代理,通常只需数秒。--recheck对你自己的列表执行相同操作,--diagnose则会告诉你某个代理无法使用的原因。 - 不止是列表。 轮换式本地代理服务器、Python API、面向 AI Agent 的 MCP 服务、Docker,以及可供 curl、proxychains、Clash 和 sing-box 使用的导出结果。
它做不到什么。 免费代理由陌生人运行,而一个小时的列表中,隔天仍在列表里的只有约四分之一。一次通过只是来自一个网络、针对测试目标的一次测量;它不能保证代理在下一个小时或你关心的网站上仍可用。HTTPS 检查是与一个测试主机建立经过验证的 TLS 连接,并非安全评级。免费代理可用于公共数据和测试,但绝不可用于登录、支付或任何个人事务。→ 数据说明了什么,又没有说明什么 · 免费代理为何会失效 · 对比情况 · 谁在运行免费代理
只想要列表? 你不需要这个工具:free-proxy-list 按协议和国家提供纯文本文件,并大约每小时重新构建一次。也可以直接从这里获取:all.txt · http.txt · socks4.txt · socks5.txt · proxies.json · 更多格式
使用方: 每小时更新的列表是 monosans/proxy-scraper-checker 和 gfpcom/free-proxy-list 的内置来源。
安装
使用 pipx(推荐——会在独立环境中提供 proxy-scraper 命令):
pipx install proxy-scraper-cli
proxy-scraper
在 macOS 和 Linux 上使用 Homebrew:
brew install maximilianfeix/tap/proxy-scraper
软件包配方会在每次发布后约一天内更新。
Docker、pip、更快的事件循环、最新的 main、制表符补全,以及状态和结果的存储位置:其他所有安装方式。
不带参数启动时,向导会询问你要查找什么——选择预设(查找所有内容、浏览、最大匿名性、快速、现在找一些、重新检查、立即启动代理服务器,……),或逐步设置:向导及其预设。
按键:↑↓ 选择 · Space 切换 · 1–9 跳转 · Enter 下一步 · Esc 返回 · q 退出。在脚本和 cron 作业中不会显示向导——请传入选项或 -y。
实时代理列表
不想自己扫描?GitHub Actions 大约每小时运行一次工具,并将结果发布到 proxy-list 分支——每个条目都在上次运行中通过了首次请求、第二次请求和内容检查(HTTPS 测试会按条目记录,但不是必需项),并按优先级排序:最前面是速度快且可能仍在运行的代理。
只想要列表? 列表也托管在专属仓库 maximilianfeix/free-proxy-list 中——按协议、国家和网站分别提供列表,每小时更新一次,首页显示上次运行的数量。关注或加星标,方便随时查阅。其他工具也会获取这些列表:monosans/proxy-scraper-checker 和 gfpcom/free-proxy-list 都将其作为内置来源。
→ 在网站上浏览——搜索并按类型、国家、HTTPS、提供方和延迟筛选;查看每个代理已在列表中保留多久,以及本周有多少次运行发现了它;复制或下载你需要的代理。
每种协议和每个国家也都有专属页面,可直接下载纯文本列表,例如 SOCKS5 或 德国(country/de/proxies.txt)。
| 列表 | 格式 | 链接 |
|---|---|---|
| 全部 | socks5://1.2.3.4:1080 | all.txt |
| HTTP · SOCKS4 · SOCKS5 | 1.2.3.4:8080 | http.txt · socks4.txt · socks5.txt |
| 仅支持 HTTPS | type://ip:port | https.txt |
| 仅匿名度高的代理 | type://ip:port | elite.txt |
| 可访问 Google · Reddit · Amazon · Instagram · TikTok · Discord(上次运行中,一次测试请求获取到了正常页面) | type://ip:port | google.txt · reddit.txt · amazon.txt · instagram.txt · tiktok.txt · discord.txt |
| 稳定代理,本周运行中 90 % 以上的时间都在列表中 | type://ip:port | stable.txt |
| 包含所有详细信息 | 延迟、国家、HTTPS、匿名性、出口 IP、正常运行时间、网站 | proxies.json · proxies.csv |
curl -s https://raw.githubusercontent.com/maximilianfeix/proxy-scraper/proxy-list/socks5.txt | head
来源:哪些免费代理列表真正有效 对每小时运行中使用的所有来源进行排名——每个来源列出了多少个代理、其中多少个通过了所有检查,以及通过率。数据也可通过 sources.json 获取。
长期归档: 每天首次运行生成的 proxies.json 都会作为当年发行版的 gzip 压缩资源永久保留,例如 snapshots-2026 中的 proxies-2026-09-28.json.gz 等,供任何想查看数周或数月内免费代理情况的人使用。
每个文件也都托管在 GitHub Pages 上。它位于 CDN 后面,不像 raw.githubusercontent 那样受速率限制,还会发送 CORS 标头,因此可直接在浏览器中使用:https://proxy-scraper.de/socks5.txt。jsDelivr 也能用,但可能会落后几小时。
也可以让工具从该列表开始:proxy-scraper --recheck live 会下载列表,并从你的网络重新检查一遍——不到一分钟,而不是完整扫描。从你的网络仍然可用的代理数量与列表本身的统计结果可能相差很大,这正是重新检查的意义所在。添加 --serve,结果就会是一个轮换代理。
检查状态
每次代理检查最终都会得到四种状态之一。它们会出现在 proxies.json、CSV、--pick --json、--diagnose、Python API(result.checks)和 MCP 结果中。
| 状态 | 含义 |
|---|---|
passed | 检查已运行,且代理完成了要求的操作。 |
failed | 检查已运行,目标正常,但代理未能完成要求的操作。 |
unavailable | 检查无法运行,或无法说明代理的情况:目标直接访问时也没有响应、没有可供比较的参考对象,或本机的 socket 已耗尽。 |
skipped | 有意跳过:使用了 --fast、某个筛选条件已排除该代理,或之前的检查已失败。 |
由此可得出两条规则:
- 未运行的检查绝不会是
passed。 在 1.30 之前,如果第二个目标无法访问,运行时会将每个代理都视为已确认;而找不到参考页面时,则会被视为“内容未变化”。 - 检查目标宕机时,不会导致针对该目标检查的代理失败。 如果第二个请求、返回不同页面的内容请求或 HTTPS 测试失败,工具会直接请求目标:无论期间有多少代理检查失败,每 3 秒最多请求一次;如果得到“宕机”答复,该结果会复用 10 秒。如果目标没有响应,该代理的检查状态就是
unavailable,而不是failed。对于扫描中的第一个请求,处理方式不同:工具会监控目标,切换到另一个目标,并重新检查受影响的代理。--diagnose和--pick --verify没有这类监控机制,会像后续检查一样直接请求目标。有两种情况不会触发此类请求,因为目标确实有响应:第二个网站检测到不同的出口 IP,以及一开始就无法连接的代理。
有关检查、每种 passed 状态的含义及其不代表的内容、字段和所有原因代码,请参阅:docs/check-states.md。
面向 AI Agent(MCP)
proxy-scraper-mcp 是一个 MCP 服务:Claude Code、Claude Desktop、Cursor、VS Code、Codex 和其他任何 MCP 客户端都可以请求可用代理,并通过这些代理加载网页。
| 工具 | 功能 |
|---|---|
get_proxies | 获取每小时更新的列表中的代理,这些代理已在最近一次运行时完成检查;可按协议、国家/地区、HTTPS、精英代理、非数据中心代理、不在屏蔽名单中、稳定性、运行时间、延迟,以及能否访问 Google/Reddit/Amazon 进行筛选 |
check_proxies | 从你自己的网络检查代理,确保它们在你的代码运行环境中可用(30–90 秒,并报告进度) |
fetch_url | 通过已检查列表中的代理加载网页;代理失败时会自动切换,并返回易读文本——仅通过通过 TLS 测试的代理访问 HTTPS |
可以向你的 Agent 提出这些请求:“从英国的视角加载 bbc.com/news”、“给我 5 个来自德国、非数据中心的 SOCKS5 代理”、“检查这些网站中哪些会屏蔽免费代理”。
需要 uv——如果你的 Python 版本低于 3.10,它会自行获取合适的 Python。Claude Code:
claude mcp add proxy-scraper -- uvx --python ">=3.10" --from "proxy-scraper-cli[mcp]" proxy-scraper-mcp
Claude Desktop、Cursor 和大多数其他客户端——将以下内容添加到 MCP 配置中(Claude Desktop:Settings → Developer → Edit Config,Cursor:~/.cursor/mcp.json):
{
"mcpServers": {
"proxy-scraper": {
"command": "uvx",
"args": ["--python", ">=3.10", "--from", "proxy-scraper-cli[mcp]", "proxy-scraper-mcp"]
}
}
}
VS Code、Codex、Docker 或不使用 uv:查看适用于其他所有客户端的设置说明。它也已收录在 官方 MCP 注册表 中,名称为 io.github.maximilianfeix/proxy-scraper,因此能够浏览注册表的客户端可以直接从那里安装。
该服务会向 Agent 说明与这里相同的注意事项:免费代理由陌生人运营,因此不要通过它们传输登录信息、Cookie 或个人数据。系统会拒绝本地和私有地址;结果会保存到 proxy-scraper 的数据文件夹,而不是你正在处理的项目中。
示例
# 50 proxies that can do HTTPS – then stop
proxy-scraper --want 50 --https-only
# only Germany, Austria and Switzerland, the 20,000 most promising candidates
proxy-scraper --country DE,AT,CH -l 20000
# fast elite SOCKS5 proxies
proxy-scraper --types socks5 --anonymity elite --max-latency 1500
# 20 proxies that really reach Google AND Discord
proxy-scraper --target google.com --target discord.com --want 20
# only recheck the last hits (plus history) – takes seconds
proxy-scraper --recheck
# wizard with defaults – it keeps what you already passed
proxy-scraper -i --country DE
# which sources deliver the most?
proxy-scraper --list-sources
从克隆的代码库运行?将 proxy-scraper 替换为 python3 proxy_scraper.py。
在 Python 中使用
from proxyscraper import check_proxies, find_proxies
if __name__ == "__main__": # needed on macOS/Windows, the parser uses a process pool
for p in find_proxies(want=20, https=True, countries=["DE", "NL"], no_datacenter=True):
print(p.url, p.latency, p.country, p.org)
alive = check_proxies(["socks5://1.2.3.4:1080", "5.6.7.8:3128"]) # your own list
运行效果与命令行相同——包括数据源、学习过程、每项检查和结果文件——只是不会输出到终端。每个结果都包含 url、latency、exit_ip、https、anonymity、country、asn、org 和 hosting。这两个函数都提供异步版本(find_proxies_async、check_proxies_async)。
不需要重新扫描?live_proxies 会直接使用实时列表,不执行检查,只下载一次,大约一秒即可完成:
import itertools, requests
from proxyscraper import live_proxies
proxies = live_proxies(types=["socks5"], https=True, min_uptime=90) # the reliable ones this week
pool = itertools.cycle(p.url for p in proxies)
r = requests.get("https://api.ipify.org", proxies={"https": next(pool)}, timeout=15) # pip install "requests[socks]"
筛选条件与 find_proxies 相同,另外还支持 min_uptime、works_on(["google"]、"reddit"、"amazon"、"instagram"、"tiktok"、"discord")和 limit。每个结果还包含 uptime_24h、uptime_7d、first_seen、up_for_hours 和 sites。
或者让库来处理重试:ProxyRotator 会通过列表中的代理加载 URL,代理失败时自动切换到下一个代理;proxy_url() 则会为 requests、httpx、Playwright 或 Scrapy 提供一个本地地址,在后台轮换代理——参阅 Python API:轮换使用列表中的代理。
轮换代理服务
代理列表很方便,但通常你只想输入 一个 代理地址,并让它背后的服务不断尝试:
proxy-scraper --recheck --serve # recheck the last hits, then go – takes seconds
curl -x http://127.0.0.1:8899 https://api.ipify.org # a different IP every time
curl -x socks5h://127.0.0.1:8899 https://api.ipify.org # SOCKS5 on the same port
curl -x http://country-de:[email protected]:8899 https://api.ipify.org # only German exits
curl -x http://session-cart42:[email protected]:8899 https://shop.example # same proxy for this session
curl http://127.0.0.1:8899/__proxy-scraper/status # pool and counters as JSON
curl http://127.0.0.1:8899/__proxy-scraper/metrics # the same for Prometheus/Grafana
和商业轮换代理一样,用户名包含你需要的信息:country-XX、type-http|socks4|socks5 和 session-NAME,可以组合使用(country-us-type-socks5-session-a)。它支持 HTTP(Proxy-Authorization)和 SOCKS5(用户名/密码身份验证)。默认情况下,密码会被忽略,服务只监听 127.0.0.1。
如需从其他机器访问,请设置密码——每个客户端都必须通过 HTTP 或 SOCKS5 发送密码,状态页面也需要通过 Basic 身份验证:
export PROXY_SCRAPER_SERVE_PASSWORD=$(openssl rand -hex 16) # the env var keeps it out of `ps`
proxy-scraper --recheck --serve --serve-host 0.0.0.0
curl -x "http://country-de:$PROXY_SCRAPER_SERVE_PASSWORD@your-server:8899" https://api.ipify.org
未设置密码时,服务不会在 127.0.0.1 以外的地址上启动:否则,任何能访问该端口的人都能使用这个开放代理(Docker 发布的端口会绕过 ufw 等主机防火墙)。如果防火墙或 -p 127.0.0.1:… 已阻止其他人访问,请使用 --serve-open 明确告知。现成的 compose.yaml 会在 Docker 中使用实时列表启动服务,并配置密码、健康检查以及存储于卷中的学习状态:将 PROXY_PASSWORD=… 写入 .env,然后运行 docker compose up -d。
轮换策略、粘性会话、故障转移、后台补充和实时仪表板:docs/proxy-server.md。
代理池 API
有些程序需要的是代理地址,而不是代理服务——以便将地址交给浏览器、工作进程或队列。相同端口也会通过普通 HTTP 请求返回代理地址:
curl http://127.0.0.1:8899/get # one proxy as JSON, chosen like a connection would be
curl "http://127.0.0.1:8899/get?country=DE&https=1&format=txt" # → http://203.0.113.7:8080
curl "http://127.0.0.1:8899/all?protocol=socks5&limit=20" # the 20 best SOCKS5 proxies
curl "http://127.0.0.1:8899/report?proxy=203.0.113.7:8080&ok=0" # it failed you – three times and it's out
所有端点、筛选器以及与 jhao104/proxy_pool 的兼容情况:代理池 API。
Discord 和 Telegram 机器人
实时列表也可以直接发送给你:bot/ 是一个 Discord 机器人,会在每次运行后向服务器发布内容——包括最快代理的摘要、按协议整理并以文件形式提供的完整列表,以及 /proxies type:socks5 country:DE https:true 等斜杠命令。邀请机器人后,它会创建自己的只读频道;GitHub Action 则会将它部署到服务器,作为 systemd 服务运行。同一个进程也会通过 Telegram 响应:发送 /proxy de socks5 获取一个代理及其 curl 命令,发送 /proxies 10 us https 获取简短列表。设置方法见 bot/README.md。
文档
本 README 后面原先包含的所有内容现在都有了单独的页面——所有文档:
功能
逐项检查、逐个功能了解工具的作用:工作原理 → 功能。
为什么不直接下载一个列表?
列表只能告诉你它生成时对作者有效的内容。这个工具还能做什么:工作原理 → 为什么不直接下载一个列表? · 比较情况。
工作原理
来源、采集、排序、检查、国家和提供商、阻止列表、学习:docs/how-it-works.md。使用 --source 创建自己的列表:操作指南。
输出
每次运行都会生成自己的文件夹;results/latest.txt 始终指向最新文件夹——目录结构见 docs/options.md。
操作指南
requests、httpx、aiohttp、Scrapy、Selenium、proxychains、Clash / Mihomo、sing-box、PAC、Proxifier、Burp Suite / ZAP / mitmproxy、管道、GitHub 工作流、Windows:docs/recipes.md。
选项
所有选项汇总在一个表格中:docs/options.md。其他内容:proxy-scraper --help
GitHub Actions
用于测试、代码检查、构建每小时列表和发布的工作流:docs/how-it-works.md。在自己的工作流中使用代理:GitHub Action。
常见问题
谁在运营免费代理——你应该使用它们吗? · 几乎什么都无法通过 · Windows · 代理数量少于其他列表 · 登录信息 · 列表有多新 · 是否安全:docs/faq.md。
路线图
接下来要做的内容见未解决的问题——欢迎提出想法和愿望,可以提交问题。Hacktoberfest 期间会有适合新手的问题,并附有入门指引。各版本发布的内容见:docs/roadmap.md。
参与贡献
非常欢迎提交 Bug 报告、新来源和拉取请求——请参阅 CONTRIBUTING.md;有关各部分如何协同工作,请参阅 docs/ARCHITECTURE.md。简而言之:
pip install -e ".[dev]"
python3 -m pytest # runs offline – fake proxies on localhost
ruff check .
python3 docs/make_demo.py # regenerate the images in this README
按文件介绍的项目结构见工作原理。
社区
问题、想法,以及你用它构建的内容,请发到讨论区;Bug 请提交到问题列表。如果 proxy-scraper 为你节省了时间,点个 ⭐ 能帮助其他人发现它。
感谢所有为这个项目做出贡献的人——无论是新增来源、国家、Python 3.14、示例,还是其他内容:
想要加入?适合新手的问题会告诉你从哪里开始。
同一作者的另一个项目:dejabuilt,一项会在构建前检查 GitHub 的 Agent 技能——它会告诉你某个项目想法是否已经存在,并提供相关数据。
致谢
proxy-scraper 的成果离不开发布免费代理列表的人们。感谢 sources.json 中列出的所有人,尤其感谢:
- monosans/proxy-scraper-checker 和 gfpcom/free-proxy-list,项目会将它们精心整理的来源集合读取为元来源
- Textualize/rich,它绘制了整个终端 UI
- IP Geolocation by DB-IP——用于离线查询国家/地区的免费数据库(CC BY 4.0)
- httpbin、checkip.amazonaws.com、ifconfig.me、ipinfo.io、wtfismyip.com、ident.me 和 ip-api.com,用于作为检查目标和查询国家/地区
免责声明
此工具仅收集公开列出的代理,并检查它们是否可用。你需要自行负责使用方式——请遵守所访问网站的条款以及你所在地区的法律。
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。
