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日

相关文章

  • Java仿12306图片验证码

    下面我会详细讲解“Java仿12306图片验证码”的实现攻略。 简介 图片验证码是一种常用的验证码类型,它可以有效防止机器人恶意攻击。在Java Web应用中,实现验证码功能可以采用Kaptcha、JCaptcha等开源组件,也可以自己编写代码实现。 本文主要介绍如何使用Java编写代码实现仿12306的图片验证码。 实现过程 1. 随机生成验证码字符串 首…

    Java 2023年6月15日
    00
  • Java Exception 捕获和显示实例详解

    Java Exception 捕获和显示实例详解 什么是异常(Exception)? 在编写 Java 程序时,异常是不可避免的。异常是程序在运行时发生的错误或问题。 在 Java 中,异常被视为对象,这是由类派生的异常类的实例。 如果在运行程序时发生异常,程序会被终止。 Java 异常的类层次结构 在 Java 中,异常的类层次结构如下所示: java.l…

    Java 2023年5月26日
    00
  • Java集合Stream流操作的基本使用教程分享

    Java集合Stream流操作的基本使用教程分享 什么是Java集合Stream流? Java集合Stream流是Java 8新增的一个处理集合数据的API。集合Stream流本质上是一个“管道”或者“流水线”,它可以通过一系列中间操作对数据进行处理。中间操作不会导致数据计算,只会记录操作,而最终的操作称为终端操作,会触发所有中间操作的计算并返回一个结果。 …

    Java 2023年5月26日
    00
  • Jsp生成页面验证码的方法[附代码]

    让我来详细讲解一下“Jsp生成页面验证码的方法[附代码]”。 1. 简介 验证码(Captcha)是一种常见的图形验证码,用于防止恶意攻击和自动化机器人下载。在 JSP 网站设计的过程中,JavaWeb 的技术基本上都使用了验证码,验证方式很多,确保了 JSP 网站的安全性和性能。 2. 生成验证码示例 下面是一个简单的 JSP 页面,展示了如何使用 Jav…

    Java 2023年6月15日
    00
  • Java long 转成 String的实现

    Java中将long类型转为String类型的方法有多种,本文将介绍两种实现。 方法一:使用String.valueOf()方法转换 String.valueOf(long value)方法可以将long类型转为String类型。例如: long num = 123456789; String str = String.valueOf(num); Syste…

    Java 2023年5月27日
    00
  • windows下配置两个或多个Tomcat启动的方法

    这里是“windows下配置两个或多个Tomcat启动的方法”的完整攻略: 1. 下载Tomcat 首先,在官网下载两个或多个Tomcat的安装包(例如Tomcat 8、Tomcat 9等)。 2. 安装Tomcat 接下来,对下载下来的每一个Tomcat安装包进行安装。安装过程中将会有需要设置的选项,需要注意的是,每一个Tomcat需要分别设置不同的端口号…

    Java 2023年5月19日
    00
  • 使用list stream: 任意对象List拼接字符串

    使用List Stream将任意对象列表拼接成字符串,可以通过以下步骤完成: 准备任意对象类型的列表。 使用 List Stream 将列表转换为字符串。 使用 Collectors.joining() 方法拼接列表元素。 下面是将任意对象列表拼接为字符串的完整代码示例: List<User> userList = Arrays.asList( …

    Java 2023年5月27日
    00
  • JSP Struts过滤xss攻击的解决办法

    JSP Struts是在Java Web开发中广泛使用的MVC框架。由于其流行,JSP Struts通常成为黑客尝试攻击Web应用程序的目标之一。大多数Web应用程序都包含处理用户输入的代码,因此,如果代码存在漏洞,则容易成为恶意用户攻击的目标,其中包括跨站脚本攻击(XSS)。 为了过滤XSS攻击,在JSP Struts开发中,可以采取以下步骤: 对用户输入…

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