问题描述
登陆QQ会验证账号和密码,但是QQ用户那么多,它是怎么保证效率的呢?
解决方案
他的自动登录是这样搞的实现代码 private void QQLogin(string QQ,string Pwd) { System.Security.Cryptography.MD5 md5=new System.Security.Cryptography.MD5CryptoServiceProvider(); string QQPwd=Convert.ToBase64String(md5.ComputeHash(System.Text.Encoding.UTF8.GetBytes(Pwd))); System.Diagnostics.Process pro=new System.Diagnostics.Process(); pro.StartInfo.FileName=@"D:Program FilesTencentQQQQ.exe"; pro.StartInfo.Arguments="/start QQUIN:"+this.txtQQ.Text.Trim()+" PWDHASH:"+QQPwd+" /stat:40"; pro.Start(); } 实现原理: QQ自动登陆参数如下: QQ.exe(QQ路径) /START QQUIN:QQ号 PWDHASH:加密后的密码 /STAT:40 [STAT:40 (40 是隐身登陆41 是正常登陆)] D:TencentQQ.exe /START QQUIN:123456 PWDHASH:4QrcOUm6Wau+VuBX8g+IPg== /STAT:41 这就是一个QQ号码为123456,密码为123456,QQ安装路径为:D:TencentQQ.exe的QQ登陆参数,登陆方式为正常登陆。 PWDHASH的加密算法: 首先将QQ原始密码进行MD5散列算法处理,得到一个16字节的MD5 HASH字符串,然后用BASE64编码对这个HASH字符串做第二次编码,编码后的数据就是PWDHASH的值。
解决方案二:
没你想的那么复杂,用户虽然多,活跃用户有多少?活跃用户并发的访问有多少?通常活跃用户要做缓存
解决方案三:
别的就不知道了
解决方案四:
我知道他异地检测原理按QQ的通讯协议(其他的IM软件也一样),没隔一段时间(大概6秒)会向服务器提交一个心跳信息,说明自己还活着,一般在这个时候可以由服务器检查是否异地登陆了,如果是返回一个信息给客户端。知道异地登陆后怎么处理就自己搞定了 它会抓包,腾讯使用的协议是Tencent://Message
解决方案五:
去找腾讯开放平台以及OAuth