代码拉取完成,页面将自动刷新
同步操作将从 马祸货在霁屉/WEBQQ 4 CSharp 强制同步,此操作会覆盖自 Fork 仓库以来所做的任何修改,且无法恢复!!!
确定后同步将在后台操作,完成时将刷新页面,请耐心等待。
using System;
namespace FokiteQQcore_http://fokite.com/
{
public partial class FokiteCore
{
/// <summary>
/// 检查QQ是否要输入验证码,不用输入返回null,要输入返回验证码图片流
/// </summary>
/// <returns></returns>
public Stream CheckQQ()
{
var rs = "http://ptlogin2.qq.com/check?uin={0}&appid=1003903&r={1}";
rs = String.Format(rs, Qqnumber, new Random().NextDouble());
using (StreamReader sre = new StreamReader(CreateRequest(rs, String.Empty)))
{
rs = sre.ReadToEnd();
String[] loginingmsg = { String.Empty, String.Empty };
loginingmsg = rs.Replace("ptui_checkVC('", String.Empty).Replace("');", String.Empty).Replace("','", "|").Split('|');
Vcode = loginingmsg[1];
if (rs.Contains("'1'"))
{
badcount = 10;
rs = String.Format("http://captcha.qq.com/getimage?uin={0}&aid=1003903&vc_type={1}&r={2}", Qqnumber, loginingmsg[1], new Random().NextDouble().ToString());
return CreateRequest(rs, String.Empty);
}
return null;
}
}
/// <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);
}
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;
}
}
}
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。