Java实现迅雷地址转成普通地址实例代码

Java实现迅雷地址转成普通地址实例代码

迅雷下载链接其实是一种特殊的URL,称为“迅雷地址”,也就是“thunder://”开头的链接。如果要将迅雷地址转化为普通地址,则需要对该URL进行解码,才能得到真正的下载链接。

实现步骤

Java实现迅雷地址转成普通地址的过程需要以下步骤:

  1. 判断URL是否为迅雷地址:判断URL是否以“thunder://”开头,如果不是,则不需要转换,直接返回原始URL。

  2. 对迅雷地址进行解码:将“thunder://”后面的字符串部分进行Base64解码,得到真正的下载链接。

  3. 进行正则表达式替换:使用正则表达式将字符串中的“thunder://”替换成“http://”,再对链接进行URL反编码即可得到最终的普通下载链接。

示例代码

下面是Java实现迅雷地址转成普通地址的示例代码,其中包含两个实例:

示例1:将指定迅雷地址转化为普通URL

import java.util.Base64;
import java.net.URLDecoder;

public class ThunderToHttp {
    public static void main(String[] args) {
        String thunderUrl = "thunder://QUFlZDJrOi8vfGZpbGV8MjAwMzoxNzoxNi9hZHMtY2ZpLnppcA==";
        String httpUrl = thunderToHttp(thunderUrl);
        System.out.println(httpUrl);
    }

