腾讯通用账号登陆协议

上传人:ji****72 文档编号:39545172 上传时间:2018-05-17 格式:DOC 页数:13 大小:61.50KB
返回 下载 相关 举报
腾讯通用账号登陆协议_第1页
第1页 / 共13页
腾讯通用账号登陆协议_第2页
第2页 / 共13页
腾讯通用账号登陆协议_第3页
第3页 / 共13页
腾讯通用账号登陆协议_第4页
第4页 / 共13页
腾讯通用账号登陆协议_第5页
第5页 / 共13页
点击查看更多>>
资源描述

《腾讯通用账号登陆协议》由会员分享,可在线阅读,更多相关《腾讯通用账号登陆协议(13页珍藏版)》请在金锄头文库上搜索。

1、http:/ ip 登录,那么返回值就是另外的一种返回值了,那表明需要进行图片验证码验证。 此外,0还有可能变为其他的数值,用来标明诸如帐号不存在,帐号状态不正确,帐号已锁定等等的。 。 。 。 。而后面的!AFO 是四位则是我们需要获得的原始令牌值,它是由腾讯服务器随机生成的一个令牌的原始密钥。当然也许您在获取的时候会发现这个值并不是4位,而是很多位。那么就要恭喜您了,您获得也是令牌的原始密钥,只不过不同的是,您获得是图片验证码的原始密钥而已。 当然其实图形验证码的自动识别也很简单,只是这已经超出本文的范围了,以后有机会可以与大家再次分享下。此时,当我们正确的获得!AFO 时就已经完成了第一

2、次的验证!但是有一点需要注意的是:腾讯的令牌是存储在 cookies 中的, 所以请注意每次操作都必须要保存好服务器返回来的 cookies。以下为 python 语言写的的示例代码,此代码可以从 http:/ 中的pushmodel.py 文件中获取。 01 def Get_qq_msg_val(self,username,password): 02 verifyURL = http:/ U; Linux i686; en-US) AppleWebKit/525.13 (KHTML, like Gecko)_chrome/0.4.2.80 Safari/525.13, 13 ,) 14 co

3、okie1 = Cookie.SimpleCookie(result.headers.get(set-cookie, ) 15 verifyCode=result.content18:-3 16 if len(verifyCode)4: 17 return False,None 18 loginURL += “u=%s U; Linux i686; en-US) AppleWebKit/525.13 (KHTML, like Gecko)_chrome/0.4.2.80 Safari/525.13, 26 , 27 method=urlfetch.GET, 28 follow_redirect

4、s = False, 29 ) 30 setCookies = result.headers.get(set-cookie, ).split(;) 31 cookie2 = 32 cookie2+=setCookies29 33 cookie2+=setCookies7 34 cookie2+=setCookies4 35 cookie2+=;+setCookies0 36 cookie2 = cookie2.replace(, ;) 37 cookie2 = cookie21: 38 callback_url = result.headers.get(location,http:/) 39

5、result,cookies = self.do_redirect(callback_url, cookie2) 40 41 return result,cookies 2、此时我们需要对获取到的原始密钥进行一系列的运算,从而得到令牌密钥。这个算法其实也很简单,就是先把用户密码连续进行两次 md5加密,每次 md5加密输出二进制的结果,然后在对经过两次 md5加密后的结果在进行一次 md5加密,最后输出16进制大写的结果。在把我们第一步获取到的原始密钥合并在此结果之后,形成一个新的字符串。并且再次对此字符串进行 md5加密,并输出16进制大写的字符串。此时,此字符串就为令牌密钥了。示例代码如下

