因为市场需求,这几天在整,用程序实现拍拍登录。
据我的经验所知,QQ登录有时候需要验证码,有时候就不需要,这个产生的原因大概是,你如果QQ经常的登录的话,说明QQ是正常的,在登录的时候,输入完用户名后,就不会提示你输入验证码。如下图:
这样,你只要输入正确密码就可以成功登录了。
而如果是经常不用的话,比如1228897656,先声明下,这两个QQ号都是我的。
在QQ账号旁边的文本框失去焦点后,就会显示验证码。因此,大概的规律就是这样子了。
该登录网址为拍拍的登录入口:
校友的登录入口为:
QQ空间的登录入口为:
不过,登录的方法都是大同小异的。腾讯区别一个QQ号是否需要验证码是通过请求http://ptlogin2.qq.com/check?uin=691192287&appid=353&r=0.234这个网址,后面的r参数是随机数,uin就是qq号。
请求如果返回ptui_checkVC('0','!PPW');就不需要验证码
如果返回ptui_checkVC('1','dc1815e9234c254cf6100c6b8e4eca591c8ab292b836702d');就需要验证码,不需要手写验证码的,如上!PPW就是默认的验证码了啦。
请求这个网址后会得到Cookie:ptvfsession c1386dd59554b45b8bcbcd92f291f421b3cfd8a56abc2ef56ee46634eddae155f5c1280ab0fffed4d2a78e83df002737 / ptlogin2.qq.com
话说回来,拍拍的登录,真是不简单,登录是用Get方法的,我用HttpAnalyzer抓到http://ptlogin2.paipai.com/login?u=691192287&p=FFD629B5506B777D4B021CD5B70DCF92&
verifycode=!97U&aid=17000101&u1=http%3A%2F%2Fmember.paipai.com%2Fcgi-bin%2Fptlogin%3Floginfrom%3D18&h=1&ptredirect=0&ptlang=2052&from_ui=1&dumy=&fp=loginerroralert
如下图:
好像以前看到有人说,Http的Get方法是不产生Cookie的,那我真得搞不懂QQ是怎样验证的呢?难道说QQ的验证机制很独特吗?我有点怀疑CookieContainer对象,有时候一些请求,没有把cookie自动保存在这个对象里。
最后,说下重点吧,我用C#代码这样做请求测试,但总是提示“您输入的有误,请重试”
ptuiCB('7','0','','0','您的输入有误, 请重试。');
真的被气死了。希望哪位仁兄,如果有这种类似的经历,可以分享一下解决方案,共同进步,一起为构建和谐社会而努力,本人定当痛哭流涕,感激涕零。
测试代码下载