.net 模拟登陆 post https 请求跳转页面

AllowAutoRedirect property is true, the Referer property is set automatically when the request is redirected to another site.">如果 AllowAutoRedirect 属性为 true,则 Referer 属性在请求被重定向到另一个站点时自动设置。

Referer HTTP header, set the Referer property to null.">若要清除 RefererHTTP 标头,请将 Referer 属性设置为 null
如果设置了  Referer 则 指定到某个站点. 被这东西小坑了一下 涨姿势。

          private bool CheckValidationResult(object sender, X509Certificate certificate, X509Chain chain, SslPolicyErrors errors)
          {
               return true; //总是接受安全证书
          }

          private void test() 
          {
               ServicePointManager.ServerCertificateValidationCallback = new RemoteCertificateValidationCallback(CheckValidationResult);
               CookieCollection _cookies = null; //后续使用
               var addRess = "https://xxxxxxxxxx";
               var data = "account=xxxxxxx&password=xxxxx";

               HttpWebRequest request = (HttpWebRequest)WebRequest.Create(addRess);
               request.CookieContainer = new CookieContainer();
               request.Timeout = 1000 * 60;
               request.Method = "POST";               
               request.ContentType = "application/x-www-form-urlencoded";
               request.AllowAutoRedirect = true;
               request.Referer = addRess;

               byte[] bs = Encoding.UTF8.GetBytes(data);
               HttpWebResponse response = null;
               StreamReader myStreamReader = null;
               Stream myRequestStream = null;
               request.ContentLength = bs.Length;
               string retString = string.Empty;
               try
               {
                    using (myRequestStream = request.GetRequestStream())
                    {
                         myRequestStream.Write(bs, 0, bs.Length);
                         myRequestStream.Close();
                    }
                    response = (HttpWebResponse)request.GetResponse();
                    _cookies = response.Cookies;
                    using (Stream myResponseStream = response.GetResponseStream())
                    {
                         using (myStreamReader = new StreamReader(myResponseStream, Encoding.GetEncoding("BIG5")))
                         {
                              retString = myStreamReader.ReadToEnd();
                         }
                    }
               }
               catch (Exception)
               {

                    throw;
               }
               finally
               {
                    if (myRequestStream != null)
                    {
                         myRequestStream.Close();
                    }
                    if (response != null)
                    {
                         response.Close();
                    }
                    if (myStreamReader != null)
                    {
                         myStreamReader.Close();
                    }
               }
          }
原文地址:https://www.cnblogs.com/LiMin/p/4468900.html