Chinaunix首页 | 论坛 | 博客
  • 博客访问: 4562850
  • 博文数量: 1214
  • 博客积分: 13195
  • 博客等级: 上将
  • 技术积分: 9105
  • 用 户 组: 普通用户
  • 注册时间: 2007-01-19 14:41
个人简介

C++,python,热爱算法和机器学习

文章分类

全部博文(1214)

文章存档

2021年(13)

2020年(49)

2019年(14)

2018年(27)

2017年(69)

2016年(100)

2015年(106)

2014年(240)

2013年(5)

2012年(193)

2011年(155)

2010年(93)

2009年(62)

2008年(51)

2007年(37)

分类: 网络与安全

2016-10-08 17:09:09

原文地址:
作者:Jonathan LEI
链接:
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

上一篇文章的最后,我们列出来需要解决的一些问题。这些问题基本上都与参数有关,因此从这里开始我们便会开始研究他们。

首先,要用到的工具是浏览器F12 Dev Tool里的Debugger,Chrome和Edge的都可以。

开始之前先确保你对JavaScript有最基础的认知,达到语法上能看懂就好了。

---------------------------------------------------------------------------------------

首先要探究的是1号包里的ts参数,上一篇文章中我们作出了它是随机数的假设。切换到Debugger标签页,在搜索框中输入ts=进行搜索:

可以看到,ts参数的确是随机数没错。这样我们就可以写代码模拟出1号包了。

接着是回调函数名geetest_xxx中的xxx,我们想知道这里的xxx是否也是随机数。在搜索框中寻找callback=",结果有两个,一个是gt.js中的:

s.src = protocol + apiServer + "getfrontlib.php?gt=" + config.gt + "&callback=" + cb; 

从这里往上追查cb,找到了这一行:

var cb = "geetest_" + random(); 

random并不是JS原生函数,在同一页面找到random的定义:

var random = function () { return parseInt(Math.random() * 10000) + (new Date()).valueOf(); }; 

我们一开始猜测它是单纯的随机数,实际上它是一个0-10000的随机整数加上目前的UNIX时间。这个实际上也非常好模拟。

至此,对于上次留下的5个问题中,第一个问题:

  • 1号包的参数ts和后面的callback的后缀是否真的是随机数?

我们得出了答案:

  • ts是单纯的随机数,只是为了防止浏览器直接返回缓存
  • callback的后缀是随机数+目前时间

是的,就是这样,这篇文章无耻地在这里结束了????(一天一更就是这样)。原本想把图像还原也开个头的,但是有点累了不想写了。我还得尽快在专栏微软信仰中心里更新之前挖下的必应词典API的坑啊(有兴趣的可以去看看)。

下篇文章里我们将一起探究打乱了的图像是如何被还原的,而在再下一篇文章里,我们将会开始写C#来实现这个还原。

还是那句啦,喜欢我的文章的话记得关注点赞!

阅读(1343) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~