mcpField
P
proxy-optimizer

proxy-optimizer

github.com/webshare-proxy云与 DevOps753 次安装3 周前更新
代码仓库

关于 proxy-optimizer

proxy-optimizer 是用于针对特定目标网站检测和优化 Webshare 代理池的技能,适合需要排查代理可用性的用户。它按国家、ASN 和子网分析失败情况,并在干跑和明确确认后通过 Webshare MCP 替换受阻 IP。

主要功能

  1. 01按目标网站探测代理
  2. 02按国家、ASN 和子网分析失败
  3. 03支持全量或抽样测试
  4. 04干跑预览代理替换
  5. 05确认后替换受阻 IP

适用场景

  1. 01检查代理池能否访问目标网站
  2. 02定位代理失败集中的网络区域
  3. 03预览并替换被目标站点阻止的 IP

MCP 相关

技能使用 Webshare MCP 的 create_proxy_replacement 工具执行针对单个 IP 的替换;替换前先干跑,并要求明确确认。

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/webshare-proxy/skills --skill proxy-optimizer

安装后在 Claude Code 中输入/proxy-optimizer确认已加载。

附带文件references/USECASES.mdscripts/optimize_proxies.py

详细介绍

目标网站代理优化器

通过测试、分析和替换被封锁的代理,针对特定目标网站优化 Webshare 代理池。

调用方式

/proxy-optimizer https://www.example.com

参数是要优化代理的目标 URL。

此技能的功能/需求/不会执行的操作

功能: 针对目标网站探测每个代理,按国家/ASN/子网对失败情况进行排名,并执行经确认且先进行试运行的被封锁 IP 替换。

需求:

  1. 安装 webshare CLI(brew install webshare-proxy/tap/webshare),并导出 WEBSHARE_API_KEY — 脚本会通过它获取套餐和代理。使用 webshare whoami 验证。
  2. Python 3.10+。
  3. 仅替换步骤需要:连接 Webshare MCP 服务(claude mcp add --transport http webshare https://mcp.webshare.io/ -H "Authorization: Token $WEBSHARE_API_KEY"),并拥有含替换额度的有效付费套餐。CLI 尚不支持针对指定 IP 进行替换,因此仅在此步骤使用 MCP 的 create_proxy_replacement。

不会执行的操作:

  • 不会在未进行试运行且未获得你明确确认的情况下替换代理。
  • 不会刷新整个代理池 — 这应使用 webshare proxies refresh(参见 proxy-manager 技能),且会消耗一次按需刷新额度。
  • 不会逐 IP 测试住宅轮换代理池(这类代理没有固定的单代理地址)。

工作流

第 1 步:检查代理数量并询问是否抽样

查找套餐及其代理数量:

webshare plans list --json

如果套餐含有超过 50 个代理,询问用户:

“你的套餐有 N 个代理。要测试全部代理,还是抽样测试?”

选项:

  • 全部 N 个代理(耗时较长)
  • 抽取 20 个样本(快速检查)
  • 抽取 50 个样本

如果不超过 50 个,则跳过此问题并测试全部代理。

第 2 步:运行优化器脚本

从此技能所在目录运行脚本:

python3 scripts/optimize_proxies.py --target <TARGET_URL> --workers 10 --timeout 15

如果用户选择抽样,则添加 --sample N。要指定套餐,则添加 --plan-id <id>。脚本通过 webshare CLI 获取套餐和代理列表,将进度输出到 stderr,并将结构化 JSON 输出到 stdout。 解析 JSON 输出。

第 3 步:报告结果

向用户展示结果:

Proxy Optimization Report for <TARGET_URL>

Success rate: X% (N/M proxies working)

Problem areas:
- Countries: <list countries with failure rates>
- ASNs: <list ASNs with failure rates>
- Subnets: <list /24 subnets with failure rates>

Failed proxies: <count>
Replacement credits available: <count>

如果成功率为 100%,报告所有代理均可正常工作,无需采取任何操作。到此结束。

第 4 步:询问用户是否需要查看详情

询问用户:“要在替换前查看哪些代理失败了吗?”

如果用户回答是,则根据 JSON 输出中的 raw_results,列出每个失败代理的 IP、国家、ASN、错误和延迟。示例:

| IP              | Country | ASN                  | Error           | Latency |
|-----------------|---------|----------------------|-----------------|---------|
| 82.27.245.138   | ZA      | Xneelo               | 502 Bad Gateway | 396ms   |
| 82.27.246.135   | ZA      | Xneelo               | 502 Bad Gateway | 413ms   |
| 104.143.224.192 | GB      | Getechbrothers, Mb   | HTTP 429        | 808ms   |

然后询问:“要替换这些代理吗?(先进行试运行)”

如果用户回答否或想跳过部分代理,请尊重其选择。仅处理用户确认的 IP。

第 5 步:试运行替换

如果存在失败代理且用户有替换额度,则使用 Webshare MCP 执行替换试运行。

使用 MCP 工具 create_proxy_replacement,并采用脚本 recommendations.mcp_actions 输出中的参数:

  • plan_id:来自脚本输出
  • to_replace:{"type": "ip_address", "ip_addresses": [<failed IPs>]}
  • replace_with:[{"type": "any"}]
  • dry_run:true

向用户展示试运行结果:

Dry-run preview:
- Proxies to remove: <count>
- Proxies to add: <count>

Proceed with replacement? (This will use <N> replacement credits)
第 6 步:执行替换(需要用户确认)

重要:执行前务必征得用户明确确认。

如果用户确认,则再次调用 create_proxy_replacement,并设置 dry_run: false。

随后使用返回的 id 轮询 get_proxy_replacement,直到 state 为 completed 或 failed。

第 7 步:验证

针对同一目标重新运行优化器脚本,确认替换提高了成功率。

报告替换前后的对比:

Before: X% success rate (N failures)
After:  Y% success rate (M failures)

重要规则

  1. 绝不要跳过试运行。 执行前务必先预览。
  2. 未经用户确认,绝不要替换。 替换会消耗额度,且无法撤销。
  3. **如果替换额度为 0,**请报告检查结果,并说明替换需要额度(付费套餐提供额度)。
  4. **如果所有代理都通过,**请如实说明并停止。不要建议不必要的替换。
  5. 替换数量不得超过可用额度。 如果 20 个代理未通过,但只有 10 个额度,请优先替换表现最差的 ASN/子网中的代理。

故障排除

  • 找不到 webshare CLI:运行 brew install webshare-proxy/tap/webshare,或从 https://github.com/webshare-proxy/webshare-cli/releases 下载
  • 未设置 WEBSHARE_API_KEY:运行 export WEBSHARE_API_KEY="..." — 在 https://dashboard.webshare.io/userapi/keys 生成密钥
  • 未找到有效套餐:用户需要有效的 Webshare 订阅
  • 替换额度为 0:仅付费套餐提供额度;用户可能需要升级套餐
  • 所有代理都超时:目标网站可能完全屏蔽了数据中心 IP;建议改用住宅代理
  • 替换步骤失败:检查 Webshare MCP 是否已连接(claude mcp list);仅使用 CLI 无法执行指定目标的替换

评论

支持 Markdown