Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/joomla/2.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
Python反向代理连接_Python_Tcp_Proxy - Fatal编程技术网

Python反向代理连接

Python反向代理连接,python,tcp,proxy,Python,Tcp,Proxy,我正在尝试使HTTP/S代理服务器工作,而不必手动向前移植 计算机A已安装代理服务器 机器A位于NAT(或带防火墙的路由器)后面 机器B试图通过机器A代理浏览internet 机器B不在NAT后面 在建立任何连接之前,两台机器都相互了解 在满量程中,将有多台机器a,但只有一台机器B 机器A不需要在路由器上配置任何东西 根据,我曾考虑过使用uPnP,但作为这个问题的标题,我想知道是否有可能反转机器的角色 机器a将启动连接,而不是机器B启动连接。因此,机器A将是客户端,机器B将是服务器。记住,机

我正在尝试使HTTP/S代理服务器工作,而不必手动向前移植

  • 计算机A已安装代理服务器
  • 机器A位于NAT(或带防火墙的路由器)后面
  • 机器B试图通过机器A代理浏览internet
  • 机器B不在NAT后面
  • 在建立任何连接之前,两台机器都相互了解
  • 在满量程中,将有多台机器a,但只有一台机器B
机器A不需要在路由器上配置任何东西

根据,我曾考虑过使用uPnP,但作为这个问题的标题,我想知道是否有可能反转机器的角色

机器a将启动连接,而不是机器B启动连接。因此,机器A将是客户端,机器B将是服务器。记住,机器A事先知道机器B的IP地址

在这种情况下,机器A仍将充当代理,但在标准TCP连接中扮演客户机的角色

我知道这需要一个定制的代理服务器,这是没有问题的,因为代理服务器是用
python
实现的,我可以访问源代码,并且可以修改它

  • 这是否与普通HTTP/S代理兼容?具体来说,我将在机器B上使用
    python
    请求
  • 这个方法有名字吗?研究反向或反向将我置于反向代理上,而AFAIK与我试图实现的目标无关
  • 有什么我遗漏的吗?还是另一种解决方案?(除uPnP外)

    • 一个简单的解决方案是OpenSSH端口转发

      通过远程端口转发,将“机器B”上的第一个端口20000转发到“机器A”上的端口10000:

      [A]$ ssh -N -R 20000:localhost:10000 Machine_B
      
      [A]$ ssh -N -D 10000 localhost
      
      然后使用动态端口转发在“机器a”上的端口10000上设置隧道:

      [A]$ ssh -N -R 20000:localhost:10000 Machine_B
      
      [A]$ ssh -N -D 10000 localhost
      
      现在,您可以使用127.0.0.1:20000作为“机器B”上的SOCKS5代理:

      它称为“反向”,您需要反向TCP隧道,它的工作原理类似于OpenSSH端口转发,而Socks5代理服务器比HTTP/S代理服务器更喜欢它

      关于机器B(你)

      在机器上(远程)


      你为什么要自己写?有很多代理选择。我不想写我自己的。如果有一个有效的解决方案,我也没问题。
      python socks5.py start --port=1080
      python slaver.py -m <MachineA_IP>:10000 -t 127.0.0.1:1080
      
      localhost:10800