Java爬虫携带sign签名

站点:https://www.mytokencap.com/

代码分析先不写了,大家自行解决,贴代码

1、业务请求设计

java 复制代码
public static void md5Pro() {
        String url = "https://api.mytokenapi.com/ticker/currencylistforall";
        Map<String, String> headers = new HashMap<>();
        headers.put("authority", "api.mytokenapi.com");
        headers.put("accept", "application/json, text/plain, */*");
        headers.put("accept-language", "en-GB,en;q=0.9,zh-CN;q=0.8,zh;q=0.7");
        headers.put("cache-control", "no-cache");
        headers.put("content-type", "application/x-www-form-urlencoded;charset=utf-8");
        headers.put("origin", "https://www.mytokencap.com");
        headers.put("pragma", "no-cache");
        headers.put("referer", "https://www.mytokencap.com/");
        headers.put("sec-ch-ua", "^\\^Not/A)Brand^^;v=^\\^99^^, ^\\^Google");
        headers.put("sec-ch-ua-mobile", "?0");
        headers.put("sec-ch-ua-platform", "^\\^Windows^^");
        headers.put("sec-fetch-dest", "empty");
        headers.put("sec-fetch-mode", "cors");
        headers.put("sec-fetch-site", "cross-site");
        headers.put("user-agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/115.0.0.0 Safari/537.36");

        long timestamp = System.currentTimeMillis();
        String code = MD5Example(timestamp + "9527" + String.valueOf(timestamp).substring(0, 6));
        System.out.println("签名---》" + code);
        Map<String, String> params = new HashMap<>();
        params.put("pages", "3,1");
        params.put("sizes", "100,100");
        params.put("subject", "market_cap");
        params.put("language", "en_US");
        params.put("timestamp", String.valueOf(timestamp));
        params.put("code", code);
        params.put("platform", "web_pc");
        params.put("v", "0.1.0");
        params.put("legal_currency", "USD");
        params.put("international", "1");

        try {
            String queryString = buildQueryString(params);
            String fullUrl = url + "?" + queryString;
            System.out.println("Full URL: " + fullUrl);
        } catch (UnsupportedEncodingException e) {
            e.printStackTrace();
        }


    }

2、MD5算法设计

java 复制代码
    public static String MD5Example(String text) {
        try {
            MessageDigest md = MessageDigest.getInstance("MD5");
            byte[] messageDigest = md.digest(text.getBytes());
            StringBuilder hexString = new StringBuilder();
            for (byte b : messageDigest) {
                String hex = Integer.toHexString(0xff & b);
                if (hex.length() == 1) {
                    hexString.append('0');
                }
                hexString.append(hex);
            }
            return hexString.toString();
        } catch (NoSuchAlgorithmException e) {
            throw new RuntimeException(e);
        }
    }

3、查询参数拼接

java 复制代码
    public static String buildQueryString(Map<String, String> params) throws UnsupportedEncodingException {
        SortedMap<String, String> sortedParams = new TreeMap<>(params);
        StringBuilder query = new StringBuilder();
        for (Map.Entry<String, String> entry : sortedParams.entrySet()) {
            if (query.length() > 0) {
                query.append("&");
            }
            query.append(URLEncoder.encode(entry.getKey(), "UTF-8"));
            query.append("=");
            query.append(URLEncoder.encode(entry.getValue(), "UTF-8"));
        }
        return query.toString();
    }
相关推荐
重生之我是数学王子9 分钟前
QT基础 编码问题 定时器 事件 绘图事件 keyPressEvent QT5.12.3环境 C++实现
开发语言·c++·qt
xmh-sxh-13149 分钟前
jdk各个版本介绍
java
Ai 编码助手10 分钟前
使用php和Xunsearch提升音乐网站的歌曲搜索效果
开发语言·php
学习前端的小z14 分钟前
【前端】深入理解 JavaScript 逻辑运算符的优先级与短路求值机制
开发语言·前端·javascript
神仙别闹22 分钟前
基于C#和Sql Server 2008实现的(WinForm)订单生成系统
开发语言·c#
XINGTECODE23 分钟前
海盗王集成网关和商城服务端功能golang版
开发语言·后端·golang
天天扭码28 分钟前
五天SpringCloud计划——DAY2之单体架构和微服务架构的选择和转换原则
java·spring cloud·微服务·架构
程序猿进阶29 分钟前
堆外内存泄露排查经历
java·jvm·后端·面试·性能优化·oom·内存泄露
FIN技术铺33 分钟前
Spring Boot框架Starter组件整理
java·spring boot·后端
zwjapple40 分钟前
typescript里面正则的使用
开发语言·javascript·正则表达式