关于 proxy-optimizer
proxy-optimizer 是用于针对特定目标网站检测和优化 Webshare 代理池的技能,适合需要排查代理可用性的用户。它按国家、ASN 和子网分析失败情况,并在干跑和明确确认后通过 Webshare MCP 替换受阻 IP。
主要功能
- 01按目标网站探测代理
- 02按国家、ASN 和子网分析失败
- 03支持全量或抽样测试
- 04干跑预览代理替换
- 05确认后替换受阻 IP
适用场景
- 01检查代理池能否访问目标网站
- 02定位代理失败集中的网络区域
- 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 替换。
需求:
- 安装
webshareCLI(brew install webshare-proxy/tap/webshare),并导出WEBSHARE_API_KEY— 脚本会通过它获取套餐和代理。使用webshare whoami验证。 - Python 3.10+。
- 仅替换步骤需要:连接 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)
重要规则
- 绝不要跳过试运行。 执行前务必先预览。
- 未经用户确认,绝不要替换。 替换会消耗额度,且无法撤销。
- **如果替换额度为 0,**请报告检查结果,并说明替换需要额度(付费套餐提供额度)。
- **如果所有代理都通过,**请如实说明并停止。不要建议不必要的替换。
- 替换数量不得超过可用额度。 如果 20 个代理未通过,但只有 10 个额度,请优先替换表现最差的 ASN/子网中的代理。
故障排除
- 找不到
webshareCLI:运行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 无法执行指定目标的替换