迅雷,快車,旋風鏈接編碼解碼C#源代碼

這篇是我之前做項目時用到的,寫了個小demo,發在原來的一個博客裏。因爲博客空間在國外經常被牆,今天把之前寫的一些東西搬到這裏來。

迅雷,快車旋風鏈接編碼解碼C#源代碼

在做一個項目時,有要求用到下載工具下載,於是上網找了找,找到了這些鏈接的加密規則,自己寫了幾個轉換方法

寫的有點急,可能不太完善,若您在使用中發現問題,煩請留言給我指出,謝謝!

  1. using System;

  2. using System.Text;

  3. /*

  4. * Author:大寶http://dabao.im,http://dabao2010.blog.51cto.com

  5. * Desc:迅雷,快車,旋風鏈接編碼解碼

  6. */

  7. namespace Base64Url

  8. {

  9. class Program

  10. {

  11. #region 靜態常量

  12. /// <summary>迅雷 thunder://</summary>

  13. publicconststring _thunder = "Thunder://";

  14. /// <summary>快車 flashget://</summary>

  15. publicconststring _flashget = "Flashget://";

  16. /// <summary>QQ旋風 qqdl://</summary>

  17. publicconststring _qqdl = "Qqdl://";

  18. #endregion

  19. staticvoid Main(string[] args)

  20. {

  21. string url = "";

  22. url = "thunder://QUFmdHA6Ly82OjZAZnRwLjY2eXMub3JnOjQ1MDgv44CQ6L+F6Zu35LiL6L29d3d3LmR5MTMxLmNvbeOAkVjmiJjorabliY3kvKDvvJrph5HliJrni7xCROS4reiLseWPjOWtlzEyODDpq5jmuIUucm12Ylpa";

  23. //url = "Flashget://W0ZMQVNIR0VUXWh0dHA6Ly9ibG9nLnhpYW9odW9jaGFpLm5ldFtGTEFTSEdFVF0=&xiaohuochai";

  24. //url="Qqdl://aHR0cDovL2Jsb2cueGlhb2h1b2NoYWkubmV0";

  25. string url2 = "http://xiaohuochai.net";

  26. string thunder = "";

  27. string flashget = "";

  28. string qqdl = "";

  29. //編碼

  30. thunder = EncodeUrlToBase64(url2, LinkType.Thunder);

  31. flashget = EncodeUrlToBase64(url2, LinkType.Flashget);

  32. qqdl = EncodeUrlToBase64(url2, LinkType.Qqdl);

  33. Console.Write(thunder + "\r\n" + flashget + "\r\n" + qqdl + "\r\n");

  34. //解碼

  35. string result = "您輸入的地址可能不是迅雷,快車,旋風中的任何一種!";

  36. if (url.StartsWith(_thunder, true, null))//迅雷

  37. result = DecodeUrlFromBase64(url.Remove(0, _thunder.Length), LinkType.Thunder);

  38. if (url.StartsWith(_flashget, true, null))//快車

  39. result = DecodeUrlFromBase64(url.Remove(0, _flashget.Length), LinkType.Flashget);

  40. if (url.StartsWith(_qqdl, true, null))//QQ旋風

  41. result = DecodeUrlFromBase64(url.Remove(0, _qqdl.Length), LinkType.Qqdl);

  42. Console.Write(result);

  43. Console.ReadLine();

  44. }

  45. #region 編碼&解碼

  46. #region 編碼

  47. /// <summary>

  48. /// 編碼URL

  49. /// </summary>

  50. /// <param name="url">原生URL</param>

  51. protectedstaticstring EncodeUrlToBase64(string url, LinkType linktype)

  52. {

  53. string enurl = "";

  54. string tempUrl = "";

  55. switch (linktype)

  56. {

  57. case LinkType.Thunder:

  58. tempUrl = "AA" + url + "ZZ";

  59. enurl = _thunder + EnCodeUrl(tempUrl);

  60. break;

  61. case LinkType.Flashget:

  62. tempUrl = "[FLASHGET]" + url + "[FLASHGET]";

  63. enurl = _flashget + EnCodeUrl(tempUrl) + "&xiaohuochai";//&後爲用戶自定義信息,具體什麼用還不清楚

  64. break;

  65. case LinkType.Qqdl:

  66. enurl = _qqdl + EnCodeUrl(url);

  67. break;

  68. default:

  69. break;

  70. }

  71. return enurl;

  72. }

  73. privatestaticstring EnCodeUrl(string tempUrl)

  74. {

  75. byte[] bytes; string enurl;

  76. bytes = Encoding.Default.GetBytes(tempUrl);

  77. enurl = Convert.ToBase64String(bytes);

  78. return enurl;

  79. }

  80. #endregion

  81. #region 解碼

  82. /// <summary>

  83. /// 鏈接解碼

  84. /// </summary>

  85. /// <param name="baseurl">鏈接</param>

  86. protectedstaticstring DecodeUrlFromBase64(string baseurl, LinkType linktype)

  87. {

  88. string deurl = "";

  89. switch (linktype)

  90. {

  91. case LinkType.Thunder:

  92. deurl = DecodeUrl(baseurl);

  93. deurl = deurl.Remove(0, 2);

  94. deurl = deurl.Remove(deurl.Length - 2);

  95. break;

  96. case LinkType.Flashget:

  97. deurl = DecodeUrl(baseurl.Remove(baseurl.LastIndexOf('&')));

  98. deurl = deurl.Remove(0, 10);

  99. deurl = deurl.Remove(deurl.Length - 10);

  100. break;

  101. case LinkType.Qqdl:

  102. deurl = DecodeUrl(baseurl);

  103. break;

  104. default:

  105. break;

  106. }

  107. return deurl;

  108. }

  109. privatestaticstring DecodeUrl(string baseurl)

  110. {

  111. byte[] bytes;

  112. string deurl;

  113. bytes = Convert.FromBase64String(baseurl);

  114. deurl = Encoding.UTF8.GetString(bytes);

  115. return deurl;

  116. }

  117. #endregion

  118. #endregion

  119. }

  120. /// <summary>

  121. /// 鏈接類型

  122. /// </summary>

  123. enum LinkType

  124. {

  125. /// <summary>迅雷</summary>

  126. Thunder,

  127. /// <summary>快車</summary>

  128. Flashget,

  129. /// <summary>QQ旋風</summary>

  130. Qqdl

  131. }

  132. }

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章