淘宝封杀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行。

 

<
您可以使用Selenium来添加用户代理(User Agent, UA)。用户代理是一个字符串,用于标识浏览器和操作系统的信息。根据您提供的引用内容,您可以使用以下方法添加UA: 方法1: 您可以创建一个ChromeOptions对象,然后使用add_experimental_option()方法将用户代理添加到ChromeOptions中。例如,您可以使用以下代码添加UA: ```python UA = 'Mozilla/5.0 (Linux; Android 4.1.1; GT-N7100 Build/JRO03C) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/35.0.1916.138 Mobile Safari/537.36 T7/6.3' options = webdriver.ChromeOptions() options.add_experimental_option('mobileEmulation', {"deviceMetrics": {"width": 320, "height": 640, "pixelRatio": 3.0}, "userAgent": UA}) driver = webdriver.Chrome(options=options) ``` 这将创建一个Chrome浏览器实例,并将UA设置为指定的用户代理。 方法2: 您还可以使用mobile_emulation选项将设备名称和用户代理作为参数传递给ChromeOptions。例如,您可以使用以下代码添加UA: ```python mobile_emulation = { "deviceName": "Nexus 5", "userAgent": "Mozilla/5.0 (Linux; Android 4.1.1; GT-N7100 Build/JRO03C) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/35.0.1916.138 Mobile Safari/537.36 T7/6.3" } chrome_options = webdriver.ChromeOptions() chrome_options.add_experimental_option("mobileEmulation", mobile_emulation) driver = webdriver.Chrome(desired_capabilities = chrome_options.to_capabilities()) ``` 这将创建一个Chrome浏览器实例,并将设备名称设置为Nexus 5,并将UA设置为指定的用户代理。 无论您选择使用哪种方法,都可以通过添加适当的参数来向Selenium添加用户代理。这样,您的浏览器将以指定的用户代理标识自己。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值