我正在尝试在 C++ 中创建一个 SOCKS 代理,该代理在 localhost 上作为后台进程运行。
如果用户的浏览器配置为使用代理,我希望所有 HTTP 请求都通过正常的 TCP/IP 堆栈传递。ie 浏览器的行为将与正常情况完全相同。
最终我将添加另一个层来检查请求的资源是否符合某些标准,如果符合,将以不同的方式处理请求。但现在我只是想解决基本问题......如何创建一个不会改变任何东西的 SOCKS 代理?
构建 HTTP 代理比 SOCKS4/SOCKS5 容易得多,因为 HTTP 协议是人类可读的,而 SOCKS 协议不是。这是我几年前为体验而构建的 HTTP 代理的示例。它过去可以在旧浏览器上正常工作,现在由于无法处理持久连接而损坏,但它仍然是了解其工作原理的好来源。
也许您更愿意使用现有的 HTTP 代理软件,例如 Squid。