• 测试自动登录58


     1  public void Login58(string name, string pass)
     2         {
     3             HttpWebRequest request = (HttpWebRequest)WebRequest.Create("https://passport.58.com/login/");
     4            request.Method="GET";
     5            request.CookieContainer = new CookieContainer();
     6             HttpWebResponse response =(HttpWebResponse)request.GetResponse();
     7             using(StreamReader str=new StreamReader(response.GetResponseStream()))
     8             {
     9                 html = str.ReadToEnd();
    10             }
    11             cc = response.Cookies;
    12             Match m = Regex.Match(html, "<input\stype="hidden"\sname="path"\svalue="(?<path>[^"]+)"/>", RegexOptions.Multiline | RegexOptions.IgnoreCase);
    13             string path = HttpUtility.UrlEncode(m.Groups["path"].Value);
    14             string p1;
    15             string p2;
    16             string p3;
    17             m = Regex.Match(html, "var\stimespan\s=\s(?<timespan>\d+)\s-\snew", RegexOptions.Multiline | RegexOptions.IgnoreCase);
    18             long timespan = long.Parse(m.Groups["timespan"].Value);
    19             timespan = timespan -long.Parse(wb1.InvokeScript("getdatetime").ToString())-60000;//假定是1分钟前加载的登录页面
    20 
    21             long timesign = long.Parse(wb1.InvokeScript("getdatetime").ToString()) + timespan;
    22             timesign = 1411094409520;
    23             p1 = wb1.InvokeScript("getp1",new object[]{pass,timesign}).ToString();
    24             p2 = wb1.InvokeScript("getp2", new object[] { pass, timesign }).ToString();
    25             p3 = wb1.InvokeScript("getp3", new object[] { pass, timesign }).ToString();
    26             m = Regex.Match(html, "<input\stype="hidden"\sid="ptk"\sname="ptk"\sid="ptk"\svalue="(?<ptk>[^"]+)"/>", RegexOptions.IgnoreCase | RegexOptions.Multiline);
    27 
    28             string ptk = m.Groups["ptk"].Value;
    29 
    30             m = Regex.Match(html, "<input\stype="hidden"\sid="cd"\sname="cd"\sid="cd"\svalue="(?<cd>[^"]+)"/>", RegexOptions.IgnoreCase | RegexOptions.Multiline);
    31             string cd = m.Groups["cd"].Value;
    32 
    33             string username = HttpUtility.UrlEncode(name);
    34 
    35             string poststr = string.Format("isweak=0&path={0}&p1={1}&p2={2}&p3={3}&timesign={4}&ptk={5}&cd={6}&username={7}&password=password&remember=on&mcresult=undefined", path, p1, p2,p3,timesign, ptk, cd, username);
    36             
    37             string postUrl = "https://passport.58.com/dounionlogin";
    38 
    39             HttpWebRequest postRequest = (HttpWebRequest)WebRequest.Create(postUrl);
    40             postRequest.Method = "POST";
    41             postRequest.Referer = "https://passport.58.com/login/";
    42             postRequest.ContentType = " application/x-www-form-urlencoded";
    43             postRequest.CookieContainer = new CookieContainer();
    44             postRequest.CookieContainer.Add(cc);
    45 
    46             byte[] postBytes = Encoding.UTF8.GetBytes(poststr);
    47             using (Stream postDataStream = postRequest.GetRequestStream())
    48             {
    49                 postDataStream.Write(postBytes, 0, postBytes.Length);
    50             }
    51             HttpWebResponse response1 = (HttpWebResponse)postRequest.GetResponse();
    52 
    53             using (StreamReader sr = new StreamReader(response1.GetResponseStream()))
    54             {
    55                 html = sr.ReadToEnd();
    56             }
    57             m = Regex.Match(html, "(?<num>\d+)"", RegexOptions.Multiline | RegexOptions.IgnoreCase);
    58             string num = m.Groups["num"].Value;           
    59             string cookies = response1.Headers["Set-Cookie"];
    60 
    61             Match m_www58com = Regex.Match(cookies, "(?<g_58com>www58com=".*?")", RegexOptions.Multiline | RegexOptions.IgnoreCase);
    62             Match m_58cooper = Regex.Match(cookies, "(?<g_58cooper>58cooper=".*?")", RegexOptions.Multiline | RegexOptions.IgnoreCase);
    63             Match m_ppu = Regex.Match(cookies, "(?<ppu>PPU=".*?")", RegexOptions.Multiline | RegexOptions.IgnoreCase);
    64             string s_www58com = m_www58com.Groups["g_58com"].Value;
    65             string s_58cooper = m_58cooper.Groups["g_58cooper"].Value;
    66             string s_ppu = m_ppu.Groups["ppu"].Value;
    67             string cook = "Cookie:" + s_58cooper + ";" + s_ppu + ";" + s_www58com;
    68 
    69             request = (HttpWebRequest)WebRequest.Create("http://my.58.com/?pts=" + num);
    70             request.Referer = "http://passport.58.com/dounionlogin";
    71             request.Method = "GET";
    72             request.Headers.Add(cook);
    73 
    74             response = (HttpWebResponse)request.GetResponse();
    75             using (StreamReader sr = new StreamReader(response.GetResponseStream()))
    76             {
    77                 html = sr.ReadToEnd();
    78             }
    79             tbx.Text = html;
    80         }
    81     }
  • 相关阅读:
    【STM32H7教程】第35章 STM32H7的定时器应用之高精度单次延迟实现(支持TIM2,3,4和5)
    【重大更新】AppWizard来了,emWin6.10版本来了
    【STM32H7教程】第34章 STM32H7的定时器应用之TIM1-TIM17的PWM实现
    【STM32H7教程】第33章 STM32H7的定时器应用之TIM1-TIM17的中断实现
    【性能测评】DSP库,MDK5的AC5,AC6,IAR和Embedded Studio的三角函数性能
    【实战经验分享】一劳永逸的解决网线随意热插拔问题
    基于STM32的无损压缩算法miniLZO移植,压缩率很高,20KB随机数压缩到638字节,耗时275us
    Java Number & Math类
    Java switch case语句
    java条件语句
  • 原文地址:https://www.cnblogs.com/sekon/p/4216127.html
Copyright © 2020-2023  润新知