Java 如何将小代理配置为透明代理
我有两张网卡。第一个是地址为Java 如何将小代理配置为透明代理,java,netty,little-proxy,Java,Netty,Little Proxy,我有两张网卡。第一个是地址为192.168.5.3的网卡,第二个是地址为10.1.1.252的网卡。 如何将代理配置为透明代理, 这意味着客户端只需更改192.168.5.3的网关即可通过代理,而无需修改浏览器的代理选项。 我使用以下代码来执行此操作: final ChainedProxyAdapter adapter = new ChainedProxyAdapter() { @Override public InetSocketAddress getChainedProxyA
192.168.5.3
的网卡,第二个是地址为10.1.1.252
的网卡。
如何将代理配置为透明代理,
这意味着客户端只需更改192.168.5.3
的网关即可通过代理,而无需修改浏览器的代理选项。
我使用以下代码来执行此操作:
final ChainedProxyAdapter adapter = new ChainedProxyAdapter() {
@Override
public InetSocketAddress getChainedProxyAddress() {
return new InetSocketAddress("10.1.1.252", 8003);
}
};
ChainedProxyManager manager = new ChainedProxyManager() {
@Override
public void lookupChainedProxies(HttpRequest httpRequest, Queue<ChainedProxy> chainedProxies) {
chainedProxies.add(adapter);
}
};
HttpProxyServer server = DefaultHttpProxyServer.bootstrap()
.withAddress(new InetSocketAddress("192.168.5.3", 8002))
..withChainProxyManager(manager)
.start();
(eth2的地址是192.168.5.3
)
但是,当我将客户端设置为使用网关192.168.5.3
和192.168.5.3
dns时,对于http url,我总是收到400个对URI:/的错误请求,对于https url,则连接不安全。请告诉我解决办法。谢谢
原因:代理读取客户端请求时,得到第一行,当代理透明时,接收到诸如get/HTTP/1.1
不包含主机等请求,返回错误请求。对于https请求,代理无法解析,它正在尝试解析,浏览器会抛出ssl\u error\u rx\u record\u too\u long
消息。
小代理不支持透明模式,小代理中的透明在通过代理连接时被理解为隐藏的计算机信息。您可以尝试以下操作:
HttpProxyServer server = DefaultHttpProxyServer.bootstrap()
.withAddress(new InetSocketAddress("192.168.5.3", 8002))
.withChainProxyManager(manager)
.withTransparent(true) /* see here */
从文件:
指定是否将此代理作为透明代理运行
默认值=false
您可以尝试以下操作:
HttpProxyServer server = DefaultHttpProxyServer.bootstrap()
.withAddress(new InetSocketAddress("192.168.5.3", 8002))
.withChainProxyManager(manager)
.withTransparent(true) /* see here */
从文件:
指定是否将此代理作为透明代理运行
默认值=false
您好,本,您提到的透明设备在通过代理连接时被理解为隐藏的计算机信息,而不是我所指的。@NguyenPhan请参阅我对初始版本的评论post@Ben你是说little proxy不能支持HTTPS透明代理吗。这意味着如果用户使用浏览器,他不必设置代理服务器,它应该可以工作,如果配置了iptables,如果这是et。iptables-t nat-a PREROUTING-i eth2-p tcp-dport 443-j REDIRECT-使用iptables设置将端口8002作为默认网关,所有请求(来自使用您作为网关的客户端)端口80和443被重定向到代理服务器端口8002。因此,客户端不需要单独配置代理,而且客户端对代理一无所知……就像中间人一样。(PS:我不是说little proxy不能支持HTTPS透明。)(PS2:在本地机器上,您不需要更改默认网关,只需设置iptables就足够了)Hi Ben,您提到的透明在通过代理连接时被理解为隐藏的计算机信息,不是我指的。@NguyenPhan请看我对首字母的评论post@Ben你是说little proxy不能支持HTTPS透明代理吗。这意味着如果用户使用浏览器,他不必设置代理服务器,它应该可以工作,如果配置了iptables,如果这是et。iptables-t nat-a PREROUTING-i eth2-p tcp-dport 443-j REDIRECT-使用iptables设置将端口8002作为默认网关,所有请求(来自使用您作为网关的客户端)端口80和443被重定向到代理服务器端口8002。因此,客户端不需要单独配置代理,而且客户端对代理一无所知……就像中间人一样。(PS:我不是说little proxy不能支持HTTPS透明。)(PS2:在本地机器上,您不需要更改默认网关,只需设置iptables就足够了)当您的链接代理被禁用/未使用时会发生什么情况?
当代理读取来自客户端的请求时,它会得到第一行,当使用代理作为透明时,它会收到请求,比如GET/HTTP/1.1 not contain Host
,这听起来很奇怪。无论little proxy是否配置为透明,客户端http请求都应始终相同。客户端不知道(在您的情况下)代理,也不知道它是如何配置的。为什么要更改请求(没有主机信息)?当您的链接代理被禁用/未使用时会发生什么?当代理从客户端读取请求时,它会获取第一行,当使用代理作为透明时,它会收到请求,如get/HTTP/1.1 not contain host
,这听起来很奇怪。无论little proxy是否配置为透明,客户端http请求都应始终相同。客户端不知道(在您的情况下)代理,也不知道它是如何配置的。为什么要更改请求(没有主机信息)?