萧规曹随登录计算,开发总括

在开发者界面用能够见到不少ptqrlogin开端的 name

smart qqC#支出总括:

美高梅开户网址 1美高梅开户网址 2/**//// <summary>  登录
美高梅开户网址 3        /// </summary>
美高梅开户网址 4        /// <param name=”url”></param>
美高梅开户网址 5        /// <param name=”paramList”></param>
美高梅开户网址 6        /// <returns></returns>
美高梅开户网址 7        public static string Login(String url, String paramList)
美高梅开户网址 8美高梅开户网址 9        美高梅开户网址 10{
美高梅开户网址 11            HttpWebResponse res = null;
美高梅开户网址 12            string strResult = “”;
美高梅开户网址 13            try
美高梅开户网址 14美高梅开户网址 15            美高梅开户网址 16{
美高梅开户网址 17                HttpWebRequest req = (HttpWebRequest)WebRequest.Create(url);
美高梅开户网址 18                req.Method = “POST”;
美高梅开户网址 19                req.ContentType = “application/x-www-form-urlencoded”;
美高梅开户网址 20                req.AllowAutoRedirect = false;
美高梅开户网址 21                CookieContainer cookieCon = new CookieContainer();
美高梅开户网址 22                req.CookieContainer = cookieCon;
美高梅开户网址 23                StringBuilder UrlEncoded = new StringBuilder();
美高梅开户网址 24美高梅开户网址 25萧规曹随登录计算,开发总括。                Char[] reserved = 美高梅开户网址 26{ ‘?’, ‘=’, ‘&’ };
美高梅开户网址 27                byte[] SomeBytes = null;
美高梅开户网址 28                if (paramList != null)
美高梅开户网址 29美高梅开户网址 30                美高梅开户网址 31{
美高梅开户网址 32                    int i = 0, j;
美高梅开户网址 33                    while (i < paramList.Length)
美高梅开户网址 34美高梅开户网址 35                    美高梅开户网址 36{
美高梅开户网址 37                        j = paramList.IndexOfAny(reserved, i);
美高梅开户网址 38                        if (j == -1)
美高梅开户网址 39美高梅开户网址 40                        美高梅开户网址 41{
美高梅开户网址 42                            UrlEncoded.Append(HttpUtility.UrlEncode(paramList.Substring(i, paramList.Length – i)));
美高梅开户网址 43                            break;
美高梅开户网址 44                        }
美高梅开户网址 45                        UrlEncoded.Append(HttpUtility.UrlEncode(paramList.Substring(i, j – i)));
美高梅开户网址 46                        UrlEncoded.Append(paramList.Substring(j, 1));
美高梅开户网址 47                        i = j + 1;
美高梅开户网址 48                    }
美高梅开户网址 49                    SomeBytes = Encoding.UTF8.GetBytes(UrlEncoded.ToString());
美高梅开户网址 50                    req.ContentLength = SomeBytes.Length;
美高梅开户网址 51                    Stream newStream = req.GetRequestStream();
美高梅开户网址 52                    newStream.Write(SomeBytes, 0, SomeBytes.Length);
美高梅开户网址 53                    newStream.Close();
美高梅开户网址 54                }
美高梅开户网址 55                else
美高梅开户网址 56美高梅开户网址 57                美高梅开户网址 58{
美高梅开户网址 59                    req.ContentLength = 0;
美高梅开户网址 60                }
美高梅开户网址 61
美高梅开户网址 62                res = (HttpWebResponse)req.GetResponse();
美高梅开户网址 63                cookieheader = req.CookieContainer.GetCookieHeader(new Uri(url));
美高梅开户网址 64                Stream ReceiveStream = res.GetResponseStream();
美高梅开户网址 65                Encoding encode = System.Text.Encoding.GetEncoding(“GBK”);
美高梅开户网址 66                StreamReader sr = new StreamReader(ReceiveStream, encode);
美高梅开户网址 67                Char[] read = new Char[256];
美高梅开户网址 68                int count = sr.Read(read, 0, 256);
美高梅开户网址 69                while (count > 0)
美高梅开户网址 70美高梅开户网址 71                美高梅开户网址 72{
美高梅开户网址 73                    String str = new String(read, 0, count);
美高梅开户网址 74                    strResult += str;
美高梅开户网址 75                    count = sr.Read(read, 0, 256);
美高梅开户网址 76                }
美高梅开户网址 77            }
美高梅开户网址 78            catch (Exception e)
美高梅开户网址 79美高梅开户网址 80            美高梅开户网址 81{
美高梅开户网址 82                strResult = e.ToString();
美高梅开户网址 83            }
美高梅开户网址 84            finally
美高梅开户网址 85美高梅开户网址 86            美高梅开户网址 87{
美高梅开户网址 88                if (res != null)
美高梅开户网址 89美高梅开户网址 90                美高梅开户网址 91{
美高梅开户网址 92                    res.Close();
美高梅开户网址 93                }
美高梅开户网址 94            }
美高梅开户网址 95            return strResult;
美高梅开户网址 96        }
美高梅开户网址 97美高梅开户网址 98        /**//// <summary>  获取页面HTML
美高梅开户网址 99        /// </summary>
美高梅开户网址 100        /// <param name=”url”></param>
美高梅开户网址 101        /// <param name=”paramList”></param>
美高梅开户网址 102        /// <returns></returns>
美高梅开户网址 103        public static string getPage(String url, String paramList)
美高梅开户网址 104美高梅开户网址 105        美高梅开户网址 106{
美高梅开户网址 107            HttpWebRequest req = (HttpWebRequest)WebRequest.Create(url);
美高梅开户网址 108            req.Headers[“If-None-Match”] = “36d0ed736e88c71:d9f”;
美高梅开户网址 109            req.Referer = “”;
美高梅开户网址 110            CookieContainer cookieCon = new CookieContainer();
美高梅开户网址 111            req.CookieContainer = cookieCon;
美高梅开户网址 112            req.CookieContainer.SetCookies(new Uri(url), cookieheader);
美高梅开户网址 113            HttpWebResponse res = (HttpWebResponse)req.GetResponse();
美高梅开户网址 114            StreamReader sr = new StreamReader(res.GetResponseStream(),Encoding.Default);
美高梅开户网址 115            string strResult = sr.ReadToEnd();
美高梅开户网址 116            sr.Close();
美高梅开户网址 117            return strResult;
美高梅开户网址 118        }

