网站在尝试使用网络电机访问连接时会切断连接



我在本地网络上有一个我试图为小客户端写的网站。

我试图为此目的使用WebClient,但似乎该网站以某种方式检测到它并且不允许继续切断连接,这导致了WebException。

为了对抗这一点,我尝试添加以下标题:

        WebClient wc = new WebClient();
        wc.Headers["User-Agent"] = "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/535.2 (KHTML, like Gecko) Chrome/15.0.874.121 Safari/535.2";
        wc.Headers.Add("Accept", "text/html,application/xhtml+xml,application/xml");
        wc.Headers.Add("Accept-Encoding", "deflate, sdch, br");
        wc.Headers.Add("Accept-Charset", "ISO-8859-1");
        wc.Headers.Add("Accept-Language", "en-us;q=0.7,en;q=0.3");

但是,网站仍然削减了连接,我设法注意到并非所有标题都已发送,然后,我试图覆盖Webrequest:

    public class MyWebClient : WebClient
    {
        protected override WebRequest GetWebRequest(Uri address)
        {
            WebRequest request = base.GetWebRequest(address);
            var castRequest = request as HttpWebRequest;
            if (castRequest != null)
            {
                castRequest.KeepAlive = true;
                castRequest.Accept = "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8";
                castRequest.UserAgent = "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/535.2 (KHTML, like Gecko) Chrome/15.0.874.121 Safari/535.2";
                castRequest.Headers.Add("Accept-Encoding", "deflate, sdch, br");
                castRequest.Headers.Add("Accept-Charset", "ISO-8859-1");
                castRequest.Headers.Add("Accept-Language", "en-US,en;q=0.8");
            }
            return request;
        }
    }

这设法发送了所有标题,但是,我仍然无法访问该网站。

我可以使用任何浏览器(例如Firefox或Chrome)访问该网站,我可以从中复制标头甚至WebBrowser Control,我还可以使用WebClient访问其他网站,而无需任何问题。

有什么具体的,为什么我无法使用WebClient访问此类网站?

是否还有其他帮助WebClient请求看起来更像网站的浏览器?

我已经弄清楚我的方向错误。

似乎有问题的网站不支持默认安全性,因此我必须启用TLS12:

        ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12;

由于某种原因,它与我正在解析的另一个本地网站引起了同样的问题,我通过启用所有TLS版本来解决该问题:

        ServicePointManager.SecurityProtocol = 
                                   SecurityProtocolType.Tls
                                 | SecurityProtocolType.Tls11
                                 | SecurityProtocolType.Tls12;

相关内容

  • 没有找到相关文章

最新更新