Winsock 使用系统代理设置

2024-01-05

我有一个简单的winsock 程序,我想通过系统代理传递我的连接。我看到一些帖子解释了如何捕获系统代理然后发送如下字符串:

CONNECT 127.0.0.1:8080 HTTP/1.0\r\n

等等。 但它并不总是有效。 另一方面,当使用 WinInet API(InternetOpen() 函数和...)时,它可以完美地工作。 我需要像 WinInet 这样始终正常工作的解决方案以及像 Winsocket 这样的双向功能。


不存在“系统代理”这样的东西。 WinInet 的代理设置仅是 WinInet 的一部分,而不是 Windows 本身(Internet Explorer 使用 WinInet,因此 WinInet 配置影响 IE,但不影响 WinSock)。

CONNECT 127.0.0.1:8080 HTTP/1.0\r\n\r\n是一个连接字符串,用于通过基于 HTTP 的代理服务器建立隧道(请参阅使用 HTTP CONNECT 建立隧道 https://devcentral.f5.com/articles/tunneling-with-http-connect)。您连接到代理,发送CONNECT命令让它连接到目标服务器,检查响应,如果成功则可以正常与目标服务器进行双向通信,就像直接连接一样。

但还有其他类型的代理,例如SOCKS https://en.wikipedia.org/wiki/SOCKS。相同的概念(连接到代理,请求连接到目标,然后正常进行),但协议与 HTTP 截然不同。

使用 WinSock 进行编码时,您必须在自己的代码中手动实现各种代理协议,或者找到第三方库来为您处理。 WinSock 没有内置的代理支持。而且您必须提前知道正在使用什么类型的代理,以便您可以使用正确的协议。有一些 API 可以动态检测代理设置,或者只是要求用户提供详细信息。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Winsock 使用系统代理设置 的相关文章

随机推荐