木子屋 Dnawo's BLOG

迅雷(thunder)/快车(FlashGet)/旋风(qqdl)下载地址转换/还原工具

👤 dnawo 📅 2008-03-03 👁 24110 👍 0 💬 0 🔄 本站原创
迅雷(thunder)/快车(FlashGet)/旋风(qqdl)的下载地址都是由普通的地址经过base64编码而来,但具体过程稍微有点不同:迅雷是在普通地址前后分别加了"AA"和"ZZ"之后进行base64编码,然后在最前方加入"thunder://"而成,最终如"thunder://QUFodHRwOi8vd3d3Lm16d3UuY29tL2RlZmF1bHQuYXNwWlo=";而快车则是在普通地址前后都加"[flashget]"之后进行base64编码,然后在最前方加入"flashget://"最后方加入"&id数字&数字"而成,最终如"Flashget://W0ZMQVNIR0VUXWh0dHA6Ly93d3cubXp3dS5jb20vZGVmYXVsdC5hc3BbRkxBU0hHRVRd& 566&1204532909";旋风最为简单,直接将普通地址使用base64编码,并在最前方加入"qqdl://"而成,最终如"qqdl://aHR0cDovL3d3dy5tend1LmNvbS9kZWZhdWx0LmFzcA=="。知道了原理,要将普通地址base64编码进行转换或将转换后的地址还原为普通地址就不难了,下边是一个迅雷(thunder)/快车(FlashGet)/旋风(qqdl)下载地址转换/还原工具:

HTML
<HTML>
<HEAD>
<title>迅雷(thunder)/快车(FlashGet)/旋风(qqdl)下载地址转换/还原工具—木子屋(mzwu.com)</title>
</HEAD>
<body>
<form name="form1" method="post" action="#" id="form1">
  <p>
  <h3>1.快车(FlashGet)下载地址转换/还原</h3>
  <P></P>
  转换前地址:<br>
  <textarea name="txtNormal" rows="2" cols="20" id="txtNormal" style="height:60px;width:500px;"></textarea>
  <br>
  转换后地址:<br>
  <textarea name="txtFlashGet" rows="2" cols="20" id="txtFlashGet" style="height:60px;width:500px;"></textarea>
  <br>
  <input type="button" name="txtNormalToFlashGet" value="普通地址->FlashGet地址" onclick="NormalToFlashGet();" id="txtNormalToFlashGet" />
  <input type="button" name="txtFlashGetToNormal" value="FlashGet地址->普通地址" onclick="FlashGetToNormal();" id="txtFlashGetToNormal" />
  <p>
  <h3>2.迅雷(thunder)下载地址转换/还原</h3>
  <P></P>
  转换前地址:<br>
  <textarea name="txtNormal2" rows="2" cols="20" id="txtNormal2" style="height:60px;width:500px;"></textarea>
  <br>
  转换后地址:<br>
  <textarea name="txtThunder" rows="2" cols="20" id="txtThunder" style="height:60px;width:500px;"></textarea>
  <br>
  <input type="button" name="txtNormalToThunder" value="普通地址->迅雷thunder地址" onclick="NormalToThunder();" id="txtNormalToThunder" />
  <input type="button" name="txtThunderToNormal" value="迅雷thunder地址->普通地址" onclick="ThunderToNormal();" id="txtThunderToNormal" />
  <h3>3.旋风(qqdl)下载地址转换/还原</h3>
  <P></P>
  转换前地址:<br>
  <textarea name="txtNormal3" rows="2" cols="20" id="txtNormal3" style="height:60px;width:500px;"></textarea>
  <br>
  转换后地址:<br>
  <textarea name="txtQQdl" rows="2" cols="20" id="txtQQdl" style="height:60px;width:500px;"></textarea>
  <br>
  <input type="button" name="txtNormalToQQdl" value="普通地址->旋风qqdl地址" onclick="NormalToQQdl();" id="txtNormalToQQdl" />
  <input type="button" name="txtQQdlToNormal" value="旋风qqdl地址->普通地址" onclick="QQdlToNormal();" id="txtQQdlToNormal" />
