Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/311.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何将小代理配置为透明代理_Java_Netty_Little Proxy - Fatal编程技术网

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请求都应始终相同。客户端不知道(在您的情况下)代理,也不知道它是如何配置的。为什么要更改请求(没有主机信息)?