【编程技术】绕过旋风、迅雷、Flashget下载限制,不强制安装特定下载工具
登录 | 论坛导航 -> 华新鲜事 -> 技术の宅 | 本帖共有 3 楼,分 1 页, 当前显示第 1 页 : 本帖树形列表 : 刷新 : 返回上一页
<<始页  [1]  末页>>
作者:SIG552 (等级:2 - 初出茅庐,发帖:46) 发表:2015-08-02 12:22:07  楼主  关注此帖
【编程技术】绕过旋风、迅雷、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 "";

            }

        }

    }

}




欢迎来到华新中文网,踊跃发帖是支持我们的最好方法!原文 / 传统版 / WAP版只看此人从这里展开收起列表
作者:鱼片粥 (等级:12 - 登峰造极,发帖:7744) 发表:2015-08-05 12:27:00  2楼
有意思
欢迎来到华新中文网,踊跃发帖是支持我们的最好方法!原文 / 传统版 / WAP版只看此人从这里展开收起列表
作者:功夫熊猫 (等级:?? - 无法无天,发帖:73611) 发表:2015-08-05 14:36:03  3楼
这不是各浏览器插件貌似都实现了么?
欢迎来到华新中文网,踊跃发帖是支持我们的最好方法!原文 / 传统版 / WAP版只看此人从这里展开收起列表
论坛导航 -> 华新鲜事 -> 技术の宅 | 返回上一页 | 本主题共有 3 篇文章,分 1 页, 当前显示第 1 页 | 回到顶部
<<始页  [1]  末页>>

请登录后回复:帐号   密码