stemadb反扒机制分析

steamdb爬取时,需要验证cookie,分析可知cookie有效时间为一天

接下来开始正文,分析cookie如何获取。

一. 网站访问需求

经尝试得知,网站主要验证cookie中的 __cfduid 与 cf_clearance

只有俩同时有,网站才能正常访问。

二. 分析网站逻辑

2.1 接下来分析,__cfduid 与 cf_clearance 是如何得到的

可以看出,在访问网站时,进行了俩次访问。第一次访问时,返回了503,在第二次访问时,返回了200。

第一次访问时,不带cookie, 进行get, 返回了503 ,以及 cookie中的__cfduid值。

第二次访问时,为post, 分析可以看出,cf_clearance值就是在这次请求中返回的。只要解决掉这次post就可以得到cf_clearance。

2.2 分析第二次post的网址以及参数是如何得到的。

这次post,需要知道的有:

1.请求字符串,就是网址后面的一串,经尝试,每次请求都是不同的。

2. 表单数据 r、jschl_vc、pass、jschl_answer

既然每次请求均不同,且我们只访问了俩次网址,那么,这些参数必然是第一次get时返回的信息中获取的。

2.3 分析第一次get返回的信息

尝试分析,第一次get返回的数据,在form表单中,我们可以很明显的获取 请求字符串,r、jschl_vc、pass 的值,但是jschl_answer 并没有值,继续分析返回的数据,

在网站的js中,我们可以发现这么一行,a = document.getElementById('jschl-answer'); 从页面中获取jschl-answer元素。

在后续的js中,还可以发现 a.value = (+JAdEwio.gi).toFixed(10); '; 121;

得出,jschl-answer 的值是经过js计算得出的。

这样,我们就得到了第二阶段 post的地址,以及参数

2.4 进行第二次请求,获取cf_clearance

进行第二次请求,网站返回 cf_clearance 值,至此,通过携带cf_clearance与__cfduid,我们便可以任意的访问steamdb网站,获取我们需要的信息。

### 需要注意 如果是第一次访问,__cfduid在第一次和第二次直接会进行一次改变,记得更新。###

  • 2
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
易语言过五秒云防护源码 开始分析吧 直接提交会进入五秒防护页面 有这条cookie就不会了  cf_clearance=e87fbd2a47fa12a88e753e1eb17c62ea3f43d170-1564667178-1800-150 看看cookie从哪儿来的 提交这个url返回的cookie  https://www.cbt-coin2.com/cdn-cgi/l/chk_jschl?s=651c8e8a2b2e045e9309f00586d153fd4009fbc7-1564667174-1800-AY+ThdHTv12dh4eGsyfd0dBFGQY/SQiD/LvNLfz5P5iZgQdGxxFTjj3mcsVSsg6uCaG6wEtfR9QT6K3PIYVpGuX1134g+jJr4gWWx4aypT2irbcfmxJ5iTwfb1cW0wgSW5FsbF0c8BnWWIVFR5TcgN8=&jschl_vc=05b889c20c40123cf2726c583aa17ea2&pass=1564667178.083-1Na9bTwNvd&jschl_answer=23.7315576809 刚才没这个页面 可以看到四个参数有三个都是页面直接获取的  主要是计算jschl_answer参数   看看js吧 <input type="hidden" name="s" value="a435cf6d78a0c00a88ed5a86b46f07f72bfa1c82-1564667350-1800-ARAmHfr4jOsB+pNpP2X8VsXCkw1saBv6c8+ugZoOfMQ2EA1HuWP8YctpxnvFzEFu6FWAA8pOZ5tpPugcx7lpB1O7yo8N5gq2uDwwRAM9V6gLvjJsXoWX4dnzKFcjeh6hcG7myKJgAWnz0kE3tt9fQMY="></input> <input type="hidden" name="jschl_vc" value="edbe716597c6d800ef2f9bce55cb218b"/> <input type="hidden" name="pass" value="1564667354.805-EYaNXMZWoC"/> <input type="hidden" id="jschl-answer" name="jschl_answer"/> 主要就是这段js  直接抠下来看看 这种直接删掉就好了  t这个参数好像很重要  我们看看t是什么 t是这个链接  我们把t这个参数直接填这个就行了 没用的就直接删掉  然后关键的来了  a的值等于这个  然后js里 我们需要的jschl_answer就是a  我们直接改下 让他返回这个 这就出来了。。。也不是很难  对比一下是一样的   直接改易语言代码吧 时间问题就不重写了 主要问题是必须要延时  不然返回不正常 看把  不加延时就还是防火墙   加上延时就正常了

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值