本指南把 C# 和 HttpClient 接到住宅代理,并用一次授权请求完成测通。实际协议、主机、端口、用户名和密码必须从控制台复制。下列值全部是故意设置的假值:主机 proxy.example.invalid、端口 10000、用户名 USER_EXAMPLE、密码 PASS_EXAMPLE_NOT_REAL。不支持中国大陆使用。
需要轮换出口、按流量计费时选动态住宅;订单周期内必须保持同一出口时选静态住宅。粘性会话不等于静态 IP。
对照控制台字段
| 控制台值 | 示例 | 填写位置 |
|---|---|---|
| 协议 | HTTP | 代理 URL 协议或客户端代理类型 |
| 主机和端口 | proxy.example.invalid 与 10000 | 网关地址,不包含凭据 |
| 用户名和密码 | USER_EXAMPLE 与 PASS_EXAMPLE_NOT_REAL | 独立认证字段 |
只用主机和端口创建 WebProxy,再把独立的 NetworkCredential 赋给 Credentials,最后交给 HttpClientHandler。
最小示例
using System.Net;
var proxy = new WebProxy("http://proxy.example.invalid:10000")
{
Credentials = new NetworkCredential("USER_EXAMPLE", "PASS_EXAMPLE_NOT_REAL")
};
using var handler = new HttpClientHandler { Proxy = proxy, UseProxy = true };
using var client = new HttpClient(handler) { Timeout = TimeSpan.FromSeconds(30) };
using var response = await client.GetAsync("https://example.com/");
Console.WriteLine((int)response.StatusCode);
长时间运行的应用应复用 HttpClient。每次请求都新建实例可能耗尽套接字,也会让代理故障更难排查。 示例中的目标仅用于说明连通性;请替换成你有权访问的页面。要核对来源 IP,应使用经批准、能显示请求 IP 的端点。
第一次测通怎么判断
| 结果 | 含义 | 下一步 |
|---|---|---|
| 2xx 或目标预期响应 | 路由已工作 | 核对观察到的出口与地区 |
| HTTP 407 | 代理认证失败 | 重新复制认证,不要把凭据移进主机字段 |
| 超时 / 拒绝连接 | 路由、协议、端口、防火墙或目标异常 | 与 curl 测通对照,并设置有限超时 |
| 地区不符或出口变化 | 选区或会话不匹配 | 检查控制台参数;订单周期需同一 IP 时改用静态 |
字段格式见代理格式、HTTP / SOCKS5 设置、文档快速开始和407 / 超时排查。
FAQ
HTTP 407 表示什么?
客户端已经连接到网关,但代理认证缺失或被拒绝。重新从控制台复制用户名和密码,并放在认证字段中。
请求为什么超时?
依次检查协议、主机、端口、本地防火墙、DNS 和授权目标,再把测试缩小为带有限超时的一次请求。
主机字段要带协议吗?
不要。主机字段只放主机名;只有库要求代理 URL 时,才在对应 URL 字段添加协议。
这段示例可以直接改成 SOCKS5 吗?
不一定。本页 C# 和 HttpClient 示例演示 HTTP 代理。应使用控制台返回的协议;需要 SOCKS5 时再使用该库对应的适配方式。
怎么确认实际出口?
访问一个你有权使用、能显示来源 IP 的页面,把结果与目标地区或静态订单核对;不要把网关主机名当成出口。
粘性会话能替代静态 IP 吗?
不能。粘性是在动态池上有限时间尽量保持同一出口;静态住宅订单是在订单周期内使用分配的固定出口。
可以直接使用本文占位凭据吗?
不可以。示例域名不可解析,所有凭据都是假的。请复制控制台当前值。
中国大陆可以使用吗?
不可以。ZTProxy 代理服务不支持在中国大陆使用。仅可访问合法、已授权的目标。
下一步
- 从控制台复制当前网关与认证。
- 用示例向一个授权目标发起请求。
- 核对出口后,再逐步添加重试和并发。其他客户端可对照:Python、Node.js 和 Axios、PHP 和 Guzzle。