问题
How can I communicate through an HTTP proxy with TcpClient
in C#, kind of like WebProxy
when using HttpWebResponse
?
回答1:
Well, TCP doesn't have anything directly equivalent to HTTP proxying. In HTTP, the client (generally) knows about the proxying - it talks to the proxy, and asks the proxy to connect to the real web server on its behalf.
TCP doesn't define that sort of thing, so any proxying would have to either be transparent (i.e. something that a router or the operating system does without the client knowing, e.g. with iptables) or as part of the protocol on top of TCP (HTTP proxying is a good example of this, as is SOCKS mentioned in a different answer).
回答2:
If you go down to low-level socket programming, I'm pretty sure you'll need to write your own proxy client. If you're only dealing with the HTTP protocol, you're probably better off using HTTP-specific classes. If you need to do it with sockets, the HTTP spec describes the behavior of proxies reasonably well, so you could write your own client.
回答3:
If you'd like to use a SOCKS proxy, there are already some SOCKS libraries written for C#. Try this one.
来源:https://stackoverflow.com/questions/691550/communicating-with-an-http-proxy-via-a-net-tcpclient