开启辅助访问 切换到宽版

精易论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

用微信号发送消息登录论坛

新人指南 邀请好友注册 - 我关注人的新帖 教你赚取精币 - 每日签到


求职/招聘- 论坛接单- 开发者大厅

论坛版规 总版规 - 建议/投诉 - 应聘版主 - 精华帖总集 积分说明 - 禁言标准 - 有奖举报

查看: 5064|回复: 18
收起左侧

[技术专题] 手记美拍增加播放量的某SIGN参数加密算法

[复制链接]
结帖率:73% (11/15)
发表于 2017-9-2 23:38:39 | 显示全部楼层 |阅读模式   广西壮族自治区南宁市
本帖最后由 阿诺大大 于 2017-9-3 03:50 编辑

在一般情况下,如果直接使用易语言的 网页访问(),它是不会执行返回结果里面的JS代码的。 在开发美拍软件的过程中,发现直接 访问美拍的视频地址,是不会增加播放量的。  除非使用浏览器访问,因为浏览器会执行JS代码。

本次记录一下此加密算法的查找与调试和封装过程吧。




具体哪条URL访问后可以增加播放量就不在发抓的过程了,直接筛选一下就知道了。


URL:http://statistics.meipai.com/statistics/play_video.json?client_id=1089857306
POST_DATA :data=%7B%22id%22%3A%22786687553%22%2C%22source%22%3A%22web%22%2C%22sig%22%3A%22TVBEU0RFRkRTRkpFMk56ZzJOamczTlRVemQyVmlNVFV3TkRNMk1qSXpNQT09%22%2C%22time%22%3A%221504364812%22%7D


链接和POST的数据都抓到了,一共需要5个参数
client_id = 当前美拍用户的ID号
data = 视频的ID号
source = web 这个是固定的,可能是判断是否是网页还是APP形式
sig = 本节需要解剖
time = 本节需要解剖,看起来是时间戳,实际是经过处理的


5个参数全部就绪,已知明文参数3条,2条是经过加密。那么,就正式开始抓取了!




-------------------------------------------------------教程分割线---------------------------------------------------------------
因前面讲到,直接用易语言代码访问网页无法增加访问量,说明它引用了JS,那么就先查找到当前视频页面加载的所有JS文件(直接过滤JQ这类公共库)。


1.png
如上图所示,仅有2个JS文件加载,去掉前面2个公用库,就是只剩下最后一个:
<script src="//img.app.meitudata.com/meitumv/auto_compress/9cf62aae1ce2d4a292cf5534d8e4e1a7.meipai.pc.v1.min.js"></script>
我们先打开万能的F12(开发者工具),切换到Sources , 如下雨所示,找到这个JS文件。
2.png

按照国际惯例,Ctrl+F 进行搜索,搜索什么呢? 直接搜索POST时提交的参数试试。 比如 sig
搜索出来的结果很另外意外,只有1条,并且正是我们要找到的。
3.png

并且我们可以清晰的看到,4个参数全在上面了,id,source,sig,time
但是我们需要的是后面2个的来源,前面2个已经知道了,直接进行反查, sig是通过执行 d() 获取的。
这里我进行下断点跟踪,发现这个函数就在这代码的上面。。
4.png

但是,我们发现,最重要的是它的 return 里面又执行了一个 D 函数, 这个d是带参数的,不是现在这个d,别搞混了哦,继续在return处下断点看看跳到哪里·


4.png

跳到这里了,我们发现这只是一个字符的简单位移操作算法,用的都是JS原生代码,发现 e 的变量没有定义,查找了一下e的变量:
e = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";

这些代码,可以直接自己新建个Html文档,复制进去就行了,我们只需要知道传的是什么内容,那么就要破案了。
我们返回到执行这个d函数的代码,在那里下断,通过下断的时候查看这个变量的内容是什么
5.png
通过下断后,我们知道 a,b,c 是由外部传进来的
c =   "MPDSDEFDSFJE2" // 上面写有了   
a = 当前视频的ID号
b = "web"
h = "" //空的
e =  parseInt((new Date).getTime() / 1e3)   //下面写有了,时间戳 / 1e3    1e3是个数值哦


