今天在网上看了一篇文章,讲到了迅雷,快车,qq旋风这些专用下载地址的解码和加编码问题,感觉挺简单的就初步写了一个py脚本,用来下载这3种链接
只要运行这个脚本 在它的命令后面加上这三种链接中的其中一种链接地址就行,它就会自动解析和用wget下载. 用法: 脚本名 ‘url’ 代码在最下面
基本测试都能成功,在天空下载测试没有成功,解析出地址后用wget 下载竟然下的只是一个index.html
下面讲的是简单的原理:
迅雷地址和快车地址的加密方式很简单,其实都是用的Base64加密方式,只不过有一点点的小改动而已。
1、迅雷
迅雷链接地址转换原理是在地址的前方和后方加入两个字母AA、ZZ,然后再进行Base64加密,再加上Thunder://这个专用链接标识,从而转换成迅雷的专用地址。
例如:
原链接为:http://www.forece.net/win7.rar
在原地址前面加”AA”,后面加”ZZ” (注:不包括引号),地址变为
AAhttp://www.forece.net/win7.rarZZ
此地址base64编码为
QUFodHRwOi8vd3d3LmZvcmVjZS5uZXQvd2luNy5yYXJaWg==
加入迅雷专链标识,即在上地址前加thunder://,即
thunder://QUFodHRwOi8vd3d3LmZvcmVjZS5uZXQvd2luNy5yYXJaWg==
2、网际快车
网际快车的链接地址转换原理和迅雷的类似,只不过是在地址前后加上[FLASHGET],经过Base64加密,然后在地址前加 flashget://这个快车专用链接标识,最后还需要加一个标识符(&符号),符号任意,我一般就加我的名字(&forece),这样就可以将普通http地址转换成快车的地址了。
例如:
原链接为:http://www.forece.net /win7.rar
在原地址前后都加上”[FLASHGET]“(注:不包括引号),地址变为
[FLASHGET]http://www.forece.net/win7.rar[FLASHGET]
此地址base64编码为
W0ZMQVNIR0VUXWh0dHA6Ly93d3cuZm9yZWNlLm5ldC93aW43LnJhcltGTEFTSEdFVF0=
加上快车专链标识和结尾符号,即在上地址前加flashget://,结尾加&forece,即
flashget://W0ZMQVNIR0VUXWh0dHA6Ly93d3cuZm9yZWNlLm5ldC93aW43LnJhcltGTEFTSEdFVF0=&forece
“& 符号”,符号怎么得出我也不清楚,只是看网上别人这么写的,至今无人报错。
3、QQ旋风
QQ旋风的地址转换相对就简单多了,将原地址直接base64编码加密就可以了,然后加上标识符qqdl://即可。
例如:
原链接为:http://www.forece.net/win7.rar
此地址base64编码为
aHR0cDovL3d3dy5mb3JlY2UubmV0L3dpbjcucmFy
再加上旋风专链标识,在上地址前加qqdl://,即
qqdl://aHR0cDovL3d3dy5mb3JlY2UubmV0L3dpbjcucmFy
这样,普通的http地址就可以轻松的转换成快车,迅雷,旋风的地址了。相反,解密只要将过程反推即可。同样还是利用Base64加密,解密工具。
原理摘自:http://www.forece.net/post/570.htm
代码:
代码: 全选
#!/usr/bin/python
'''
mydown.py
This script is used to convert thunder,flashget and qqdl's
url to http's url .
Then run wget to get it!
'''
import sys,base64,os
def convert(argv):
if len(argv)==2:
url=argv[1]
else :
print "Input Error!\nUsage: %s 'url' " % (argv[0])
sys.exit(1)
# decode the url with base64 , and
# get a simple url
if url.startswith('thunder://'):
url=url[10:]+'\n'
url=base64.decodestring(url)
url=url[2:-2]
elif url.startswith('flashget://'):
url=url[11:url.find('&')]+'\n'
url=base64.decodestring(url)
url=url[10:-10]
elif url.startswith('qqdl://'):
url=url[7:]+'\n'
url=base64.decodestring(url)
else :
print '\nIt is not a available url!'
sys.exit(1)
return url
def main(argv):
url=convert(argv)
# Run wget to get it
os.system('wget '+url)
if __name__=='__main__':
main(sys.argv)