From 2356e47e357d2d567d27006ffccd2e8eb594098e Mon Sep 17 00:00:00 2001 From: nelson_guo Date: Thu, 29 Nov 2012 00:48:40 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8D2012=2012-29=20=E9=AA=8C?= =?UTF-8?q?=E8=AF=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: nelson_guo --- README | 4 +++- xfdown.py | 16 +++++++++++++--- 2 files changed, 16 insertions(+), 4 deletions(-) diff --git a/README b/README index ef11a3b..80d15d8 100644 --- a/README +++ b/README @@ -4,4 +4,6 @@ http://lixian.qq.com/ 调用aria2下载 -可实现多线程,断点续传等特性 \ No newline at end of file +可实现多线程,断点续传等特性 + +12 12 29 修复腾讯改版后无法登陆,和登陆验证referer \ No newline at end of file diff --git a/xfdown.py b/xfdown.py index 3ae9339..1c1a0d6 100755 --- a/xfdown.py +++ b/xfdown.py @@ -38,6 +38,11 @@ def hexchar2bin(hex): arry.append(int(hex[i:i+2],16)) return arry +def get_gtk(strs): + hash = 5381 + for i in strs: + hash += (hash << 5) + ord(i) + return hash & 0x7fffffff; class LWPCookieJar(cookiejar.LWPCookieJar): def save(self, filename=None, ignore_discard=False, ignore_expires=False,userinfo=None): @@ -48,7 +53,7 @@ def save(self, filename=None, ignore_discard=False, ignore_expires=False,userinf if not os.path.exists(filename): f=open(filename,'w') f.close() - f = open(filename, "rw+") + f = open(filename, "r+") try: if userinfo: f.seek(0) @@ -109,7 +114,7 @@ def start(self): opener = request.build_opener(request.HTTPCookieProcessor(self.cookieJar)) - opener.addheaders = [('User-Agent', 'Mozilla/5.0')] + opener.addheaders = [('User-Agent', 'Mozilla/5.0'),("Referer","http://lixian.qq.com/main.html")] request.install_opener(opener) @@ -195,8 +200,13 @@ def getfilename_url(self,url): filename=url.split("/")[-1] return filename.split("?")[0] def __getlogin(self): + self.__request(url ="http://lixian.qq.com/handler/lixian/check_tc.php",data={},savecookie=True) urlv = 'http://lixian.qq.com/handler/lixian/do_lixian_login.php' - str = self.__request(url =urlv,data={},savecookie=True) + f=open(self.__cookiepath) + fi = re.compile('skey="([^"]+)"') + skey = fi.findall("".join(f.readlines()))[0] + f.close() + str = self.__request(url =urlv,data={"g_tk":get_gtk(skey)},savecookie=True) return str def __getlist(self):