如何用Python或C++创建通用网络代理?

0 投票
2 回答
1311 浏览
提问于 2025-04-17 01:43

我有一个应用程序,它可以在局域网内进行通信。不过,我想让它能够通过互联网进行通信。为此,我打算做一个中间程序,这个程序会读取一台电脑上应用程序产生的网络流量,然后把这些流量发送到另一台电脑上的应用程序。

这个过程包括:

  1. 读取应用程序发出的网络流量
  2. 把这些流量的副本通过互联网发送到另一台电脑
  3. 把这个副本交给另一台电脑上的应用程序

我想要的效果是:

电脑A上的应用程序 <-局域网-> 电脑B上的应用程序

我想实现的是:

电脑A上的应用程序 <--> 电脑A上的我的程序 <-互联网-> 电脑B上的我的程序 <--> 电脑B上的应用程序

我能做到第二步,但在第一步和第三步上我遇到了问题,因为我对网络方面的经验很少,不知道从哪里开始。我会用Python编程,但也愿意用C++来完成这个任务。

(Hamachi对这个应用程序不起作用,我也不知道为什么。)

关于评论的回复

我不打算操控任何数据,除非为了让连接正常工作。对于这个应用程序,我没有控制权,也没有提供任何配置连接的方法,除了一个端口号。

TCP和UDP都使用6112这个端口。使用的IP地址首先是255.255.255.255,这是一个用于发现局域网内其他应用程序的广播地址(使用UDP),然后再建立TCP连接。

2 个回答

1

为什么要重新发明轮子呢?为什么不直接使用像OpenVPN、n2n或者vtun这样的工具呢?

1

你在最初的问题中缺少的一个术语是 proxy,也就是“代理”。你具体需要的是 transparent forwarding proxy,也就是“透明转发代理”。

这里有一个 Python源代码的链接,可以帮助你开始编写代理程序。

不过,如果你多搜索一下,应该能找到一个现成的 transparent forwarding proxy,这样你就不需要自己写了。

如果你想用最稳妥的方法来实现这个功能,可以考虑使用硬件,设置一个管理路由器/交换机/防火墙,这样就能把数据路由到你需要的地方,而不需要写任何代码。

撰写回答