我几周前下载了Privoxy,为了好玩,我好奇地想知道它的一个简单版本是如何做到的。
我知道我需要配置浏览器(客户端)来向代理发送请求。代理将请求发送到web (假设它是一个http代理)。代理服务器将收到答案...但是代理如何将请求发送回浏览器(客户端)呢?
我已经在网络上搜索了C#和http proxy,但还没有找到能让我正确理解其幕后工作原理的东西。(我相信我不想要反向代理,但我不确定)。
你们中有谁有一些解释或信息可以让我继续这个小项目吗?
更新
这就是我所理解的(见下图)。
步骤1 I将客户端(浏览器)配置为在代理侦听的端口将所有请求发送到127.0.0.1。这样,请求将不会直接发送到Internet,而是由代理处理。
Step2代理查看新连接,读取HTTP头并查看他必须执行的请求。他执行该请求。
Step3代理接收来自请求的应答。现在他必须将答案从网络发送到客户端,但是如何发送呢?
有用的链接
Mentalis Proxy:我发现这个项目是一个代理(但我想要更多)。我可能会检查源代码,但我真的想要一些基本的东西来更多地理解这个概念。
ASP Proxy:我也许也能在这里得到一些信息。
Request reflector:这是一个简单的例子。
发布于 2008-10-22 17:34:07
您可以使用HttpListener
类和HttpWebRequest
类构建一个监听传入请求和中继请求的类。
发布于 2009-04-30 11:05:35
我不会使用HttpListener或类似的东西,那样你会遇到很多问题。
最重要的是,支持它将是一个巨大的痛苦:
您需要做的是:
我用.NET编写了两个不同的HTTP代理,有不同的需求,我可以告诉你,这是最好的方法。
Mentalis这样做,但他们的代码是“委托意大利面”,比GoTo更糟糕:)
发布于 2015-01-06 10:10:40
我最近使用TcpListener和TcpClient在c# .net中编写了一个轻量级代理。
https://github.com/titanium007/Titanium-Web-Proxy
它以正确的方式支持安全HTTP,客户端需要信任代理所使用的根证书。还支持WebSockets中继。除管道外,HTTP 1.1的所有功能都受支持。无论如何,大多数现代浏览器都不使用流水线。还支持windows身份验证(普通、摘要)。
您可以通过引用项目来挂接您的应用程序,然后查看和修改所有流量。(请求和响应)。
至于性能,我已经在我的机器上进行了测试,没有任何明显的延迟。
https://stackoverflow.com/questions/226784
复制相似问题