private Boolean LoginWebQQ(QQstatus status) { //* 成功JSON范例 //* {"retcode":0,"result":{"uin":QQ,"mode":"master","index":1056,"port":39085,"status":"online","vfwebqq":"80个字符","psessionid":"134个字符"}} var rs = "{0}\"status\":\"{1}\",\"ptwebqq\":\"{2}\",\"passwd_sig\":\"\",\"clientid\":\"{3}\",\"psessionid\":\"{4}\"{5}"; rs = String.Format(rs, "r={", status.ToString().ToLower(), Ptwebqq, Clientid, Psessionid, "}"); rs = String.Format("{0}&clientid={1}&psessionid={2}", rs, Clientid, Psessionid); //rs = HttpUtility.UrlDecode(rs, Encoding.UTF8); rs = CreateRequest("http://d.web2.qq.com/channel/login2", rs, true); //Console.Write("登陆WEB结果:"); //Console.WriteLine(rs); if (!rs.Contains("retcode\":0")) { badcount = 10; return(false); } dynamic jsonengine = new JavaScriptSerializer().DeserializeObject(rs); this.runinfo[5] = jsonengine["result"]["vfwebqq"].ToString(); this.runinfo[6] = jsonengine["result"]["psessionid"].ToString(); this.runinfo[9] = jsonengine["result"]["port"].ToString(); //post属性,屏蔽群用 this.runinfo[10] = jsonengine["result"]["index"].ToString(); //index属性,屏蔽群用 badcount = 0; timers.Start(); return(IsOnlines); }
/// <summary> /// 改变QQ状态 /// </summary> /// <param name="qqstaus">在线状态枚举</param> /// <returns>更改是否成功</returns> public Boolean ChangerStatus(QQstatus qqstaus) { using (var sre = new StreamReader(CreateRequest(String.Format("http://d.web2.qq.com/channel/change_status2?newstatus={0}&clientid={1}&psessionid={2}&t={3}&vfwebqq={4}", qqstaus.ToString().ToLower(), Clientid, Psessionid, getTime(DateTime.Now), Vfwebqq), String.Empty))) { return(sre.ReadToEnd().Contains("ok")); } }
/// <summary> /// 登陆QQ /// </summary> /// <see>http://www.fokite.com/</see> /// <param name="status">在线状态</param> /// <returns>是否成功</returns> public Boolean Login(QQstatus status) { if (String.IsNullOrEmpty(runinfo[3]))//没有密钥 { badcount = 11; var rs = "http://ptlogin2.qq.com/login?u={0}&p={1}&verifycode={2}&webqq_type={3}&remember_uin=1&login2qq=1&aid=1003903&u1=http%3A%2F%2Fweb.qq.com%2Floginproxy.html%3Flogin2qq%3D1%26webqq_type%3D{3}&h=1&ptredirect=0&ptlang=2052&from_ui=1&pttype=1&dumy=&fp=loginerroralert&mibao_css=m_webqq"; rs = String.Format(rs, Qqnumber, getPassword(Qqpassword, runinfo[8]), runinfo[8], (Int32)status); using (StreamReader sre = new StreamReader(CreateRequest(rs, String.Empty))) { String[] loginingmsg = new String[5]; loginingmsg = sre.ReadToEnd().Replace("ptuiCB('", String.Empty).Replace("');", String.Empty).Replace("','", "|").Split('|'); if (!(loginingmsg[1].StartsWith("0") && loginingmsg[2].Contains("qq.com"))) { return(false); } runinfo[2] = loginingmsg[2]; //放进引用页 runinfo[3] = loginingmsg[4]; //放进登陆密钥 } } return(LoginWebQQ(status)); }