110 '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',
111
112 },follow_redirects = False)
113 except Exception,data:
114 logging.info(data)
115 return False
116 if result.status_code == 200:
117 return True
118 else:
119 return False
120
121def make_cookie_header2(self,cookie):
122 ret = ""
123 for val in cookie.values():
124 ret+="%s=%s; "%(val.split('=')[0], val.split('=')[1])
125 return ret
126
127
128def Make_cookie_dict(self,cookie):
129 tmpval=dict()
130 for val in cookie:
131 tmpval.update({val.split('=')[0]:val.split('=')[1]})
132 return tmpval
133
134def md5hash(self,str):
135 return hashlib.md5(str).digest()
136def hex_md5hash(self,str):
137 return hashlib.md5(str).hexdigest().upper()
138def md5hash_3(self,str):
139 return self.hex_md5hash(self.md5hash(self.md5hash(str)))
140def EncodePasswordWithVerifyCode(self,pwd, verifyCode):
141 return self.hex_md5hash(self.md5hash_3(pwd) + verifyCode.upper())
这就是常规我们所用的也是那些什么农场外挂之类的所应用的技术思路了。
具体可以参见本文第一部分所列的网址,里面有详细的解释。
这里只是简单的提几个需要注意的地方:
1、从第一讲开始,我就告诉大家了,获取到的令牌并不仅仅只是腾讯一项产品的令牌而已,他是腾讯统一的令牌,所以其他服务也可以用。记住令牌获取到了,可以一直使用下去,尽量不要每进行一个操作就从新获取一次令牌。
相信我,如果您这样做,您会哭的。。。。。这样只要3次,你就要考虑登录时进行自动智能图片验证码识别模块的编写的。。。虽然那也很简单,但是麻烦啊。。。。此外,登录的时候尽量的使用与你qq号码绑定的邮箱帐号登录,而不是qq号码。
因为,腾讯的帐号验证机制会对qq号码比较严格,所以用邮箱帐号登录可以获得一样的效果,而且很难出现图片验证码这个讨厌的东西。
2、Tmp_skey_get方法是用来从令牌cookies中获取skey值,这个值我在第一讲里面就已经说了,非常重要很多地方都要用到它的,它就相当于另一个令牌一样。。。腾讯还真是下足了功夫,弄个双保险啊。。
3、呃。。。不好意思前面贴代码少贴了一个方法。
1def myhash(self,tmpstr):
2 tmphash=5381
3 tmpstr=tmpstr
4 for i in range(0, len(tmpstr)):
5 tmphash+=(tmphash<<5)+ord(tmpstr )
6 return (tmphash & _0x7FFFFFFF)
就是这个myhash的方法,这个方法是用来对skey进行处理并生成另一块令牌。这个算法,是我研究了半天自己写出来的,但是运行的很好。也许有更好的算法,大家可以自己研究下。
4、tmphash=self.myhash(tmphash)是得到令牌,接下去构造表单中的g_tk的值就为这个令牌。这个g_tk不仅仅在qzone发布文章时候用到,包括获取好友列表啊,添加删除好友之类的地方以及qq邮箱都会用到的。
算法就是上面的那个算法了,但是还有一种更加容易,但是效率低的方法获得这个值——每个页面中都会藏有这个g_tk的值,是当你打开这个页面的时候,腾讯生成在页面上的。你可以使用一些html解析库来分解html然后找到这个值也可以,但是就是效率比较低就是了。
5、还有一个需要注意的就是编码问题了,请使用gb18030而不是gb2312,为了更好的兼容性。
6、其他的部分可以参考本文第一部分中的两个网址,我的第一讲中详细的有介绍。