HTTP 附带cookies模拟登录 (RSA加密)

来源:互联网 发布:商标r和tm的区别 知乎 编辑:程序博客网 时间:2024/06/08 16:01

   HTTP 附带cookies模拟登录原理很简单,首先构建HTTP请求,登录成功后将返回的cookies信息保存起来,然后客户端用保存的cookies进行Get请求进行,进行欺骗浏览器访问,此次我是用博客园的进行登录跳转,没想到这网站post的数据是用RSA加密,内心这个崩溃啊,早上是用HTTP请求模拟微信公众号给用户发送信息,没想到微信也是对请求后跳转的网页进行了加密处理,下面是模拟登录的代码

    /// 获取Cookies    /// </summary>    /// <param name="postData">post到URL的数据</param>    /// <param name="url"></param>    /// <returns></returns>    public static CookieContainer GetCookies(string postData, string url)    {        try        {            CookieContainer cookies = null;            HttpWebRequest request = WebRequest.Create(url) as HttpWebRequest;            request.CookieContainer = cookies;            request.ContentType = "application / json; charset = utf - 8";            request.Method = "post";            request.ContentLength = postData.Length;            Stream requestStream = request.GetRequestStream();            Byte[] bytes = System.Text.Encoding.UTF8.GetBytes(postData);            requestStream.Write(bytes, 0, bytes.Length);            requestStream.Close();            ServicePointManager.CertificatePolicy = new AcceptAllCertificatePolicy();            HttpWebResponse response = request.GetResponse() as HttpWebResponse;            //校验是否成功跳转到登录成功后的页面            //using (StreamReader sReader = new StreamReader(response.GetResponseStream(), Encoding.GetEncoding("UTF-8")))            //{            //    String text = sReader.ReadToEnd();             //}            return cookies;        }        catch (Exception ex)        {            throw new Exception(ex.StackTrace);        }    }    /// <summary>    /// 对SSL/TSL管道建立安全信任关系    /// </summary>    public class AcceptAllCertificatePolicy : ICertificatePolicy    {        public AcceptAllCertificatePolicy()        {        }        public   bool CheckValidationResult(ServicePoint sPoint, X509Certificate cert, WebRequest wRequest, int certProb)        {            // Always accept              return true;        }    }    /// <summary>    /// 根据获取的cookies进行Get请求    /// </summary>    /// <param name="cookie">拿到的Cookies数据</param>    /// <param name="url">附带cookies进行跳转的URL</param>    /// <returns></returns>    static string GetContent(CookieContainer cookie, string url)    {        string content = string.Empty; //保存cookie检验后获取的数据        HttpWebRequest httpRequest = HttpWebRequest.Create(url) as HttpWebRequest;        httpRequest.CookieContainer = cookie;        httpRequest.Referer = url;        httpRequest.UserAgent = "Mozilla/5.0 (Windows NT 6.3; WOW64; Trident/7.0; rv:11.0) like Gecko";        httpRequest.Accept = "text/html, application/xhtml+xml, */*";        httpRequest.ContentType = "application/x-www-form-urlencoded";        httpRequest.Method = "GET";        HttpWebResponse httpResponse = httpRequest.GetResponse() as HttpWebResponse;        using (Stream responsestream = httpResponse.GetResponseStream())        {            using (StreamReader sr = new StreamReader(responsestream, System.Text.Encoding.UTF8))            {                content = sr.ReadToEnd();            }        }        return content;    }
原创粉丝点击