【编程技术】绕过旋风、迅雷、Flashget下载限制,不强制安装特定下载工具
所在版块:技术の宅 发贴时间:2015-08-02 12:22

用户信息
复制本帖HTML代码
高亮: 今天贴 X 昨天贴 X 前天贴 X 

典型场景:找下载,找到了疼讯的旋风链接,但是直接下载龟速,要提速必须下载旋风软件,安装的时候一不小心各种疼讯的其他插件就装进去了。

 

原理(网上有人分析好了):

个标准的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 "";

            }

        }

    }

}




.
欢迎来到华新中文网,踊跃发帖是支持我们的最好方法!

 相关帖子 我要回复↙ ↗回到正文
【编程技术】绕过旋风、迅雷、Flashget下载限制,不强制安装特定下载工具 SIG552   (17582 bytes , 414reads )
这不是各浏览器插件貌似都实现了么? 功夫熊猫   (0 bytes , 63reads )
有意思 鱼片粥   (0 bytes , 51reads )