java 将普通下载地址转换为迅雷下载地址 base64编码实战 下载地址转换

这两天想写一个demo来获取电影天堂每天更新的信息,然后如果更新是自己感兴趣的方面或者包含关键词就直接进行下载,所以

需要将里面的ftp://的下载超链接转换为迅雷专用链接

经过查阅资料,参考博客http://www.cnblogs.com/wuyunan/articles/1501000.html的解析

则会发现,迅雷下载链接是thunder://字符串   然后这个字符串经过Base64解码后会变成 AA真正格式ZZ

所以只需要逆向将真正格式的下载链接加上AA和ZZ之后进行Base64编码,然后再将编码后的文字加上协议头即可.

另外,需要注意的是用java默认的Base64编码器编码后结果会有\r\n的回车换行标志,需要将\r\n替换删除掉后迅雷就可识别

代码如下:

 

/********************代码开始*******************/
import sun.misc.BASE64Encoder;
import java.io.UnsupportedEncodingException;  
public class Tools {
public static void main(String[] args){
System.out.println(Tools.convertToThunderLink("ftp://ygdy8:ygdy8@y219.dydytt.net:9153/[阳光电影www.ygdy8.com].耐撕侦探.BD.720p.中英双字幕.rmvb"));
}

/**
 * 将普通下载链接转换为迅雷下载链接
 * @param url
 * @return
 */
public static String convertToThunderLink(String url){
url = "AA" + url + "ZZ";
String result = "thunder://" + Tools.Base64Encoding(url);
result = result.replaceAll("\r\n", "");
return result;
}

/**
 * 获取Base64编码
 * @param str 待编码的字符串
 * @return 编码后的字符串
 */
public static String Base64Encoding(String str){
byte[] b = null;  
        String s = null;  
        try {  
            b = str.getBytes("UTF-8");  
        } catch (UnsupportedEncodingException e) {  
            e.printStackTrace();  
        }  
        if (b != null) {  
            s = new BASE64Encoder().encode(b);  
        }  
        return s;  
}
}
/*************************代码结束***************/

 
同理,qq旋风的下载链接也用到了Base64编码,需要自行转换的可以尝试

上述代码如果用的是eclipse有可能会报错找不到Base64Encoding,实际上是可以运行的,可以在Build Path里将system library删除掉重新添加即可消除报错.

发表评论

电子邮件地址不会被公开。 必填项已用*标注