js 给id 赋值变量,js id选择器赋值

大家好,给大家分享一下js 给id 赋值变量,很多人还不知道这一点。下面详细解释一下。现在让我们来看看!

由于自己近年来一直在做Python爬虫开发,就把之前所做过的一些项目一些难点以及一些经验记录下来,对所抓取下来的企业数据进行一些数据上的补充,需要抓取企查猫的搜索接口,企查猫的搜索接口上有参数进行了js加密,找我研究一下,今天我把我的经历和解决方案分享给大家。

加密位置

在它的搜索接口这里mfccode参数是每次都会变的,而且失效很快,只能查找一次,第二次或者失效就会跳转登录页面,并且我们直接抓取的话,直接跳转的也是登录页面,所以就必须要研究该参数

a0d4338f14812721c39e642c2d0cd183.png
mfccode

进行分析

我们通过Fiddler抓包分析在它的页面请求成功之前额外进行了两次请求,并且第一次请求返回的是一串js代码,如下图:

896e6661caccea5d39a248d8ccc9c48c.png
两次请求

0033c409a462db6a9f3fa6c5f8948dbb.png
请求返回的js代码

可能改参数就是由该js生成的,我们通过观察js的调用栈追溯到该参数生成位置,如图:

396aa1ac2480705052e4eda76f35683f.png

2159ba275ec0386ac151835c7b9c9574.png
window.__qzmcf()

打上断点进行单步调试,出现的就是我们第一次访问返回的js代码快码论文。如图:

1cfadd2f7656def9be987308dabfe653.png

但是这串代码用Pretty print 是无法进行格式化的,没办法进行调试,所以我们需要把js复制下来自己写一个页面进行调试分析

首先观察js,可以看出这串js它是个立即执行函数,内部传入了一个window,如图:

eecdfe82fda752dedc6dead10f27e630.png
立即执行函数

js立即执行函数就是可以让你的函数在创建后立即执行,可以让你的函数在定义后立即被执行,这种模式本质上就是函数表达式(命名的或者匿名的),在创建后立即执行。也算是一个闭包,所以呢此处我们就需要进行一个拆包,先观察js

e0b52f3fd456c00db52efbcec81a2fad.png

w也就是window,调用了s这个函数,经过观察发现s函数传入的参数其实就是一个个的Unicode 编码通过String.fromCharCode()进行了转换,如图:

a7d689364f4aba784c67dc22cfeb7328.png
__qzmcf

是不是很熟悉,这不就是上图window.__qzmcf()调用的函数,意思就是将dc赋值给了window.__qzmcf(),那么就证明我们只需要调用dc就可以了,我们把dc函数扣出来,然后再把需要的js全扣出来,把需要w的位置改为window,进行console.log()输出就成功获取如图:

491d6bb57585abfbdce4f5763ea97f3c.png
mfccode

此处需要注意window.document,python是无法调用的,所以我们需要用去观察该js做了什么,然后用python编写出来,可以看出该js也是调用了s函数,生成的就是cookie,将cookie赋值给ac就可以了

ea2e116e85c86c44a8aaa22835938d0e.png

25b9e96268881ee7bf408f07f07f304f.png

调用思路

至此我们就可以去编写代码了,在第一次访问页面的时候先获取cookie,再将返回的js进行拆包,然后将w.document替换为获取的cookie,最后调用dc就可以成功获取mfccode参数

e062c88300aad2d51cbc84f6ca4b3c37.png
演示数据
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值