用 Java 和 OkHttp 接住宅代理:proxy 与认证怎么写、怎么测通

在 Java 和 OkHttp 中分开填写住宅代理主机与认证,再发起一次授权请求。包含假占位值、核对方法与故障排查。

在 Java 和 OkHttp 中分开填写住宅代理主机与认证,再发起一次授权请求。包含假占位值、核对方法与故障排查。

本指南把 Java 和 OkHttp 接到住宅代理,并用一次授权请求完成测通。实际协议、主机、端口、用户名和密码必须从控制台复制。下列值全部是故意设置的假值:主机 `proxy.example.invalid`、端口 `10000`、用户名 `USER_EXAMPLE`、密码 `PASS_EXAMPLE_NOT_REAL`。不支持中国大陆使用。

需要轮换出口、按流量计费时选动态住宅;订单周期内必须保持同一出口时选静态住宅。粘性会话不等于静态 IP。

对照控制台字段

控制台值示例填写位置
协议HTTP代理 URL 协议或客户端代理类型
主机和端口`proxy.example.invalid` 与 `10000`网关地址,不包含凭据
用户名和密码`USER_EXAMPLE` 与 `PASS_EXAMPLE_NOT_REAL`独立认证字段

用 OkHttp 的 `proxy` 设置网关,再通过 `proxyAuthenticator` 和 `Credentials.basic` 响应代理认证。不要把凭据塞进主机字段。

最小示例

import java.net.InetSocketAddress;
import java.net.Proxy;
import okhttp3.Credentials;
import okhttp3.OkHttpClient;
import okhttp3.Request;
import okhttp3.Response;

Proxy proxy = new Proxy(Proxy.Type.HTTP,
    new InetSocketAddress("proxy.example.invalid", 10000));

OkHttpClient client = new OkHttpClient.Builder()
    .proxy(proxy)
    .proxyAuthenticator((route, response) -> response.request().newBuilder()
        .header("Proxy-Authorization",
            Credentials.basic("USER_EXAMPLE", "PASS_EXAMPLE_NOT_REAL"))
        .build())
    .build();

Request request = new Request.Builder().url("https://example.com/").build();
try (Response response = client.newCall(request).execute()) {
    System.out.println(response.code());
}

本例针对 OkHttp。Java 11 HttpClient 使用不同的代理选择器和认证 API,不要把 OkHttp 的 builder 写法直接搬过去。 示例中的目标仅用于说明连通性;请替换成你有权访问的页面。要核对来源 IP,应使用经批准、能显示请求 IP 的端点。

第一次测通怎么判断

结果含义下一步
2xx 或目标预期响应路由已工作核对观察到的出口与地区
HTTP 407代理认证失败重新复制认证,不要把凭据移进主机字段
超时 / 拒绝连接路由、协议、端口、防火墙或目标异常与 curl 测通对照,并设置有限超时
地区不符或出口变化选区或会话不匹配检查控制台参数;订单周期需同一 IP 时改用静态

字段格式见代理格式、HTTP / SOCKS5 设置、文档快速开始和407 / 超时排查。

FAQ

HTTP 407 表示什么?

客户端已经连接到网关,但代理认证缺失或被拒绝。重新从控制台复制用户名和密码,并放在认证字段中。

请求为什么超时?

依次检查协议、主机、端口、本地防火墙、DNS 和授权目标,再把测试缩小为带有限超时的一次请求。

主机字段要带协议吗?

不要。主机字段只放主机名;只有库要求代理 URL 时,才在对应 URL 字段添加协议。

这段示例可以直接改成 SOCKS5 吗?

不一定。本页 Java 和 OkHttp 示例演示 HTTP 代理。应使用控制台返回的协议;需要 SOCKS5 时再使用该库对应的适配方式。

怎么确认实际出口?

访问一个你有权使用、能显示来源 IP 的页面,把结果与目标地区或静态订单核对;不要把网关主机名当成出口。

粘性会话能替代静态 IP 吗?

不能。粘性是在动态池上有限时间尽量保持同一出口;静态住宅订单是在订单周期内使用分配的固定出口。

可以直接使用本文占位凭据吗?

不可以。示例域名不可解析,所有凭据都是假的。请复制控制台当前值。

中国大陆可以使用吗?

不可以。ZTProxy 代理服务不支持在中国大陆使用。仅可访问合法、已授权的目标。

下一步

  1. 从控制台复制当前网关与认证。
  2. 用示例向一个授权目标发起请求。
  3. 核对出口后,再逐步添加重试和并发。其他客户端可对照:Python、Node.js 和 Axios、PHP 和 Guzzle。