日期:2014-05-17  浏览次数:20881 次

C# 登录QQ网站并获取QQ相关信息
本文以登录http://id.qq.com为例,获取用户等级、Q龄等相关信息。
本文界面使用WPF制作 
技术涵盖:C#、wpf、HttpWebRequest、HttpWebResponse
(.net framework 4.5,当然你也可以使用4.0。不知道为什么使用3.5无法得到正确的结果,代码一模一样,还望高人指点!)


1、获取独立登录框地址


1)首先用谷歌浏览器打开http://id.qq.com,并用开发人员工具(快捷键:ctrl+shift+i)查看登陆框地址



2)Open link in new tab


到这里我们已经得到独立登陆框的地址了,方便调试和拦截请求。

成果

登录框地址:

http://ui.ptlogin2.qq.com/cgi-bin/login?appid=1006102&hide_title_bar=1&begin_time=1347444392246

&css=http%3A%2F%2Fimgcache.qq.com%2Fptcss%2Fr1%2Fjt%2F1006102%2Fpt_login.css

&f_url=loginerroralert&no_verifyimg=1&qlogin_jumpname=jump&hide_close_icon=1&s_url=http://id.qq.com/index.html


URL中有很多控制样式的参数,可简化为如下地址:

http://ui.ptlogin2.qq.com/cgi-bin/login?appid=1006102&s_url=http://id.qq.com/index.html



2、获取登录时请求的地址

通过浏览器的开发人员工具或其他HTTP拦截工具获得登录时请求的地址。

1)打开上一步得到的登录地址,并开启浏览器的开发人员工具,用以拦截请求。
2)随便输入一个号码、密码、验证码后点击登录,得到如下结果:



我们可以看到一共发送了3个请求:
请求名称 返回值 请求地址 描述
check 不通过:
ptui_checkVC('1',
'a89853e618880c1b93041bda88f5fb673c8eb5555a8850fd',
'\x00\x00\x00\x00\x01\x53\x15\x8e');

通过:
ptui_checkVC('0','!5A3',
'\x00\x00\x00\x00\x05\xef\x0f\xba');
http://check.ptlogin2.qq.com/check?
uin=22222222&appid=1006102&r=0.10299430438317358
当输入QQ号码后文本框失去焦点时发送该请求,用于检查此次登录是否需要验证码。
getimage 验证码图片 http://captcha.qq.com/getimage?aid=1006102&r=0.06791123608127236&uin=22222222 如果上一步的check方法不通过则会自动发送这个请求获取验证码。
login