爬虫响应cookie加速乐系案例:某旅游网

2023-12-26 06:25:23

声明:
该文章为学习使用,严禁用于商业用途和非法用途,违者后果自负,由此产生的一切后果均与作者无关

一、响应cookie阿里系特点
  1. cookie中一定有类似__jsluid_s里面会有jsl的字样
  2. 同一个请求会发三次
  3. 第一次请求,状态码返回521,服务器返回的 Set-Cookie 中携带 __jsluid_s 参数,将获取到的响应内容解密拿到第一次 jsl_clearance_s 参数的值,响应内容一般是通过document.cookie设置__jsl_clearance_s
  4. 第二个请求,状态码返回521,根据__jsluid_s、__jsl_clearance_s发送请求,获取到响应内容,一般是OB混肴代码,在代码中会生成新的__jsl_clearance_s,用于下次请求
  5. 第三个请求,状态码返回200,根据__jsluid_s、__jsl_clearance_s成功获取数据
二、找出需要加密的参数
  1. js运行 atob(‘aHR0cHM6Ly93d3cubWFmZW5nd28uY24vaS81Mzc2OTc4Lmh0bWw=’) 拿到网址,F12打开调试工具,刷新页面,找到i/5376978.html请求(状态200),鼠标右击请求找到Copy>Copy as cUrl(cmd)
  2. 打开网站:https://spidertools.cn/#/curl2Request,把拷贝好的curl转成python代码,新建 mfw.py,把代码复制到该文件
    在这里插入图片描述
  3. 然后把代码中的header除了User-Agent全部注释,再运行文件,会发现数据依然可以请求成功,再把cookie全部注释,会发现请求失败,说明cookie中有加密字段,再逐个注释会发现,除了__jsluid_s、__jsl_clearance_s其他字段注释都能请求成功,说明__jsluid_s、__jsl_clearance_s是加密字段
    在这里插入图片描述
  4. 新建mfw.js,用于放扣下的代码
三、定位cookie生成
  1. 关键字__jsluid_s搜索,会发现__jsluid_s是由响应头set-cookie设置的cookie,Set-Cookie是服务器在客户端储存的一些信息,用于在后续的请求中传递和存储用户相关的信息或状态,带有__jsl字样时加速乐特点之一
    在这里插入图片描述

  2. 分析该请求会发现请求失败,而且后面还有两个同样的请求,一个成功,一个失败,分析三个请求里面的cookie会发现第一个请求生成__jsluid_s,第二个请求根据__jsluid_s生成__jsl_clearance_s,第三个请求根据__jsluid_s、__jsl_clearance_s成功获取数据在这里插入图片描述在这里插入图片描述在这里插入图片描述

  3. 修改mfw.py,第一次请求拿到__jsluid_s
    在这里插入图片描述

  4. 查看第二次请求会发现,请求失败什么返回都没有,切换到sources,找到事件监听中的script打勾,每次加载script都会断点,缺点是如果插件过多,就需要跳过多次断点,才能找到该文件,可以打开个无痕窗口进行调试
    在这里插入图片描述

  5. 切换到Application,清除浏览器的cookie,一定要先清除cookie,清除cookie后,刷新页面,如果有插件的一直点击跳过断点,直到看到有混肴js停下,分析代码最后会发现 __jsl_clearance_s,是作为go方法的参数,在go方法内部打个断点
    在这里插入图片描述
    在这里插入图片描述

  6. 点击跳过断点,会进入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’)]);,在该行打上断点
    在这里插入图片描述在这里插入图片描述

  7. 点击跳过断点,分析_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]
    在这里插入图片描述

  8. 运行mdw.js,会报_0x38c5的错误,把_0x38c5拷贝到mdw.js,再运行会报window的错误,开始补环境
    在这里插入图片描述在这里插入图片描述

  9. 在代码顶部声明window = global
    在这里插入图片描述

  10. 运行mdw.js会报userAgent的错误,userAgent是navigator下的,在控制台输出该值,并在mdw.js补上userAgent
    在这里插入图片描述
    在这里插入图片描述

  11. 运行mdw.js,会报hash的错误,把hash方法拷贝到mdw.js在这里插入图片描述在这里插入图片描述

  12. 运行mdw.js,无报错在这里插入图片描述

  13. 修改mdw.py,会发现并没有拿到正确的混肴js代码,再看第二次请求会发现第二次请求中也有__jsl_clearance_s参数,原因是在第一次请求时,会有个设置cookie的逻辑在这里插入图片描述在这里插入图片描述

  14. 清空cookie刷新页面,一直点击跳过断点,会发现document.cookie赋值的地方,在方法内部打断点,点击跳过断点,把document.cookie在控制台输出会发现__jsl_clearance_s在这里插入图片描述在这里插入图片描述

  15. 修改mdw.py,运行mdw.py,会发现已经拿到混肴的js代码在这里插入图片描述

  16. 修改mdw.py,并运行,数据获取成功
    在这里插入图片描述

文章来源:https://blog.csdn.net/randy521520/article/details/134754333
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。