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

C#/winform 腾讯QQ注册
今日不知为何,总有点感慨人生。做了程序猿已经差不多快2年了,除了工作上的软件之外,貌似从来没为自己做过什么实用的软件,比如一些快捷的工具等等。感觉着编程技术在工作上确实很难学到。特别是国内的公司,尽管更新的技术,更优秀的技术诞生了,可我们还是依然用着以前的技术,某些简单的技术,反反复复。很难找到一些挑战性的元素。于是,就找点有意思的事情来做做吧。

腾讯QQ无疑已经是国内即时通讯软件的的巨头了. 相当于国外的MSN。围绕着腾讯QQ的软件也非常多非常多,例如自动回复软件.群发消息软件等等。今天,我们就以腾讯QQ的注册为案列实现一个只需要输入验证码就能注册的C#版软件。

首先我们看看腾讯QQ的注册页面



根据这个页面,我们可以了解到,注册一个QQ的基本元素。 昵称,密码,性别,生日,所在地,验证码(一般第一次打开这个页面时没有验证码),还有立即注册的提交按钮。

在这之前,我们需要这边一个抓包工具来抓取POST包 IE HttpAnalyzer V6



安装后在IE浏览器的工具里可以找到,如上图所示。具体用法请百度了。这里将不再讲述。

PS:刚刚抓包才发现,我的IE HttpAnalyzer已经过期了。将就用HttpWatch吧。其实用哪个都一样。。

抓包结果如图





我们主要关注POST提交这一段就可以了。如图



图片可能小了。看不清楚,附上文字

下面是提交POST的信息

POST /cgi-bin/chs/numreg/get_acc?r=0.6192339314225849 HTTP/1.1
Accept: */*
Accept-Language: zh-cn
Referer: http://zc.qq.com/chs/index.html
Accept-Encoding: gzip, deflate
User-Agent: Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; WOW64; Trident/5.0)
Host: zc.qq.com
Content-Length: 487
Connection: Keep-Alive
Cache-Control: no-cache
Cookie: pt2gguin=o2863947406; pgv_pvid=7187609245; RK=4/CD46/CsN; ptui_loginuin=617975284; uin=o2863947406; skey=@qeJO2b28Y; ptisp=ctc; pgv_info=ssid=s4156213344; o_cookie=2863947406; verifysession=h00168891a5a6d40916b6ff218c92710d21caffe26443b349cba00a65b3849c8105588840fd02f67123; machineCookie=655f408c42841e99c57598d3968eebf866fa30383ff98073; zc_uid=1350381363_1822484793; sessionCookie=a20b4ac684c8f95844944206dec3534fa154a2929499851a; uoc=0-0-9-0-10-0-0-19; _new_uin=2863947406; wdl=57fe92992131b79c8df28eea424ac528a95c183264a47555; clientkey=b3c7928a115950440deb11c9e59c7f7c1fd8459b8592f2c2; index_ec=0; nick=sdfsdf

&verifycode=ovur&qzone_flag=1&country=1&province=44&city=3&isnongli=0&year=1995&month=3&day=3&isrunyue=0&password=b0b81bd39cc122dc2389abd9a6753c474ffc5cd44b29c6fae65a82d0dc9926d0ae52cfad3e70d2801f81d9fbbdaed68880d1af187d246af698ecb25c7d38795579be20cf9d553c3a9e9c70b205a8152aebd22449e0d253296d94eecad82e9583380d76dce6d91bf3760acc44e4f71ba55026e32cd9ae3601f017b757ca4bb63d&phone_num=&nick=sdfsdf&email=false&other_email=false&elevel=1&sex=1&qzdate=&jumpfrom=58030&csloginstatus=0&r5d8=w5g8

下面是提交完成后返回的数据

HTTP/1.1 200 OK
Server: QZHTTP-2.12
Date: Thu, 18 Oct 2012 02:43:42 GMT
UUID: 0
Content-Length: 61
Set-Cookie:_new_uin=1791969847; Domain=zc.qq.com; Path=/
Set-Cookie:sessionCookie=; Domain=zc.qq.com; Path=/
Set-Cookie:wdl=0341a2fea2414c9b26097c75206bb7339a25631b7f6860c5; Domain=zc.qq.com; Expires=Thu, 18 Oct 2012 03:43:42 GMT; Path=/; HTTPOnly
Set-Cookie:clientkey=bf972ece0ce54040c485d69242c3d588d7fa22a82773ffc6; Domain=zc.qq.com; Path=/
Content-Type: text/html
Connection: keep-alive

{"ec":0,"safeverifyResult":"1","type":"0","uin":"1791969847"}

----------------------------------------------------------------------

分析提交的数据

&verifycode=ovur&qzone_flag=1&country=1&province=44&city=3&isnongli=0&year=1995&month=3&day=3&isrunyue=0&password=b0b81bd39cc122dc2389abd9a6753c474ffc5cd44b29c6fae65a82d0dc9926d0ae52cfad3e70d2801f81d9fbbdaed68880d1af187d246af698ecb25c7d38795579be20cf9d553c3a9e9c70b205a8152aebd22449e0d253296d94eecad82e9583380d76dce6d91bf3760acc44e4f71ba55026e32cd9ae3601f017b757ca4bb63d&phone_num=&nick=sdfsdf&email=false&other_email=false&elevel=1&sex=1&qzdate=&jumpfrom=58030&csloginstatus=0&r5d8=w5g8

verifycode:验证码

qzone_flag:是否开通空间,1代表开通0不开通

&country=1&province=44&city=3&isnongli=0&year=1995&month=3&day=3:这些你们懂的。。

isrunyue=0:不知道什么,估计是一个固定值

password::密码你懂得后面是加密过密码的字符串