登录 | 首页 -> 华新鲜事 -> 技术の宅 | 切换到:传统版 / sForum | 树形列表
【编程技术】绕过旋风、迅雷、Flashget下载限制,不强制安装特定下载工具
<<始页  [1]  末页>> 

【编程技术】绕过旋风、迅雷、Flashget下载限制,不强制安装特定下载工具典型场景:找下载,找到了疼讯的旋风链接,但是直接下载龟速,要提速必须下载旋风软件,安装的时候一不小心各种疼讯的其他插件就装进去了。
 
原理(网上有人分析好了):
个标准的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 这个下载链接。


解决方案(网上有人做出来了):解码器,需要.net framwork 3.5支持。能解码旋风、迅雷、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 "";
            }
        }
    }

}



[SIG552 (8-2 12:22, Long long ago)] [ 传统版 | sForum ][登录后回复]1楼

有意思[鱼片粥 (8-5 12:27, Long long ago)] [ 传统版 | sForum ][登录后回复]2楼

这不是各浏览器插件貌似都实现了么?[功夫熊猫 (8-5 14:36, Long long ago)] [ 传统版 | sForum ][登录后回复]3楼


<<始页  [1]  末页>> 
登录 | 首页 -> 华新鲜事 -> 技术の宅 | [刷新本页] | 切换到:传统版 / sForum