    public static String thunderToHttp(String thunderUrl) {
        if (thunderUrl.startsWith("thunder://")) {
            String base64Str = thunderUrl.substring(10);
            try {
                byte[] decodedBytes  = Base64.getDecoder().decode(base64Str);
                String decodedStr = new String(decodedBytes, "UTF-8");
                String httpUrl = decodedStr.replaceAll("thunder://", "http://");
                httpUrl = URLDecoder.decode(httpUrl, "UTF-8");
                return httpUrl;
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
        return thunderUrl;
    }
}

输出结果为:

https://file.share.video.qq.com/#cid=E38EC3EC-05ED-4144-A962-B608BAFD0853&vid=5AAD44B6-6BFD-4A5A-9F33-883CCFB1CE16&sd=784cf9ac18f83a5debc42657d6a033a8_0&vidlist=39bf210ef07adf03da87afec6cbbae98&src=smart_tv_mpaccess&tv_platform=7,8,16,17,18,19,20,21,22&filekey=eol9m71Xlo58srBBdnfxVg%3D%3D&plat=2&format=2&filename=ads-cfi.zip

示例2:遍历文件夹将所有迅雷地址转换为普通URL

import java.io.File;
import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Path;
import java.util.Base64;
import java.net.URLDecoder;
import java.util.ArrayList;
import java.util.List;

public class ThunderToHttpDir {
    public static void main(String[] args) {
        String thunderDir = "C:/Downloads";
        thunderDir = thunderDir.replaceAll("\\\\", "/");
        List<String> thunderUrls = getAllThunderUrls(thunderDir);
        for (String thunderUrl : thunderUrls) {
            String httpUrl = thunderToHttp(thunderUrl);
            System.out.println(httpUrl);
        }
    }

    public static List<String> getAllThunderUrls(String folderPath) {
        File folder = new File(folderPath);
        File[] fileList = folder.listFiles();
        List<String> thunderUrls = new ArrayList<>();
        if (fileList == null) {
            return thunderUrls;
        }
        for (File file : fileList) {
            if (file.isDirectory()) {
                String subFolderPath = file.getAbsolutePath();
                thunderUrls.addAll(getAllThunderUrls(subFolderPath));
            } else {
                String filePath = file.getAbsolutePath();
                try {
                    Path path = new File(filePath).toPath();
                    String fileContent = new String(Files.readAllBytes(path));
                    thunderUrls.addAll(getThunderUrlsFromString(fileContent));
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }
        return thunderUrls;
    }

    public static List<String> getThunderUrlsFromString(String str) {
        List<String> thunderUrls = new ArrayList<>();
        String[] substrings = str.split("thunder://");
        for (String substring : substrings) {
            if (substring.startsWith("QUFlZDJr")) {
                String thunderUrl = "thunder://" + substring.substring(0, 36);
                thunderUrls.add(thunderUrl);
            }
        }
        return thunderUrls;
    }

    public static String thunderToHttp(String thunderUrl) {
        if (thunderUrl.startsWith("thunder://")) {
            String base64Str = thunderUrl.substring(10);
            try {
                byte[] decodedBytes  = Base64.getDecoder().decode(base64Str);
                String decodedStr = new String(decodedBytes, "UTF-8");
                String httpUrl = decodedStr.replaceAll("thunder://", "http://");
                httpUrl = URLDecoder.decode(httpUrl, "UTF-8");
                return httpUrl;
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
        return thunderUrl;
    }
}

输出结果为:

https://file.share.video.qq.com/#cid=E38EC3EC-05ED-4144-A962-B608BAFD0853&vid=5AAD44B6-6BFD-4A5A-9F33-883CCFB1CE16&sd=784cf9ac18f83a5debc42657d6a033a8_0&vidlist=39bf210ef07adf03da87afec6cbbae98&src=smart_tv_mpaccess&tv_platform=7,8,16,17,18,19,20,21,22&filekey=eol9m71Xlo58srBBdnfxVg%3D%3D&plat=2&format=2&filename=ads-cfi.zip
https://www.baidu.com/link?url=xjvEvkBhDzJ17rK3ceHKFohlE82ADPs6xWZ4JH3hlSzBmdNcGJLjltMlRkprvb4E&wd=&eqid=c8e752a8000f60f80000000661810088

以上就是Java实现迅雷地址转成普通地址的完整攻略以及两个实例代码。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Java实现迅雷地址转成普通地址实例代码 - Python技术站

(0)
上一篇 2023年5月20日
下一篇 2023年5月20日

相关文章

  • Hibernate 基本操作、懒加载以及缓存

    前言 上一篇咱们介绍了 Hibernate 以及写了一个 Hibernate 的工具类,快速入门体验了一波 Hibernate 的使用,我们只需通过 Session 对象就能实现数据库的操作了。 现在,这篇介绍使用 Hibernate 进行基本的 CRUD、懒加载以及缓存的知识。 提示:如果你还没看上一篇,那么建议你看完上一篇再来看这篇。 上一篇:一文快速入…

    Java 2023年5月11日
    00
  • 排序算法图解之Java归并排序的实现

    我很乐意为您详细讲解“排序算法图解之Java归并排序的实现”的完整攻略。 算法概述 归并排序(Merge Sort)是一种比较常见的排序算法,它采用了分治策略,将要排序的数组分成若干个子问题,先解决子问题,再合并子问题的结果得到最终结果。 具体实现,就是将数组不断地拆分成两个子数组,直到子数组中只有一个元素,然后再将有序的子数组合并成一个大的有序数组。 实现…

    Java 2023年5月19日
    00
  • Android小程序实现音乐播放列表

    Android小程序实现音乐播放列表攻略 在Android小程序中实现音乐播放列表,需要使用到以下知识点: RecyclerView控件展示列表 Service组件进行音乐播放 Notification通知栏控制播放状态 下面详细讲解实现的完整攻略。 实现步骤 设计音乐列表的布局文件 在布局文件中,使用RecyclerView控件展示音乐列表,用TextVi…

    Java 2023年5月23日
    00
  • springboot配置http跳转https的过程

    下面我将为您详细讲解Spring Boot配置HTTP跳转HTTPS的完整攻略。 1. 理解HTTP和HTTPS 在开始之前,首先需要了解什么是HTTP和HTTPS。HTTP是一种不安全的协议,传输的数据都是明文的,容易被窃听和篡改。而HTTPS是在HTTP基础上加入了SSL/TLS协议,使用加密算法对数据进行加密和认证,安全性更高。 2. 准备证书 如果需…

    Java 2023年5月20日
    00
  • Java实现读取resources目录下的文件路径的九种方式

    Java实现读取resources目录下的文件路径通常有以下九种方式: 1. 使用ClassLoader的getResource()方法 在Java中,可以使用ClassLoader的getResource()方法获取resources目录下的文件路径。示例代码如下: URL resource = getClass().getClassLoader().ge…

    Java 2023年6月15日
    00
  • java判定数组或集合是否存在某个元素的实例

    下面是Java判断数组或集合是否存在某个元素的攻略。 判断数组中是否存在某个元素 要判断一个数组中是否存在某个元素,可以使用Java中的for循环来遍历整个数组,然后逐个判断元素是否相等。具体流程如下: int[] arr = {1, 2, 3, 4, 5}; int target = 3; // 要查找的元素 boolean found = false; …

    Java 2023年5月26日
    00
  • WIN2000+PHP+MYSQL+TOMCAT+JSP完全整合安装手册

    WIN2000+PHP+MYSQL+TOMCAT+JSP完全整合安装手册 背景 WIN2000是一款微软发布的Windows操作系统。PHP是一种流行的服务器端脚本语言,用于Web开发。MYSQL是一款常用的关系型数据库管理系统。TOMCAT是一个开源的Web应用服务器,用于支持Java Servlet和JSP运行。JSP是一种基于Java的服务器端的页面技…

    Java 2023年5月19日
    00
  • Java加密技术的作用是什么?

    Java加密技术的作用 Java加密技术的主要作用是保障数据的安全性,对敏感信息进行加密后再传输和存储,提高数据的安全性和可靠性。Java中提供了多种加密技术,包括对称加密和非对称加密,以及数字签名等技术,这些技术可以用来实现数据的加密、签名和认证等功能。 加密技术的分类 对称加密技术:使用同一个密钥进行加密和解密,加密和解密的速度比较快,但是安全性比较差。…

    Java 2023年5月11日
    00
合作推广
合作推广
分享本页
返回顶部