PCEVA,PC绝对领域,探寻真正的电脑知识
打印 上一主题 下一主题
开启左侧

分享下自己做的链接转换工具和旋风下载地址转换原理

[复制链接]
跳转到指定楼层
1#
点击数:5820|回复数:9
本帖最后由 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的专用链接。
程序主要算法如下,另外主要算法是在别个博客看到的,但是他没把程序做完。看了之后发现专用链接转换原来这么简单,为啥要搞成不通用的呢。


  1. namespace getDownloadURL
  2. {
  3.     class getNormalUrl
  4.     {
  5.         //获取原始链接地址
  6.         public string GetOriginalString(string str)
  7.         {
  8.             string thunderPrefix = "thunder://";
  9.             string qqdlPrefix = "qqdl://";
  10.             string flashgetPrefix = "flashget://";
  11.             if (str.StartsWith("http://") || str.StartsWith("https://"))
  12.             {
  13.                 return str;
  14.             }
  15.             else if (str.StartsWith(thunderPrefix))
  16.             {
  17.                 string thunderAddr = str.Substring(thunderPrefix.Length);//去掉前缀  
  18.                 thunderAddr = DecodeBase64(thunderAddr);//base64解码  
  19.                 thunderAddr = thunderAddr.Substring(2, thunderAddr.Length - 4);//去掉前两个A,后两个Z  
  20.                 return thunderAddr;
  21.             }
  22.             else if (str.StartsWith(qqdlPrefix))
  23.             {
  24.                 string qqdlAddr = str.Substring(qqdlPrefix.Length);
  25.                 qqdlAddr = DecodeBase64(qqdlAddr);//base64解码  
  26.                 return qqdlAddr;
  27.             }
  28.             else if (str.StartsWith(flashgetPrefix))
  29.             {
  30.                 string flashgetAddr = str.Substring(flashgetPrefix.Length);
  31.                 flashgetAddr = flashgetAddr.Substring(0, flashgetAddr.Length - 1);//去掉最后一个&号   
  32.                 flashgetAddr = DecodeBase64(flashgetAddr);
  33.                 flashgetAddr = flashgetAddr.Substring(10, flashgetAddr.Length - 20);//去掉前后的[FLASHGET]  
  34.                 return flashgetAddr;
  35.             }
  36.             return "";
  37.         }

  38.         //将string转换为Base64编码
  39.         private string EncodeBase64(string orgStr)
  40.         {
  41.             try
  42.             {
  43.                 return Convert.ToBase64String(Encoding.Default.GetBytes(orgStr));
  44.             }
  45.             catch
  46.             {
  47.                 return "";
  48.             }
  49.         }

  50.         //将Base64编码解码为普通string
  51.         private string DecodeBase64(string encodeStr)
  52.         {
  53.             try
  54.             {
  55.                 return Encoding.Default.GetString(Convert.FromBase64String(encodeStr));

  56.             }
  57.             catch
  58.             {
  59.                 return "";
  60.             }
  61.         }
  62.     }
  63. }
复制代码



评分

参与人数 1绝对值 +5 收起 理由
luzhanyi + 5 很给力!

查看全部评分

2#
frank9991984 发表于 2015-8-2 11:03 | 只看该作者
这个好,谢谢楼主分享了
3#
mkmk891 发表于 2015-8-2 12:05 | 只看该作者
感谢楼主~~~.......
4#
dongyi945  楼主| 发表于 2015-8-2 12:09 | 只看该作者
badaa 发表于 2015-8-2 12:08
如果是磁力鏈接呢?

磁力链接原理不一样,这几个链接都是url链接变形来的,种子是p2p的没有url链接。
5#
大号跳蚤 发表于 2015-8-3 00:11 发自PCEVA移动客户端 | 只看该作者
楼主霸气 。。。     
6#
Pale_Cheung 发表于 2015-8-3 10:53 | 只看该作者
linux 自带 base64 用 decode 参数即可。

windows 么有,但是第三方 exe 应该是有的。linux 很多基础工具都有人移植到windows。
7#
dongyi945  楼主| 发表于 2015-8-3 16:50 | 只看该作者
Pale_Cheung 发表于 2015-8-3 10:53
linux 自带 base64 用 decode 参数即可。

windows 么有,但是第三方 exe 应该是有的。linux 很多基础工具 ...

像这种简单的程序根本不需要移植,源代码一编译就可以了,最多弄个gui。

8#
Pale_Cheung 发表于 2015-8-4 09:15 | 只看该作者
dongyi945 发表于 2015-8-3 16:50
像这种简单的程序根本不需要移植,源代码一编译就可以了,最多弄个gui。

...

“编译,弄个gui” 这个工作就是广义上的“移植”啊
9#
ashuang333 发表于 2015-8-4 10:45 | 只看该作者
只要碰见专用下载工具  我通通不装

装SMB呀
10#
maidong88 发表于 2015-8-4 16:42 | 只看该作者
发个外链不要紧吧
http://www.iplaysoft.com/tools/url-converter/
专用链接我用上面的转
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部