我为此https://gist.github.com/voorloopnul/415cb75a3e4f766dc590#file-proxy-py编写了一个反向代理。
我需要这个来覆盖客户端的身份验证信息。喜欢以下。
Client(passA) ---> Proxy(overwrite passA into passB) ---> Server(passB)
其中passB是正确的密码,passA是随机数。
算法是SCRAMSHA256,有点复杂,但我设法做到这一点。 当代理和服务器不在同一台机器上时,Eventhing运行良好。 我试图在 windows和linux 上部署代理。代理使用“ IP地址 ”指向服务器
然而,当代理使用“ localhost ”指向服务器时,它被破坏了,无法通过某个客户端传递身份验证(我为此制作了代理人)。但与其他客户一样,它也运作良好。
这不应该是封装并且对用户透明吗?
为什么localhost如此特殊以及如何解决这个问题?
验证失败,因为客户端直接连接到服务器,因此我的代理不会修改密码。
Condition 1: Proxy on another machine. The proxy works.
Client(192.168.1.1) ==> Proxy(192.168.1.3:8000) ==> Server(192.168.1.2:6000)
-
Condition 2: Proxy on the same machine as the Server.
The proxy listen 0.0.0.0:8000 and forward packets to localhost:6000.
Client(192.168.1.1) ==> Proxy(192.168.1.2:8000) ==> Server(192.168.1.2:6000)
After the first connection, the rest connection becomes
Client(192.168.1.1) =====> Server(192.168.1.2:6000) without proxy.
这使得代理不再起作用了。 为什么客户会在条件2中跳过它?