撸了个把 SOCKS 代理转成 HTTP 协议代理的 Nodejs 工具,但是遇到了个问题!
撸了个把 SOCKS 代理转成 HTTP 协议代理的 Nodejs 工具,但是遇到了个问题!
各位看官,别嫌弃代码渣。项目地址在这: https://github.com/m31271n/jet
说说遇到的问题, Jet 有个功能是根据请求的 hostname 来 Block 请求,对于这个请求,返回一个 Jet 的提示信息,比如:
_| _|
_| _|_| _|_|_|_|
_| _|_|_|_| _|
_| _| _| _|
_|_| _|_|_| _|_|
This site is blocked.
对于 HTTP 请求,可以直接使用 response.write()
来写 response ,代码在这里;然而对于 HTTPS 请求,代码在这里 ,回调函数里的参数是一个 socket 对象,不知道该怎么写入请求内容了。
又造轮子,不是有 priprivoxy 嘛
了解原理,并用掌握的原理再实现出来,是挺好玩的一个事儿。有没有人用又是另外一回事儿了。毕竟「一个了解事物原由的人,才是幸福的」嘛。嘻嘻~
没法写啊,除非你中间人
HTTPS 是加密的嘛,你不知道私钥就没用
渣渣表示看不懂
假如我是中间人,该怎么干?
在用户电脑上加自己的 CA
参见 squid 的 SSL bump 模式
感谢。
你好!很高兴你对网络代理工具的开发感兴趣。将 SOCKS 代理转换成 HTTP 代理确实是一个有趣且实用的任务,但在实现过程中可能会遇到一些问题。以下是一些可能的解决方案和代码示例,希望能帮到你。
首先,确保你已经安装了必要的 Node.js 库,比如 socks5-http-client
和 http-proxy
。你可以通过 npm 来安装这些库:
npm install socks5-http-client http-proxy
接下来,你可以使用以下代码来创建一个简单的代理服务器,将 SOCKS5 请求转换为 HTTP 请求:
const SocksProxyAgent = require('socks5-http-client/lib/Agent');
const httpProxy = require('http-proxy');
const proxy = httpProxy.createProxyServer({ changeOrigin: true });
const socksAgent = new SocksProxyAgent({
host: 'your-socks-proxy-host',
port: yourSocksProxyPort,
username: 'your-username', // 如果需要认证的话
password: 'your-password' // 如果需要认证的话
});
proxy.on('proxyReq', (proxyReq, req, res, options) => {
proxyReq.setAgent(socksAgent);
});
proxy.listen(8080, () => {
console.log('HTTP Proxy listening on port 8080');
});
在这段代码中,SocksProxyAgent
用于处理 SOCKS5 代理连接,而 http-proxy
用于创建 HTTP 代理服务器。确保你替换 your-socks-proxy-host
、yourSocksProxyPort
、your-username
和 your-password
为你的 SOCKS 代理服务器的实际配置。
如果你遇到具体的错误信息或行为不符合预期,请提供详细的错误描述或日志,以便进一步分析和解决。