6、 1 def md5hash(self,str): 2 return hashlib.md5(str).digest() 3 def hex_md5hash(self,str): 4 return hashlib.md5(str).hexdigest().upper() 5 def md5hash_3(self,str): 6 return self.hex_md5hash(self.md5hash(self.md5hash(str) 7 def EncodePasswordWithVerifyCode(self,pwd, verifyCode): 8 return self.hex_md5h

7、ash(self.md5hash_3(pwd) + verifyCode.upper() 1 EncodePasswordWithVerifyCode()即为此加密算法,pwd 是密码,verifyCode 为我们第一步获取到的4位的原始密钥。 3、接下来,我们需要把这个原始密钥送到腾讯的服务器进行验证,并返回令牌结果。服务器的地址为:http:/ U; Linux i686; en-US) AppleWebKit/525.13 (KHTML, like Gecko)_chrome/0.4.2.80 Safari/525.13, 08 method=urlfetch.GET, 09 follo

8、w_redirects = False, 10 ) 11 return result,cookie 三、如何操作腾讯的应用服务 这个其实就是苦功夫了,你可以通过 socket 直接与服务器进行通讯,或者使用 webqq的协议,或者使用腾讯每个服务自己的 web 页面的接口来实现。但是,这些都需要您去进行嗅探并且分析协议的内容。相对来说,web 页面直接的接口是最简单的,无非就是 post 表单过去,或者对页面进行 get 请求,然后得到返回值,在对返回值进行操作并再次的发起请求而已。其次是 webqq 协议也相对好解决它是通过与 http:/web- (24这个数字是可以变化的,具体看你使用哪

9、个服务器了,这只是腾讯的通信代理服务器)进行 json 格式的数据交换而已,而且所有信息都是明文的,也很好理解。自己尝试一段时间,就能搞清楚协议中每个参数以及 api 的含义了。对此,李昱有利用业余时间做了一个 qq 聊天机器人玩,但是讲起来太多了,也太敏感了,因此本文并不进行探讨,以后有空在与大家进行分享。下面就简单的给出发布 qq 微博与qzone 文章的代码以便于大家理解,具体不再进行解释了。 qq 微博的发送代码: 01 def send_qq_msgs(self,username,password,msg,memcachekey): 02 “ 03 send qq msgs. use

10、 qq username, password. 04 the msgs parameter is a message list, not a single string. 05 “ 06 cookie= 07 if memcache.get(memcachekey): 08 cookie=memcache.get(memcachekey) 09 else: 10 result,oldcookie=self.Get_qq_msg_val(username,password) 11 if result=False: 12 return False 13 cookie=%s;%s% (result.

11、headers.get(set-cookie, ),oldcookie) 14 memcache.set(memcachekey,cookie,36000) 15 msg=unescape(msg) 01 form_fields = 02 “content“: msg, 03 “pic“:, 04 “countType“:, 05 “viewModel“:1 06 07 form_data = urllib.urlencode(form_fields) 08 try: 09 result = urlfetch.fetch(url=“http:/ 10 payload=form_data, 11

12、 method=urlfetch.POST, 12 headers=Referer:http:/, 13 Cookie : cookie, 14 user-agent:Mozilla/5.0 (Linux; U; Linux i686; en-US) AppleWebKit/525.13 (KHTML, like Gecko)_chrome/0.4.2.80 Safari/525.13, 15 16 ,follow_redirects = False) 17 except: 18 return False 19 if result.status_code = 200: 20 return Tr

13、ue 21 else: 22 return False qzone 的代码: 01 def send_qzone2(self,username,password,content,title,html): 02 “ 03 send qzone blog. use username, password,content,title,html. 04 the content parameter like html,but no html tag. 05 “ 06 memcachekey=send_qzone2 07 cookie= 08 if memcache.get(memcachekey): 09

14、 cookie=memcache.get(memcachekey) 10 logging.info(get cookie from memcache) 11 else: 12 result,oldcookie=self.Get_qzone2_val(username,password) 13 cookie=%s;%s% (result.headers.get(set-cookie, ),oldcookie) 14 memcache.set(memcachekey,cookie,36000) 15 logging.info(set cookie) 16 tmphash=self.Tmp_skey

15、_get(cookie) 17 tmphash=self.myhash(tmphash) 18 category=个人日记 19 form_fields = 20 “uin“:939567050, 21 “category“:htmllib.encoding(category,gb18030), 22 “title“:title, 23 “content“:content, 24 “html“:html, 25 “cb_autograph“:1, 26 “topflag“:0, 27 “needfeed“:0, 28 “lp_type“:0, 29 “g_tk“:tmphash, 30 “scorr_20100723_“:http:/

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 行业资料 > 其它行业文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号