繁体   English   中英

.NET HttpListener / HttpWebRequest / HttpWebResponse和HTTPS

[英].NET HttpListener/HttpWebRequest/HttpWebResponse and HTTPS

我使用HttpListener和HttpWebRequest / Response制作了一个简单的代理来编辑和记录HTTP标头。 一切都可以通过HTTP正常运行,但HTTPS却是另外一回事,我在MSDN上已读过,它说HttpListener和HttpWebRequest / Response可以通过HTTPS运行。 显然,这是我做错了。

我让IE指向下面的前缀,我似乎无法捕获请求。

string[] prefixes = new string[] { "http://127.0.0.11:8080/", "https://127.0.0.12:8081/" };

HttpListener listener = new HttpListener();
// Add the prefixes.
foreach (string s in prefixes)
{
    _listener.Prefixes.Add(s);
}

欢迎使用示例,我是新手! :)

不能像这样代理https://。 HTTPS(如RFC2818所示 )使用SSL / TLS打开穿越代理的安全隧道。 作为代理,您将无权访问HTTPS内容,因为它将只是一个不透明的二进制加密组。

您所期望的更像是SHTTP( RFC2660 ),基本上没有人使用。

如果要查看源自计算机的HTTPS通信(例如,出于调试目的),则可以使用NetMon 但是,一个代理可以检查从其他计算机通过的所有流量(如果从定义上说无法对HTTPS进行此操作),这意味着您刚刚成功获得了中间人攻击。

除了Cylon Cat所说的之外,还有FiddlerCore ,它是Fiddler代理,但是可以在您自己的应用程序中使用。 它支持HTTPS。

使用.NET框架实际上很容易做到。 如果您想做的是编写一个中间人代理,例如fiddler。 然后,您可以使用SSLStream轻松完成此操作。 使用您的代理的客户端将收到有关无效SSL证书的警告,但是您仍然可以代理流量并对其进行检查。

这是一个功能强大的功能(包括缓存!)代理服务器,它执行https终止而不是隧道(中间人)。 CodeProject: http//www.codeproject.com/KB/IP/HTTPSDebuggingProxy.aspx

根据您要查找的内容,看一看fiddler ,它是Web调试广泛使用的代理。 它确实处理HTTPS。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM