快手 sig(sign)签名算法 java版
需求:想要获取快手短视频app的用户粉丝数
- 声明:本博文只是作为研究学习用途,请不要用于非法、商业用途。
- 写个帖子不容易,转载请说明出处,谢谢
- 首先需要用Fidder抓包工具找到接口地址
- 重点来了,快手所有的接口基本都用到了一个参数sig(数据签名)
声明:本博文只是作为研究学习用途,请不要用于非法、商业用途。
写个帖子不容易,转载请说明出处,谢谢
首先需要用Fidder抓包工具找到接口地址
这个过程省略,请参考这位博主的文章,我也是根据他的文章做的:
https://blog.csdn.net/bpp94_github/article/details/80038052
我是用的一个旧手机来进行抓包的
- 唯一有一点需要注意的是,我在安装证书的过程中(输入电脑ip+端口8888之后,点击了那个下载证书链接后),在手机浏览器下载管理中找到下载好的证书后,点击安装,居然提示我无法打开证书
- 几番百度后,找到了这个博主的帖子:
https://blog.csdn.net/hanyu_aa/article/details/81356442
注意:没有设置锁屏密码的话,安装的时候会提示输入凭据密码,这个时候需要先设置手机的锁屏密码,然后重启手机,再进行安装,输入锁屏密码后就搞定了
重点来了,快手所有的接口基本都用到了一个参数sig(数据签名)
接口传递的参数,用抓包工具可以看的很清楚,但是这个sig怎么来的,一脸懵逼
这个博主的帖子给了我一些灵感,但是还是不全对,地址贴出来:
https://blog.csdn.net/qq_26905283/article/details/46440215
从这个帖子中发现,计算方法是所有的参数进行一定的排序之后,再拼接上一个盐值(salt),用MD5加密得到的。
我这样做之后还是不对,有两个地方:
第一:不是所有的参数都参与排序加密;
第二:这个salt值怎么来的(没有去实验,猜测不同接口的salt有可能不一样或者隔一段时间之后该salt值会变化)
第一个问题:几经实验之后发现,所有的抓包参数除了sig和__NStokensig两个参数,其他参数都进行排序计算
第二个问题:这个salt值,我也没有搞清楚怎么来的(还望大神评论指点),我这里贴出获取粉丝数的这个salt值,其他的接口没有尝试(382700b563f4)
一下贴出我的代码:
public class SingatureUtil {private static final String FANS_SALT = "382700b563f4";public static String genSignature(Map<String,String> params,String salt) {if(params == null){return null;}String sign = "";StringBuffer sb = new StringBuffer();try {// 1. 字典升序排序SortedMap<String,String> sortedMap = new TreeMap<>(params);// 2. 拼按URL键值对Set<String> keySet = sortedMap.keySet();for(String key : keySet){//sign不参与算法if(key.equals("sig") || key.equals("__NStokensig")){continue;}String value = sortedMap.get(key);sb.append(key + "=" + URLDecoder.decode(value,"UTF-8"));}String uriString = sb.toString();uriString = uriString + salt;System.out.println("My String: \n" + uriString);// 3. MD5运算得到请求签名sign = MD5Util.md5(uriString);System.out.println("My Sign:\n" +sign);} catch (Exception e) {e.printStackTrace();}return sign;}public static Map<String,String> getMapFromStr(String str){if(StringUtils.isEmpty(str)){return null;}String[] arr = str.split("\\&");Map<String,String> map = new HashMap<>();for(String item : arr){String[] itemArr = item.split("=",2);map.put(itemArr[0],itemArr[1]);}return map;}public static void main(String[] args) throws UnsupportedEncodingException {String srcStr = "app=0&lon=104.073269&did_gt=1551777466213&c=XIAOMI&sys=ANDROID_4.4.4&isp=&mod=Xiaomi%28MI%203%29&did=ANDROID_b07d34ee8ff226b0&hotfix_ver=&ver=6.1&net=WIFI&country_code=cn&iuid=&appver=6.1.2.8197&max_memory=192&oc=XIAOMI&ftt=&kpn=KUAISHOU&ud=1273257807&language=zh-cn&kpf=ANDROID_PHONE&lat=30.537794&user=74476707&token=6f8b8954c34e4462a1c0117ac5a5af21-1273257807&os=android&client_key=3c2cd3f3&sig=8ab207f1762b17b47d1ca0cc26ce6576&__NStokensig=334b7f77f9fec536c1dce00467f8cf79bed4f66cd8a24ffc205b3e1a151ab1e7";genSignature(getMapFromStr(srcStr),FANS_SALT);}
}运行结果如下:
My String:
app=0appver=6.1.2.8197c=XIAOMIclient_key=3c2cd3f3country_code=cndid=ANDROID_b07d34ee8ff226b0did_gt=1551777466213ftt=hotfix_ver=isp=iuid=kpf=ANDROID_PHONEkpn=KUAISHOUlanguage=zh-cnlat=30.537794lon=104.073269max_memory=192mod=Xiaomi(MI 3)net=WIFIoc=XIAOMIos=androidsys=ANDROID_4.4.4token=6f8b8954c34e4462a1c0117ac5a5af21-1273257807ud=1273257807user=74476707ver=6.1382700b563f4
My Sign:
8ab207f1762b17b47d1ca0cc26ce6576Process finished with exit code 0
写个这个帖子也是希望能帮到需要的小伙伴,我也是百度找了好久都没有靠谱的帖子,翻墙google也没有,伤心啊。。。
快手 sig(sign)签名算法 java版相关推荐
- 快手签名算法php,快手 sig(sign)签名算法 java版
需求:想要获取快手短视频app的用户粉丝数 声明:本博文只是作为研究学习用途,请不要用于非法.商业用途. 写个帖子不容易,转载请说明出处,谢谢 首先需要用Fidder抓包工具找到接口地址 重点来了,快 ...
- 快手sig签名,python版,可用于快手关键字搜索结果采集
很多大佬分享了快手sig参数逆向破解的过程,我只是在大佬的基础上把sig加密部分代码转成python. sig生成原理:把url问号后面的参数转成dict,同时把form_data参数放在同一个dic ...
- java rsa数字签名_RSA 数字签名算法(Java版)
数字签名算法Java版 还是上代码吧 public static final String SIGN_ALGORITHMS = "SHA1WithRSA"; /** * RSA签名 ...
- RSA 数字签名算法(Java版)
数字签名算法Java版 还是上代码吧 public static final String SIGN_ALGORITHMS = "SHA1WithRSA";/*** RSA签名* ...
- 腾讯开放平台接口鉴权(计算签名)工具类 java版
腾讯开放平台 接口鉴权(签名)工具类 java版 用到了Hutool工具类 package top.seasmall.platform.core.config.nettyws.util;import ...
- 我的世界java版移除猪灵了吗_我的世界:激怒僵尸猪灵有奖励,用菌光体堆肥,修复126个漏洞!...
我的世界Java版1.16pre3(第三个预发布版)已经更新,玩家们从中可以看到一些内容被Mojang调整.首先,下界传送门方块加入战利品表,新增部分常规标签,影响不是很大.按照这样的速度,玩家们等到 ...
- Java版人脸检测详解上篇:运行环境的Docker镜像(CentOS+JDK+OpenCV)
欢迎访问我的GitHub 这里分类和汇总了欣宸的全部原创(含配套源码):https://github.com/zq2599/blog_demos 本篇概览 如果您看过<三分钟极速体验:Java版 ...
- 《克隆人的进攻》面向对象Java版
Java Q&A Java 问答 Attack of the clones 克隆人的进攻 之 面向对象Java版 Time and space considerations in four d ...
- nodejs调用建行互联网银企被扫支付接口Java版加解密Demo
环境:nodejs+eclipse+child_process模块+建行互联网银企被扫支付接口文档V2.2.6 总体步骤如下: 1.将建行Java版加密Demo打包成jar包:CCBParam.jar ...
最新文章
- Solr_全文检索引擎系统
- 三角函数公式、诱导公式
- re搜索字符串与find字符串不一样的结果
- Mule web service调用中的复杂类型传递
- 苹果电脑无法用普通域用户加入域,用域管理员却可以,怎么破!?
- 查看和设置mysql字符集
- pcb设计单点接地示意图_答案:关于PCB 的EMC设计知识考卷
- jeecg中ajax传值的前端js和后台代码
- 超可爱桌面电子宠物下载
- placement new操作符
- linux网络配置出现E325,Linux CentOS E325错误,如何解决?VI如何使用?
- Git应用之eclipse解决冲突代码
- 图解HTTP笔记(一)
- easyui获取图片路径_094 ego电商项目-2 菜单、图片上传、CRUD
- 五大媒体播放器的Andr​​oid
- AD13如何导出坐标文件
- 全国全量企业工商数据分析报告1
- 网站根目录与服务器根目录,根目录在哪里_网站的根目录在哪?急急!!!
- K核苷酸频率(KNF,k-nucleotide frequencies)或K-mer频率
- realme真我Q5和iQOOz6pro哪个值得买 两者配置对比
热门文章
- 0.45秒!以太坊平均网络传输时间又双叒叕缩短了;以太坊全球节点分布覆盖英国、法国及德国...
- LOJ#3054. 「HNOI 2019」鱼
- xpath提取当当网数学书前十页信息
- object-c 基础动画的学习总结
- 浅谈Mesh组网与AC+AP组网区别
- cocos2dx3.2打包apk
- 百度 android 市场,百度
- 线性代数(9)——初等矩阵和矩阵可逆性(上)
- php文件如何转音频,如何转换音频文件,mp3格式转换器,音频格式转换器,
- Typora+阿里云OSS(将图片上传到阿里云服务器上)