随笔 - 149  文章 - 8  评论 - 248  阅读 - 21万

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   几度夕阳红了  阅读(4886)  评论(7编辑  收藏  举报
编辑推荐:
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
阅读排行:
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· .NET周刊【3月第1期 2025-03-02】
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· [AI/GPT/综述] AI Agent的设计模式综述
< 2010年10月 >
26 27 28 29 30 1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
31 1 2 3 4 5 6

点击右上角即可分享
微信分享提示