</form>
<script language="javascript">
var base64EncodeChars = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";
var base64DecodeChars = new Array(
    -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
    -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
    -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 62, -1, -1, -1, 63,
    52, 53, 54, 55, 56, 57, 58, 59, 60, 61, -1, -1, -1, -1, -1, -1,
    -1,  0,  1,  2,  3,  4,  5,  6,  7,  8,  9, 10, 11, 12, 13, 14,
    15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, -1, -1, -1, -1, -1,
    -1, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40,
    41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, -1, -1, -1, -1, -1);

function base64encode(str) {
    var out, i, len;
    var c1, c2, c3;

    len = str.length;
    i = 0;
    out = "";
    while(i < len) {
 c1 = str.charCodeAt(i++) & 0xff;
 if(i == len)
 {
     out += base64EncodeChars.charAt(c1 >> 2);
     out += base64EncodeChars.charAt((c1 & 0x3) << 4);
     out += "==";
     break;
 }
 c2 = str.charCodeAt(i++);
 if(i == len)
 {
     out += base64EncodeChars.charAt(c1 >> 2);
     out += base64EncodeChars.charAt(((c1 & 0x3)<< 4) | ((c2 & 0xF0) >> 4));
     out += base64EncodeChars.charAt((c2 & 0xF) << 2);
     out += "=";
     break;
 }
 c3 = str.charCodeAt(i++);
 out += base64EncodeChars.charAt(c1 >> 2);
 out += base64EncodeChars.charAt(((c1 & 0x3)<< 4) | ((c2 & 0xF0) >> 4));
 out += base64EncodeChars.charAt(((c2 & 0xF) << 2) | ((c3 & 0xC0) >>6));
 out += base64EncodeChars.charAt(c3 & 0x3F);
    }
    return out;
}

function base64decode(str) {
    var c1, c2, c3, c4;
    var i, len, out;

    len = str.length;
    i = 0;
    out = "";
    while(i < len) {
 /* c1 */
 do {
     c1 = base64DecodeChars[str.charCodeAt(i++) & 0xff];
 } while(i < len && c1 == -1);
 if(c1 == -1)
     break;

 /* c2 */
 do {
     c2 = base64DecodeChars[str.charCodeAt(i++) & 0xff];
 } while(i < len && c2 == -1);
 if(c2 == -1)
     break;

 out += String.fromCharCode((c1 << 2) | ((c2 & 0x30) >> 4));

 /* c3 */
 do {
     c3 = str.charCodeAt(i++) & 0xff;
     if(c3 == 61)
  return out;
     c3 = base64DecodeChars[c3];
 } while(i < len && c3 == -1);
 if(c3 == -1)
     break;

 out += String.fromCharCode(((c2 & 0XF) << 4) | ((c3 & 0x3C) >> 2));

 /* c4 */
 do {
     c4 = str.charCodeAt(i++) & 0xff;
     if(c4 == 61)
  return out;
     c4 = base64DecodeChars[c4];
 } while(i < len && c4 == -1);
 if(c4 == -1)
     break;
 out += String.fromCharCode(((c3 & 0x03) << 6) | c4);
    }
    return out;
}

function NormalToFlashGet(){
	form1.txtFlashGet.value = "Flashget://" + base64encode("[FLASHGET]" + form1.txtNormal.value + "[FLASHGET]");
}

function FlashGetToNormal(){
	var temp = form1.txtFlashGet.value;
	temp=base64decode(temp.indexOf("&")!=-1?temp.substring(11,temp.indexOf("&")):temp.substring(11));
	form1.txtNormal.value = temp.substring(10,temp.length-10);
}

function NormalToThunder(){
	form1.txtThunder.value = "thunder://" + base64encode("AA" + form1.txtNormal2.value + "ZZ");
}

function ThunderToNormal(){
	var temp = base64decode((form1.txtThunder.value).substring(10));
	form1.txtNormal2.value = temp.substring(2,temp.length-2);
}

function NormalToQQdl(){
	form1.txtQQdl.value = "qqdl://" + base64encode(form1.txtNormal3.value);
}

function QQdlToNormal(){
	form1.txtNormal3.value = base64decode((form1.txtQQdl.value).substring(7));
}
  </script>
</body>
</HTML>

评论(0)

暂无评论。

计算题
评论需审核通过后显示
← 上一篇 Asp的base64编码、解码函数 下一篇 → 穷人买米,富人买碗