美高梅开户网址 119

全体开发下来其实某个都不是很难,从壹初步二维码
获取到最终的收发音讯,基本上都是效仿浏览器的操作。都以基于http通信。一下正是本次新手学习http协议的最首要的二个类

调用:

美高梅开户网址 120/// <summary>  登录
美高梅开户网址 121        /// </summary>
美高梅开户网址 122        /// <param name=”url”></param>
美高梅开户网址 123        /// <param name=”paramList”></param>
美高梅开户网址 124        /// <returns></returns>
美高梅开户网址 125        public static string Login(String url, String paramList)
美高梅开户网址 126        {
美高梅开户网址 127            HttpWebResponse res = null;
美高梅开户网址 128            string strResult = “”;
美高梅开户网址 129            try
美高梅开户网址 130            {
美高梅开户网址 131                HttpWebRequest req = (HttpWebRequest)WebRequest.Create(url);
美高梅开户网址 132                req.Method = “POST”;
美高梅开户网址 133                req.ContentType = “application/x-www-form-urlencoded”;
美高梅开户网址 134                req.AllowAutoRedirect = false;
美高梅开户网址 135                CookieContainer cookieCon = new CookieContainer();
美高梅开户网址 136                req.CookieContainer = cookieCon;
美高梅开户网址 137                StringBuilder UrlEncoded = new StringBuilder();
美高梅开户网址 138                Char[] reserved = { ‘?’, ‘=’, ‘&’ };
美高梅开户网址 139                byte[] SomeBytes = null;
美高梅开户网址 140                if (paramList != null)
美高梅开户网址 141                {
美高梅开户网址 142                    int i = 0, j;
美高梅开户网址 143                    while (i < paramList.Length)
美高梅开户网址 144                    {
美高梅开户网址 145                        j = paramList.IndexOfAny(reserved, i);
美高梅开户网址 146                        if (j == -1)
美高梅开户网址 147                        {
美高梅开户网址 148                            UrlEncoded.Append(HttpUtility.UrlEncode(paramList.Substring(i, paramList.Length – i)));
美高梅开户网址 149                            break;
美高梅开户网址 150                        }
美高梅开户网址 151                        UrlEncoded.Append(HttpUtility.UrlEncode(paramList.Substring(i, j – i)));
美高梅开户网址 152                        UrlEncoded.Append(paramList.Substring(j, 1));
美高梅开户网址 153                        i = j + 1;
美高梅开户网址 154                    }
美高梅开户网址 155                    SomeBytes = Encoding.UTF8.GetBytes(UrlEncoded.ToString());
美高梅开户网址 156                    req.ContentLength = SomeBytes.Length;
美高梅开户网址 157                    Stream newStream = req.GetRequestStream();
美高梅开户网址 158                    newStream.Write(SomeBytes, 0, SomeBytes.Length);
美高梅开户网址 159                    newStream.Close();
美高梅开户网址 160                }
美高梅开户网址 161                else
美高梅开户网址 162                {
美高梅开户网址 163                    req.ContentLength = 0;
美高梅开户网址 164                }
美高梅开户网址 165
美高梅开户网址 166                res = (HttpWebResponse)req.GetResponse();
美高梅开户网址 167                cookieheader = req.CookieContainer.GetCookieHeader(new Uri(url));
美高梅开户网址 168                Stream ReceiveStream = res.GetResponseStream();
美高梅开户网址 169                Encoding encode = System.Text.Encoding.GetEncoding(“GBK”);
美高梅开户网址 170                StreamReader sr = new StreamReader(ReceiveStream, encode);
美高梅开户网址 171                Char[] read = new Char[256];
美高梅开户网址 172                int count = sr.Read(read, 0, 256);
美高梅开户网址 173                while (count > 0)
美高梅开户网址 174                {
美高梅开户网址 175                    String str = new String(read, 0, count);
美高梅开户网址 176                    strResult += str;
美高梅开户网址 177                    count = sr.Read(read, 0, 256);
美高梅开户网址 178                }
美高梅开户网址 179            }
美高梅开户网址 180            catch (Exception e)
美高梅开户网址 181            {
美高梅开户网址 182                strResult = e.ToString();
美高梅开户网址 183            }
美高梅开户网址 184            finally
美高梅开户网址 185            {
美高梅开户网址 186                if (res != null)
美高梅开户网址 187                {
美高梅开户网址 188                    res.Close();
美高梅开户网址 189                }
美高梅开户网址 190            }
美高梅开户网址 191            return strResult;
美高梅开户网址 192        }
美高梅开户网址 193        /// <summary>  获取页面HTML
美高梅开户网址 194        /// </summary>
美高梅开户网址 195        /// <param name=”url”></param>
美高梅开户网址 196        /// <param name=”paramList”></param>
美高梅开户网址 197        /// <returns></returns>
美高梅开户网址 198        public static string getPage(String url, String paramList)
美高梅开户网址 199        {
美高梅开户网址 200            HttpWebRequest req = (HttpWebRequest)WebRequest.Create(url);
美高梅开户网址 201            req.Headers[“If-None-Match”] = “36d0ed736e88c71:d9f”;
美高梅开户网址 202            req.Referer = “”;
美高梅开户网址 203            CookieContainer cookieCon = new CookieContainer();
美高梅开户网址 204            req.CookieContainer = cookieCon;
美高梅开户网址 205            req.CookieContainer.SetCookies(new Uri(url), cookieheader);
美高梅开户网址 206            HttpWebResponse res = (HttpWebResponse)req.GetResponse();
美高梅开户网址 207            StreamReader sr = new StreamReader(res.GetResponseStream(),Encoding.Default);
美高梅开户网址 208            string strResult = sr.ReadToEnd();
美高梅开户网址 209            sr.Close();
美高梅开户网址 210            return strResult;
美高梅开户网址 211        }

