public void Run(QqContext context) { if (context.QqMsgStatus == QqMsgStatus.Fail) { return; } var miniBrowser = (ScrapingBrowser)context["miniBrowser"]; var ptwebqq = context["ptwebqq"].ToString(); var qqNumber = context["userName"].ToString(); var hash = NewPasswordHelper.GetQqHash(qqNumber, ptwebqq); var vfwebqq = context["vfwebqq"].ToString(); var json = string.Format("r={{\"vfwebqq\":\"{0}\",\"hash\":\"{1}\"}}", vfwebqq, hash); var result = miniBrowser.NavigateTo(new Uri(Constants.QqMsgFriends), HttpVerb.Post, json); var qqMsgFriendResult = JsonConvert <QqMsgFriendResult> .JsonToObject(result); var query = from f in qqMsgFriendResult.Result.Friends join i in qqMsgFriendResult.Result.Info on f.Uin equals i.Uin into table1 from t1 in table1.DefaultIfEmpty() join m in qqMsgFriendResult.Result.Marknames on f.Uin equals m.Uin into table2 from t2 in table2.DefaultIfEmpty() select new Friend() { Uin = f.Uin, Face = t1 == null ? string.Empty : t1.Face, Category = f.Categories, Nick = t1 == null ? string.Empty : t1.Nick, MarkName = t2 == null ? string.Empty : t2.Markname }; var nick = context["nick"].ToString(); var uin = query.First(x => x.Nick == nick).Uin; context["uin"] = uin; context.IsReady = true; }
public void Run(QqContext context) { var miniBrowser = (ScrapingBrowser)context["miniBrowser"]; var code = context["code"].ToString(); if (!string.IsNullOrWhiteSpace(code)) { var userName = context["userName"].ToString(); var pwd = context["pwd"].ToString(); var postForm = new NameValueCollection(); postForm["u"] = userName; postForm["verifycode"] = code; postForm["p"] = NewPasswordHelper.GetPassword(context["qq16"].ToString(), pwd, code); postForm["aid"] = Constants.QqAppId; postForm["u1"] = "http://w.qq.com/proxy.html?login2qq=1&webqq_type=10"; postForm["h"] = "1"; //postForm["ptredirect"] = "0"; //postForm["ptlang"] = "2052"; postForm["webqq_type"] = "10"; postForm["remember_uin"] = "1"; postForm["login2qq"] = "1"; postForm["ptredirect"] = "0"; postForm["ptlang"] = "2052"; postForm["daid"] = "164"; postForm["from_ui"] = "1"; postForm["pttype"] = "1"; postForm["action"] = "0-66-182865"; postForm["fp"] = "loginerroralert"; postForm["mibao_css"] = "m_webqq"; postForm["js_type"] = "0"; postForm["js_ver"] = "10114"; postForm["pt_verifysession_v1"] = context["verifysession"].ToString(); //登录 var htmlStr = miniBrowser.NavigateTo(new Uri(Constants.QqMsgLoginPage), HttpVerb.Get, postForm); int checkCodePosition = htmlStr.IndexOf("(", StringComparison.Ordinal) + 1; var checkCode = htmlStr.Substring(checkCodePosition, htmlStr.LastIndexOf(")", StringComparison.Ordinal) - checkCodePosition); var checkArray = checkCode.Replace("'", "").Split(','); //验证码数组 //Console.WriteLine(htmlStr); if (htmlStr.Contains("登录成功")) { context.QqMsgStatus = QqMsgStatus.Login; var ptwebqq = miniBrowser.GetCookie(new Uri(Constants.QqMsgLoginPage), "ptwebqq"); var skey = miniBrowser.GetCookie(new Uri(Constants.QqMsgLoginPage), "skey"); context["ptwebqq"] = ptwebqq.Value; context["skey"] = skey.Value; //更新cookie miniBrowser.NavigateTo(new Uri(checkArray[2]), HttpVerb.Get, ""); var json = string.Format( "r={{\"ptwebqq\":\"{0}\",\"clientid\":{1},\"psessionid\":\"\",\"status\":\"online\"}}", ptwebqq.Value, Constants.ClientId); var result = miniBrowser.NavigateTo(new Uri(Constants.QqMsgLoginOnline), HttpVerb.Post, json); var qqMsgLoginResult = JsonConvert <QqMsgLoginResult> .JsonToObject(result); if (qqMsgLoginResult.Retcode == 0) { context["vfwebqq"] = qqMsgLoginResult.Result.Vfwebqq; context["psessionid"] = qqMsgLoginResult.Result.PsessionId; } else { context.QqMsgStatus = QqMsgStatus.Fail; } //Console.WriteLine(result); } else { Log.Log4Logger.Info(htmlStr); context.QqMsgStatus = QqMsgStatus.Fail; } } else { context.QqMsgStatus = QqMsgStatus.Fail; } }