我发现“jSocks”库已经有 2 天了。
我试图找出如何使用这个库进行编码。
我必须说文档很差。
我 不要 想要你为我编码,我只想要一个 简单的工作流程 。
这是我的场景:
1) 我想写 2 个应用程序,一个用于客户端,一个用于服务器。 (它是简单的客户端服务器代理)
2) 客户端应用程序将监听本地主机 (127.0.0.1) 上的特定端口以获取传入连接(例如浏览器请求)。
3)客户端应用程序接受来自浏览器的传入连接,并在她和浏览器之间创建一个 socks 套接字来发送和接收数据。
4)客户端应用程序在她和服务器应用程序之间创建一个socks套接字(服务器应用程序托管在网络上并监听传入连接的端口)。
5)服务器应用程序接受传入连接并创建用于通信的socks套接字。
6)服务器应用程序接收数据(可能是浏览器请求),处理它并连接到远程网站(在互联网上)。
7)服务器应用程序从网络接收数据并将其发送到客户端应用程序。
8) 客户端应用程序将接收到的数据发送到浏览器。
我使用java标准“Socket”和“ServerSocket”为http请求创建了这个应用程序,没有问题,现在我想用socks socket为所有请求编写这个程序。
我用 jsocks 尝试了所有东西,但没有成功。
我需要一个关于如何使用 jsocks 来创建此应用程序的 工作流 。
tnx。
@BGR
根据您提到的文件(SOCKS.java),如下所示的简单行必须有效:ServerAuthenticator auth = new ServerAuthenticatorNone();
ProxyServer pServer = new ProxyServer(auth);
pServer.setLog(System.out);
pServer.start(50352);
当我执行这个时,日志是:在:0.0.0.0:50352 上启动 SOCKS 代理(如果我将 127.0.0.1 作为地址传递给 start()
方法,日志是“在:127.0.0.1:50352 上启动 SOCKS 代理,但结果是相同的)
但是当我将浏览器请求重定向到此端口时,什么也没有发生。
实际上,我不确定 start(port)
方法是如何工作的,因为它是无效的。
当我使用 ServerSocket
、 accept()
方法时,它会返回一个用于通信的套接字。
但是当我使用 start(port)
时什么都不会返回
最佳答案
我不确定我是否完全理解您的请求(socks 服务器用于代理;它不断地监听单个端口并转发请求)但查看 this java file 似乎很容易使用 jsocks 创建 Socks 代理服务器。
代理服务器运行后,您可以使用 this constructor 在客户端上创建一个 java 套接字,您可以在其中指定 socks 代理服务器的位置。然后你 connect
到你的远程服务器 SocketAddress
和
……应该是这样。
你似乎有很多重定向正在进行。也许您应该绘制一张流程图,看看哪里需要 Socks 代理服务器以及为什么。
关于java - 用于代理的 jsocks 库,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/14374545/