自家要做的即是 
模拟浏览器的操作,把它转换来大家团结的客户端。所以只固然浏览器里一些大家都要效仿。接下来判断2维码失效,两秒一次啊,弄三个Timer

/// <summary>
/// HTTP网络通讯类
/// </summary>
public static class HTTP
{

        string postData =
“userName=admin&password=pass&area=2006&Submit=%B5%C7+%C2%BC”;            
        string strLogin, strResult;
        strLogin = Login(“”, postData);

调用:

 

public static CookieContainer cookies = new CookieContainer();
static CookieCollection CookieCollection = new CookieCollection();
static CookieContainer CookieContainer = new CookieContainer();
/// <summary>
/// HTTP请求
/// </summary>
/// <param name=”url”>连接</param>
/// <param name=”enc”>编码</param>
/// <returns></returns>
public static string HttpGet(string url, Encoding enc)
{
HttpWebRequest request = (HttpWebRequest)WebRequest.Create;
request.Timeout = 10000;//设置10秒超时
request.Proxy = null;
request.Method = “GET”;
request.ContentType = “application/x-www-from-urlencoded”;
WebResponse response = request.GetResponse();
StreamReader reader = new StreamReader(response.GetResponseStream;
StringBuilder sb = new StringBuilder();
sb.Append(reader.ReadToEnd;
reader.Close();
reader.Dispose();
response.Close();
return sb.ToString();
}
/// <summary>
/// 带referer的http请求连接
/// </summary>
/// <param name=”url”></param>
/// <param name=”referer”></param>
/// <param name=”timeout”></param>
/// <param name=”encode”></param>
/// <param name=”NoProxy”></param>
/// <returns></returns>
public static string Get(string url, string referer =
“”, int
timeout = 100000, Encoding encode = null, bool NoProxy = false)
{
string dat;
HttpWebResponse res = null;
HttpWebRequest req;
try
{
req = (HttpWebRequest)WebRequest.Create;
req.CookieContainer = cookies;
req.AllowAutoRedirect = false;
req.Timeout = timeout;
req.Referer = referer;
if
req.Proxy = null;
req.UserAgent = “Mozilla/5.0 (Windows NT 10.0;%20WOW64; rv:47.0)
Gecko/20100101 Firefox/47.0”;
res = (HttpWebResponse)req.GetResponse();

         strResult = getPage(“”, “”);
//输出
         this.webBrowser1.Document.Write(strResult);

        string postData =
“userName=admin&password=pass&area=2006&Submit=%B5%C7+%C2%BC”;            
        string strLogin, strResult;
        strLogin = Login(“”, postData);

 

cookies.Add(res.Cookies);
}
catch (HttpException)
{
return “”;
}
catch (WebException)
{
return “”;
}
StreamReader reader;

         strResult = getPage(“”, “”);
//输出
         this.webBrowser1.Document.Write(strResult);

smart 类

reader = new StreamReader(res.GetResponseStream(), encode == null ?
Encoding.UTF8 : encode);
dat = reader.ReadToEnd();

#region 第2讲检查贰维码状态
private static System.Timers.Timer StatuTimer = new
System.Timers.Timer();
public static void Login()
{
StatuTimer.AutoReset = true;
StatuTimer.Elapsed +=StatuTimer_Elapsed;
StatuTimer.Interval = 2000;
StatuTimer.Start();
}

res.Close();
req.Abort();

public static string Login_err = “其他”;
/// <summary>
/// 检查2维码状态
/// </summary>
public static void Login_GetStatu()
{
string dat;
dat =
HTTP.Get(string.Format(“”,
ptqrtoken));
string[] temp = dat.Split(‘\”);
switch (temp[1])
{
case (“陆伍”): //二维码失效
Login_err = “二维码失效”;
break;
case (“66”): //等待扫描
Login_err = “等待扫描”;
break;
case (“陆七”): //等待确认
Login_err = “等待确认”;
break;
case (“0”): //已经确认
Login_err = “已经肯定”;
StatuTimer.Stop();
break;

return dat;
}
/// <summary>
/// 带referer data的http post
/// </summary>
/// <param name=”url”></param>
/// <param name=”data”></param>
/// <param name=”Referer”></param>
/// <param name=”timeout”></param>
/// <param name=”encode”></param>
/// <returns></returns>
public static string Post(string url, string data, string Referer =

method= “POST”, int timeout = 100000, Encoding encode = null)
{
string dat = “”;
HttpWebRequest req;
try
{
req = WebRequest.Create as HttpWebRequest;
req.CookieContainer = cookies;
req.ContentType = “application/x-www-form-urlencoded”;
req.Method = method;
req.Proxy = null;
req.Timeout = timeout;
req.UserAgent = “Mozilla/5.0 (Windows NT 10.0;%20WOW64; rv:47.0)
Gecko/20100101 Firefox/47.0”;
req.ProtocolVersion = HttpVersion.Version10;
req.Referer = Referer;

default: break;
}

byte[] mybyte = Encoding.Default.GetBytes;
req.ContentLength = mybyte.Length;

}

Stream stream = req.GetRequestStream();
stream.Write(mybyte, 0, mybyte.Length);

/// <summary>
/// 每两秒检查贰回贰维码状态
/// </summary>
private static void StatuTimer_Elapsed(object sender,
System.Timers.ElapsedEventArgs e)
{
Login_GetStatu();
}
#endregion

HttpWebResponse res = req.GetResponse() as HttpWebResponse;

 

cookies.Add(res.Cookies);
stream.Close();

 

StreamReader SR = new StreamReader(res.GetResponseStream(), encode ==
null ? Encoding.UTF8 : encode);
dat = SR.ReadToEnd();
res.Close();
req.Abort();
}
catch (HttpException)
{
return “”;
}
catch (WebException)
{
return “”;
}

HTTP 类

return dat;
}
/// <summary>
/// Hash 转换
/// </summary>
/// <param name=”s”></param>
/// <returns></returns>
public static int Hash33
{
美高梅开户网址 ,var e = 0;
foreach (var t in s)
e += (e << 5) + t;
return int.MaxValue & e;
}
/// <summary>
/// 获取CookieCollection下 所有cookie
/// </summary>
/// <param name=”cc”></param>
/// <returns></returns>
public static string GetAllCookies(CookieCollection cc)
{
//List<Cookie> lstCookies = new List<Cookie>();
string lstCookies = “”;
ArrayList table = (ArrayList)cc.GetType().InvokeMember(“m_list”,
System.Reflection.BindingFlags.NonPublic |
System.Reflection.BindingFlags.GetField |
System.Reflection.BindingFlags.Instance, null, cc, new object[] { });

 

if (table != null)
{
for (int i = 0; i < table.Count; i++)
{
string[] tacookie = table[i].ToString().Split;
lstCookies = tacookie[1].ToString;
}
}

/// <summary>
/// 带referer的http请求连接
/// </summary>
/// <param name=”url”></param>
/// <param name=”referer”></param>
/// <param name=”timeout”></param>
/// <param name=”encode”></param>
/// <param name=”NoProxy”></param>
/// <returns></returns>
public static string Get(string url, string referer =
“”, int
timeout = 100000, Encoding encode = null, bool NoProxy = false)
{
string dat;
HttpWebResponse res = null;
HttpWebRequest req;
try
{
req = (HttpWebRequest)WebRequest.Create(url);
req.CookieContainer = cookies;
req.AllowAutoRedirect = false;
req.Timeout = timeout;
req.Referer = referer;
if (NoProxy)
req.Proxy = null;
req.UserAgent = “Mozilla/5.0 (Windows NT 10.0;%20WOW64; rv:47.0)
Gecko/20100101 Firefox/47.0”;
res = (HttpWebResponse)req.GetResponse();

return lstCookies;
}
public delegate void Post_Async_Action(string data);
private class Post_Async_Data
{
public HttpWebRequest req;
public Post_Async_Action post_Async_Action;
}
public static void Post_Async(string url, string PostData,
Post_Async_Action action, string Referer =
“”, int
timeout = 100000)
{
HttpWebRequest req = WebRequest.Create as HttpWebRequest;
req.CookieContainer = cookies;
req.ContentType = “application/x-www-form-urlencoded”;
req.Method = “POST”;
req.Referer = Referer;
req.UserAgent = “Mozilla/5.0 (Windows NT 10.0;%20WOW64; rv:47.0)
Gecko/20100101 Firefox/47.0”;
req.Proxy = null;
req.ProtocolVersion = HttpVersion.Version10;
req.ContinueTimeout = timeout;

cookies.Add(res.Cookies);
}
catch (HttpException)
{
return “”;
}
catch (WebException)
{
return “”;
}
StreamReader reader;

ASCIIEncoding encoding = new ASCIIEncoding();
byte[] data = encoding.GetBytes;
Stream stream = req.GetRequestStream();
stream.Write(data, 0, data.Length);
stream.Close();

reader = new StreamReader(res.GetResponseStream(), encode == null ?
Encoding.UTF8 : encode);
dat = reader.ReadToEnd();

Post_Async_Data dat = new Post_Async_Data();
dat.req = req;
dat.post_Async_Action = action;
req.BeginGetResponse(new AsyncCallback(Post_Async_ResponesProceed),
dat);
}

res.Close();
req.Abort();

private static void Post_Async_ResponesProceed(IAsyncResult ar)
{
StreamReader reader = null;
Post_Async_Data dat = ar.AsyncState as Post_Async_Data;
HttpWebRequest req = dat.req;
HttpWebResponse res = req.GetResponse() as HttpWebResponse;
reader = new StreamReader(res.GetResponseStream;
string temp = reader.ReadToEnd();
res.Close();
req.Abort();
dat.post_Async_Action;
}
}

return dat;
}

从而计算下来差不七只尽管驾驭一点http协议,基本上网页版的主次,大家都能够任意的转换到图形桌面版,从而依据自身小编业务拓展付出。

 

其次本人接触过
最多的正是Taobao客,TaobaoTmall京东店数据,当然那个都以法定api的。kaola jd
tianmao 等购物网址的分类,商品数量爬取分析。

首先次发新手教程很多也许看的不是很清楚,可是有源码。能够依据源码的笺注举行学习。当中最重大的是json的分析了。因为自身也是新手,所以众多都是要查一下材质才清楚的。希望这几讲能给一些学习http协议的新手壹些启发(小编也是新手,说错勿怪。)

接下去正是做个图形界面包车型客车smart qq机器人。

发表评论

电子邮件地址不会被公开。 必填项已用*标注

网站地图xml地图