You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何配置RestAssured HTTP客户端使用SOCKS代理?

RestAssured 实现SOCKS代理请求的可行绕过方案

目前RestAssured官方暂未原生支持SOCKS代理配置,可通过以下两种经过验证的方案实现需求:

方案1:配置JVM全局SOCKS代理

  • 适用场景:单JVM实例内所有网络请求都需要走同一SOCKS代理的测试场景
  • 配置方式:在发起RestAssured请求前设置JVM系统属性即可生效,示例代码如下:
// 配置SOCKS代理地址与端口
System.setProperty("socksProxyHost", "127.0.0.1");
System.setProperty("socksProxyPort", "1080");
// 若代理需要身份认证,补充以下配置
System.setProperty("java.net.socks.username", "代理用户名");
System.setProperty("java.net.socks.password", "代理密码");
  • 注意事项:该配置为全局生效,会影响JVM内所有基于Java原生网络接口发起的请求,若存在部分请求不需要走代理的场景不推荐使用。

方案2:替换RestAssured底层HTTP客户端自定义代理配置

  • 适用场景:需要仅为RestAssured请求单独配置代理、和其他业务请求代理规则隔离的场景
  • 配置逻辑:RestAssured支持自定义底层使用的Apache HttpClient、OkHttp等客户端,这类客户端本身原生支持SOCKS代理配置,完成配置后交给RestAssured使用即可。以Apache HttpClient为例的实现代码如下:
import org.apache.http.HttpHost;
import org.apache.http.impl.client.HttpClients;
import io.restassured.RestAssured;
import io.restassured.config.HttpClientConfig;

// 构造SOCKS代理实例
HttpHost socksProxy = new HttpHost("127.0.0.1", 1080, "socks");
// 构建携带SOCKS代理配置的HttpClient
var customHttpClient = HttpClients.custom()
        .setProxy(socksProxy)
        // 如需代理认证可额外配置ProxyAuthenticationStrategy相关规则
        .build();
// 将自定义客户端注入RestAssured配置
RestAssured.config = RestAssured.config()
        .httpClient(HttpClientConfig.httpClientConfig()
                .httpClientFactory(() -> customHttpClient));
  • 优势:代理规则仅对RestAssured发起的请求生效,不会影响JVM内其他网络请求,灵活性更高。如果使用OkHttp作为底层客户端,配置逻辑一致,只需构造配置好SOCKS代理的OkHttpClient实例注入RestAssured即可。

内容的提问来源于stack exchange,提问作者Radek Postołowicz

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.04 05:45:03