爬虫响应cookie加速乐系案例:某旅游网
声明:
该文章为学习使用,严禁用于商业用途和非法用途,违者后果自负,由此产生的一切后果均与作者无关
一、响应cookie阿里系特点
- cookie中一定有类似__jsluid_s里面会有jsl的字样
- 同一个请求会发三次
- 第一次请求,状态码返回521,服务器返回的 Set-Cookie 中携带 __jsluid_s 参数,将获取到的响应内容解密拿到第一次 jsl_clearance_s 参数的值,响应内容一般是通过document.cookie设置__jsl_clearance_s
- 第二个请求,状态码返回521,根据__jsluid_s、__jsl_clearance_s发送请求,获取到响应内容,一般是OB混肴代码,在代码中会生成新的__jsl_clearance_s,用于下次请求
- 第三个请求,状态码返回200,根据__jsluid_s、__jsl_clearance_s成功获取数据
二、找出需要加密的参数
- js运行 atob(‘aHR0cHM6Ly93d3cubWFmZW5nd28uY24vaS81Mzc2OTc4Lmh0bWw=’) 拿到网址,F12打开调试工具,刷新页面,找到i/5376978.html请求(状态200),鼠标右击请求找到Copy>Copy as cUrl(cmd)
- 打开网站:https://spidertools.cn/#/curl2Request,把拷贝好的curl转成python代码,新建 mfw.py,把代码复制到该文件
- 然后把代码中的header除了User-Agent全部注释,再运行文件,会发现数据依然可以请求成功,再把cookie全部注释,会发现请求失败,说明cookie中有加密字段,再逐个注释会发现,除了__jsluid_s、__jsl_clearance_s其他字段注释都能请求成功,说明__jsluid_s、__jsl_clearance_s是加密字段
- 新建mfw.js,用于放扣下的代码
三、定位cookie生成
-
关键字__jsluid_s搜索,会发现__jsluid_s是由响应头set-cookie设置的cookie,Set-Cookie是服务器在客户端储存的一些信息,用于在后续的请求中传递和存储用户相关的信息或状态,带有__jsl字样时加速乐特点之一
-
分析该请求会发现请求失败,而且后面还有两个同样的请求,一个成功,一个失败,分析三个请求里面的cookie会发现第一个请求生成__jsluid_s,第二个请求根据__jsluid_s生成__jsl_clearance_s,第三个请求根据__jsluid_s、__jsl_clearance_s成功获取数据
-
修改mfw.py,第一次请求拿到__jsluid_s
-
查看第二次请求会发现,请求失败什么返回都没有,切换到sources,找到事件监听中的script打勾,每次加载script都会断点,缺点是如果插件过多,就需要跳过多次断点,才能找到该文件,可以打开个无痕窗口进行调试
-
切换到Application,清除浏览器的cookie,一定要先清除cookie,清除cookie后,刷新页面,如果有插件的一直点击跳过断点,直到看到有混肴js停下,分析代码最后会发现 __jsl_clearance_s,是作为go方法的参数,在go方法内部打个断点
-
点击跳过断点,会进入go方法内刚才的断点,Ctrl+F搜索_0x545136(这个每次加载时候会变,根据你文件go的参数进行搜索),会发现_0x545136[‘tn’] + ‘=’, _0x103368[0x0],_0x545136[‘tn’]是传过来的参数__jsl_clearance_s,而_0x103368[0x0]是__jsl_clearance_s的值,而_0x103368 = _0x190a7c(_0x545136[‘ct’], _0x545136[_0x38c5(‘0x3d’, ‘YDN0’)]);,在该行打上断点
-
点击跳过断点,分析_0x103368 = _0x190a7c(_0x545136[‘ct’], _0x545136[_0x38c5(‘0x3d’, ‘YDN0’)]),会发现_0x103368是由_0x190a7c函数生成,其中参数分别是传过来的参数中的 ct、bts,把ob混肴的自执行方法、ob混肴的数组、go函数拷贝带mdw.js,修改_0x545136[‘tn’] + ‘=’, _0x103368[0x0],_0x545136[‘tn’]代码为 return _0x103368[0x0]
-
运行mdw.js,会报_0x38c5的错误,把_0x38c5拷贝到mdw.js,再运行会报window的错误,开始补环境
-
在代码顶部声明window = global
-
运行mdw.js会报userAgent的错误,userAgent是navigator下的,在控制台输出该值,并在mdw.js补上userAgent
-
运行mdw.js,会报hash的错误,把hash方法拷贝到mdw.js
-
运行mdw.js,无报错
-
修改mdw.py,会发现并没有拿到正确的混肴js代码,再看第二次请求会发现第二次请求中也有__jsl_clearance_s参数,原因是在第一次请求时,会有个设置cookie的逻辑
-
清空cookie刷新页面,一直点击跳过断点,会发现document.cookie赋值的地方,在方法内部打断点,点击跳过断点,把document.cookie在控制台输出会发现__jsl_clearance_s
-
修改mdw.py,运行mdw.py,会发现已经拿到混肴的js代码
-
修改mdw.py,并运行,数据获取成功
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!