C#登录拍拍,总是提示输入有误

因为市场需求,这几天在整,用程序实现拍拍登录。

据我的经验所知,QQ登录有时候需要验证码,有时候就不需要,这个产生的原因大概是,你如果QQ经常的登录的话,说明QQ是正常的,在登录的时候,输入完用户名后,就不会提示你输入验证码。如下图:

这样,你只要输入正确密码就可以成功登录了。

而如果是经常不用的话,比如1228897656,先声明下,这两个QQ号都是我的。

在QQ账号旁边的文本框失去焦点后,就会显示验证码。因此,大概的规律就是这样子了。

该登录网址为拍拍的登录入口:

http://ui.ptlogin2.paipai.com/cgi-bin/login?appid=17000101&style=0&target=self&no_verifyimg=1&hide_title_bar=1&f_url=loginerroralert&bgcolor=eef5ff&link_target=blank&uin=&s_url=http://member.paipai.com/cgi-bin/ptlogin%3Floginfrom%3D18

校友的登录入口为:

http://ui.ptlogin2.qq.com/cgi-bin/login?appid=15000102&hide_title_bar=1&qlogin_jumpname=xiaoyou_qlogin&s_url=http://pengyou.qq.com/index.php%3Fmod%3Dlogin%26adtag%3Dfrom_index&css=http://imgcache.qq.com/campus/login/login.css&self_regurl=http://pengyou.qq.com/emailreg.html

QQ空间的登录入口为:

http://ui.ptlogin2.qq.com/cgi-bin/login?appid=15004501&bgcolor=fafeff&hide_title_bar=1&no_verifyimg=1&target=parent&link_target=blank&f_url=http%3A%2F%2Fimgcache.qq.com%2Fqzone%2Fv5%2Floginerr.html&s_url=http%3a%2f%2fuser.qzone.qq.com%2f691192287%2finfocenter&qlogin_jumpname=jump&qlogin_param=u1%3Dhttp%3a%2f%2fuser.qzone.qq.com%2f691192287%2finfocenter

不过,登录的方法都是大同小异的。腾讯区别一个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','您的输入有误, 请重试。');
真的被气死了。希望哪位仁兄,如果有这种类似的经历,可以分享一下解决方案,共同进步,一起为构建和谐社会而努力,本人定当痛哭流涕,感激涕零。

 

测试代码下载

posted on 2010-10-13 10:23  几度夕阳红了  阅读(4851)  评论(7编辑  收藏  举报