本帖最后由 dongyi945 于 2015-8-2 10:56 编辑
吐槽下腾讯的旋风下载链接和龟速下载工具,附带自己做的链接转换工具和旋风下载地址转换原理
起因是这样的,电脑里的lol被删除了,然后又去撸啊撸官网去下载。结果坑爹的腾讯只给出了最新版本的旋风下载链接,还有极速下载工具的链接。
由于不想安装腾讯的旋风下载,而且用腾讯的坑爹的龟速下载工具在我60M的网络下,
下载速度只能达到400Kb每秒.查了下网上的资料,自己做了个转换工具。
lol最新版的旋风下载链接如下:
qqdl://aHR0cDovL2Rvd24ucXEuY29tL2xvbC9mdWxsL0xPTF9WMy4xLjUuOF9GVUxMLjd6LjAwMSA=,
qqdl://aHR0cDovL2Rvd24ucXEuY29tL2xvbC9mdWxsL0xPTF9WMy4xLjUuOF9GVUxMLjd6LjAwMg==,
qqdl://aHR0cDovL2Rvd24ucXEuY29tL2xvbC9mdWxsL0xPTF9WMy4xLjUuOF9GVUxMLjd6LjAwMyA=,
qqdl://aHR0cDovL2Rvd24ucXEuY29tL2xvbC9mdWxsL0xPTF9WMy4xLjUuOF9GVUxMLmV4ZQ==
它一共是四个文件的下载地址,使用逗号进行分割。
旋风下载链接生成的原理是这样的:
一个标准的url链接地址,经过了base64编码转换再加上qqdl://这个前缀,就生成了一个旋风下载链接。
我们要做的,就是去掉qqdl://这个前缀,并使用base64解码,即可得到原始的url下载地址。
例如第一个地址qqdl://aHR0cDovL2Rvd24ucXEuY29tL2xvbC9mdWxsL0xPTF9WMy4xLjUuOF9GVUxMLjd6LjAwMSA=
我们去掉qqdl://这个前缀,得到了aHR0cDovL2Rvd24ucXEuY29tL2xvbC9mdWxsL0xPTF9WMy4xLjUuOF9GVUxMLjd6LjAwMSA=这个字符串,
再进行base64解码,得到了http://down.qq.com/lol/full/LOL_V3.1.5.8_FULL.7z.001 这个下载链接。
最后四个文件的下载链接应该为:
http://down.qq.com/lol/full/LOL_V3.1.5.8_FULL.7z.001
http://down.qq.com/lol/full/LOL_V3.1.5.8_FULL.7z.002
http://down.qq.com/lol/full/LOL_V3.1.5.8_FULL.7z.003
http://down.qq.com/lol/full/LOL_V3.1.5.8_FULL.exe
附上 下载链接转换工具
下载链接转换工具.zip
(35.96 KB, 下载次数: 22)
需要.net framwork 3.5,这个win 7的系统自带了。另外也可以使用一些在线的base64工具转换。
本工具也可以转换迅雷和flashget的专用链接。
程序主要算法如下,另外主要算法是在别个博客看到的,但是他没把程序做完。看了之后发现专用链接转换原来这么简单,为啥要搞成不通用的呢。
- namespace getDownloadURL
- {
- class getNormalUrl
- {
- //获取原始链接地址
- public string GetOriginalString(string str)
- {
- string thunderPrefix = "thunder://";
- string qqdlPrefix = "qqdl://";
- string flashgetPrefix = "flashget://";
- if (str.StartsWith("http://") || str.StartsWith("https://"))
- {
- return str;
- }
- else if (str.StartsWith(thunderPrefix))
- {
- string thunderAddr = str.Substring(thunderPrefix.Length);//去掉前缀
- thunderAddr = DecodeBase64(thunderAddr);//base64解码
- thunderAddr = thunderAddr.Substring(2, thunderAddr.Length - 4);//去掉前两个A,后两个Z
- return thunderAddr;
- }
- else if (str.StartsWith(qqdlPrefix))
- {
- string qqdlAddr = str.Substring(qqdlPrefix.Length);
- qqdlAddr = DecodeBase64(qqdlAddr);//base64解码
- return qqdlAddr;
- }
- else if (str.StartsWith(flashgetPrefix))
- {
- string flashgetAddr = str.Substring(flashgetPrefix.Length);
- flashgetAddr = flashgetAddr.Substring(0, flashgetAddr.Length - 1);//去掉最后一个&号
- flashgetAddr = DecodeBase64(flashgetAddr);
- flashgetAddr = flashgetAddr.Substring(10, flashgetAddr.Length - 20);//去掉前后的[FLASHGET]
- return flashgetAddr;
- }
- return "";
- }
- //将string转换为Base64编码
- private string EncodeBase64(string orgStr)
- {
- try
- {
- return Convert.ToBase64String(Encoding.Default.GetBytes(orgStr));
- }
- catch
- {
- return "";
- }
- }
- //将Base64编码解码为普通string
- private string DecodeBase64(string encodeStr)
- {
- try
- {
- return Encoding.Default.GetString(Convert.FromBase64String(encodeStr));
- }
- catch
- {
- return "";
- }
- }
- }
- }
复制代码
|