【问题标题】:How to create a generic network proxy using Python or C++?如何使用 Python 或 C++ 创建通用网络代理?
【发布时间】:2011-09-08 20:15:13
【问题描述】:

我有一个通过局域网进行通信的应用程序。但是,我想让它通过互联网进行通信。为此,我建议制作一个中间程序,该程序将读取从一台计算机上的应用程序生成的网络流量并将其发送到另一台计算机上的应用程序。

这涉及:

  1. 读取应用程序的传出网络流量
  2. 通过 Internet 将此流量的副本发送到另一台计算机
  3. 将此副本提供给另一台计算机上的应用程序

而不是这个:

计算机 A 上的应用程序 计算机 B 上的应用程序

我想实现这个:

在 A 上的应用程序 我在 A 上的程序 我在 B 上的程序 在 B 上的应用程序

我可以完成 (2),但是对于 (1) 和 (3),我的问题是我对网络的经验很少,而且我不知道从哪里开始。我可以在 python 中编程,但愿意使用 c++ 来完成。

(Hamachi 不适用于此应用程序,我不知道为什么。)

响应cmets

除非有必要使连接正常工作,否则我不打算操作任何数据。我无法控制应用程序本身,它没有为我提供任何配置连接的方法,端口号除外。

TCP 和 UDP 都在端口 6112 上使用。使用的 IP 地址首先是 255.255.255.255,用于发现 LAN 上的其他应用程序(使用 UDP)的通用广播,然后建立 TCP 连接。

【问题讨论】:

  • 如果您的意图是让第一个应用程序直接与第二个应用程序对话而不对数据进行任何操作,您应该能够将连接设置为直接转到第二个应用程序。否则,您将需要构建一种类型的 tcp“隧道”来执行您想要的操作...应用程序 A 与应用程序 B 对话,后者将消息中继到应用程序 C...也许对您正在尝试的内容有更清晰的解释做会更有帮助。
  • 需要有关该应用程序的更多信息。它使用什么协议进行通信?你能指定它发送/接收的 IP 地址和端口吗?
  • 您可以使用ncssh@tMC 提到的更专业的程序。

标签: c++ python proxy network-programming


【解决方案1】:

您在原始问题中缺少的术语是proxy。你特别需要transparent forwarding proxy

这是 Python 中的 link to some source code,它将帮助您开始编写代理。

也就是说,如果您四处搜索,您应该能够找到一个您不必自己写的transparent forwarding proxy

如果您想以最稳健的方式执行此操作,您可以在硬件中执行此操作并设置托管路由器/交换机/防火墙,以将内容路由到您需要的任何位置,而无需编写任何内容。

【讨论】:

  • 我遇到的问题是套接字/端口已经被程序使用(twisted.internet.error.CannotListenError: Couldn't listen on any:6112: [Errno 10048] Only通常允许每个套接字地址(协议/网络地址/端口)使用一次。)。如果我先启动程序,那么我的正常应用程序可能会遇到相同的错误(即它不起作用,所以我认为它是相同的问题)。你知道如何使用一个已经在twisted中使用的端口吗?
  • 两个应用程序不能使用同一个端口
  • 硬件方法实现的困难意味着其他人在自己的计算机上做是不可行的。除非我有误解,否则我认为我不能使用普通代理,因为我无法将网络流量从应用程序重定向到代理。它有一个固定的目的地。就你所说的,我认为我的方法也行不通。
【解决方案2】:

为什么要重新设计车轮?为什么不直接使用 OpenVPN、n2n 或 vtun 等。

【讨论】:

    猜你喜欢
    • 2011-02-11
    • 2019-04-07
    • 2018-12-28
    • 2020-07-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-04-17
    相关资源
    最近更新 更多