淘宝封杀selenium的ua算法分析

本文分析了淘宝封杀selenium的ua算法,发现ua每次不同且长度随使用次数增加的原因是通过window对象的_getter_方法动态生成。关键在于_h_函数,特别是h函数内部的混淆js代码,它决定了ua的生成。尽管解析复杂,但提供了进一步研究的线索,下篇将探讨password的加密方式。
摘要由CSDN通过智能技术生成

接上一回,我们大致梳理了淘宝封杀selenium的思路,找到核心的参数ua,并抛出疑问:为什么ua每次都不一样,并且随着使用次数次数增加长度越来越长。

 

关于为什么每次获取的ua参数长度都不一样,有个网友留言让我豁然开朗:

 
 

`window.__defineGetter__('_f_', function (){return new Date()})

 

原理就是给这个属性绑定一个输出前的私有方法,每次在获取该属性的时候执行该私有方法,从而达到每次输出的值都不一样。

 

受此启发,然后在仔细分析window对象,找到如下两个关键信息

 
 

get _n:ƒ s() arguments:Arguments [callee: ƒ, Symbol(Symbol.iterator): ƒ] caller:ƒ () length:0 name:"s" prototype:{constructor: ƒ} __proto__:ƒ () [[FunctionLocation]]:115.js?d=24:formatted:559 [[Scopes]]:Scopes[2] set _n:ƒ () arguments:null caller:null length:0 name:"" prototype:{constructor: ƒ} __proto__:ƒ () [[FunctionLocation]]:115.js?d=24:formatted:17214 [[Scopes]]:Scopes[3]

 

有get _n方法和set _n()方法,其中get方法对应115.js文件的559行;set方法对应115文件的17214行。

 

<
  • 3
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值