到这里,我们可以总结归类了。
其实就是传递   当前视频的ID号,还有时间戳/1E3即可,这是经过改良后的代码,可以直接复制使用


最终程序代码(回复可见):


  1. [hide]
  2. <script>


  3. function calc(video_id,time) {
  4. var pass = "MPDSDEFDSFJE2";
  5. return jiami(pass + jiami(video_id+"web"+time))
  6. }


  7. function jiami(a){
  8. var d = "undefined" != typeof b ? b : window;
  9. var e = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";
  10. for (var b, c, d = 0, g = e, h = ""; a.charAt(0 | d) || (g = "=", d % 1); h += g.charAt(63 & b >> 8 - d % 1 * 8)) {
  11. if (c = a.charCodeAt(d += .75),
  12. c > 255)
  13. throw f;
  14. b = b << 8 | c
  15. }
  16. return h
  17. }

  18. video_id = "786687553";
  19. time = parseInt((new Date).getTime() / 1e3);
  20. alert("计算结果:\n\n sign="+calc(video_id,time)+"\n\n time="+time);
  21. </script>
  22. [/hide]
复制代码



累死了: 1.png
2.png
3.png
4.png
5.png
5.png
123.png

评分

参与人数 3好评 +3 精币 +9 收起 理由
Scorpion + 1 + 3 希望多出这样技术贴
大飛 + 1 + 4 奉上小小红包希望笑纳
鐵憨憨 + 1 + 2 感谢解答!!!昨天看这个JS看的一头雾水,等级有限制没办法给太多

查看全部评分


发表于 2019-5-31 22:36:00 | 显示全部楼层   广东省湛江市
web request forbidden
网页版刷播放被封了吧
回复 支持 反对

使用道具 举报

头像被屏蔽
结帖率:100% (143/143)
发表于 2019-3-22 11:50:34 | 显示全部楼层   浙江省嘉兴市
厉害了 支持         
回复 支持 反对

使用道具 举报

结帖率:89% (34/38)

签到天数: 5 天

发表于 2018-10-22 02:23:24 | 显示全部楼层   江西省宜春市
李艾流量 厉害了   
回复 支持 反对

使用道具 举报

发表于 2018-2-3 23:51:50 | 显示全部楼层   湖南省长沙市
厉害 了,学习一下
回复 支持 反对

使用道具 举报

结帖率:0% (0/2)
发表于 2018-1-21 21:34:05 | 显示全部楼层   安徽省芜湖市
牛X的人啊,哪里下载软件呢
回复 支持 反对

使用道具 举报

发表于 2017-12-6 17:22:10 | 显示全部楼层   陕西省宝鸡市
666666666666
回复 支持 反对

使用道具 举报

发表于 2017-9-29 01:01:18 | 显示全部楼层   浙江省台州市
6666~~~值得学习
回复 支持 反对

使用道具 举报

发表于 2017-9-22 22:22:03 | 显示全部楼层   北京市北京市
66666666666666666666666666666666666666
回复 支持 反对

使用道具 举报

结帖率:77% (41/53)

签到天数: 1 天

发表于 2017-9-20 18:44:06 | 显示全部楼层   江苏省常州市
@阿诺大大 你好 易语言我测试
获取空
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则 致发广告者

发布主题 收藏帖子 返回列表

sitemap| 易语言源码| 易语言教程| 易语言论坛| 易语言模块| 手机版| 广告投放| 精易论坛
拒绝任何人以任何形式在本论坛发表与中华人民共和国法律相抵触的言论,本站内容均为会员发表,并不代表精易立场!
论坛帖子内容仅用于技术交流学习和研究的目的,严禁用于非法目的,否则造成一切后果自负!如帖子内容侵害到你的权益,请联系我们!
防范网络诈骗,远离网络犯罪 违法和不良信息举报电话0663-3422125,QQ: 793400750,邮箱:wp@125.la
Powered by Discuz! X3.4 揭阳市揭东区精易科技有限公司 ( 粤ICP备12094385号-1) 粤公网安备 44522102000125 增值电信业务经营许可证 粤B2-20192173

快速回复 返回顶部 返回列表