【瑞数RS专题】首层代码分析,和获取eval层代码,cookie反爬虫详解

这篇具有很好参考价值的文章主要介绍了【瑞数RS专题】首层代码分析,和获取eval层代码,cookie反爬虫详解。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

如有侵权、联系本人下架

以下面两个网站为例

1.aHR0cDovL3d3dy5mYW5nZGkuY29tLmNuL25ld19ob3VzZS9uZXdfaG91c2VfZGV0YWlsLmh0bWw=

2.aHR0cHM6Ly93d3cubm1wYS5nb3YuY24veWFvd2VuL3lwamd5dy9pbmRleC5odG1s

首先明确一下目标,我们要先获取网页200的源代码,RS5代第一次响应为412,第二次为200。如果是200就表示正常
以下为某 yjj RS5请求成功的结果,具体流程请看完文章,源-码–答-案也会在末 尾公 布

【瑞数RS专题】首层代码分析,和获取eval层代码,cookie反爬虫详解

当我们不带任何cookie访问的时候,会返回一个202的响应码,并且附带一个set-cookie。响应体里面会加载一段混淆了的js代码,生成另一个cookie,携带这两个cookie再次访问网站,就可以获取200的源代码

所以,我们的目标就是分析这一段混淆的了js代码,看看另一个cookie是如何生成的

使用无痕浏览器,打开网页前,首先开启脚本断点

【瑞数RS专题】首层代码分析,和获取eval层代码,cookie反爬虫详解

这时再访问网站,会在一个js页面断下

【瑞数RS专题】首层代码分析,和获取eval层代码,cookie反爬虫详解
这是这个以【$_ts】开头的js文件,后面的一段乱码是给首层js代码还原的,继续运行来看看首页代码

【瑞数RS专题】首层代码分析,和获取eval层代码,cookie反爬虫详解
首层代码主要的有两部分,第一部分是这个【Math.abs】下面的这个函数,这个是用来生成最后cookie aes加密所需要的key,等用到的时候再具体分析
【瑞数RS专题】首层代码分析,和获取eval层代码,cookie反爬虫详解

第二部分是第一个【while (1)】与下一个函数,这里主要的功能是把前面js里面的乱码还原成eval层的代码,并且生成【$_ts】的部分值给eval层代码使用。

那么eval层的代码在哪里进入呢?有一个很好的方法,就是搜索【call】
【瑞数RS专题】首层代码分析,和获取eval层代码,cookie反爬虫详解

就只有一个结果,这里函数调用的第二个参数【_$wx】就是已经生成好的eval层代码

【瑞数RS专题】首层代码分析,和获取eval层代码,cookie反爬虫详解

进入后又是一段混淆了的代码,而我们需要找的cookie生成算法,就是在这eval层的代码里面

【瑞数RS专题】首层代码分析,和获取eval层代码,cookie反爬虫详解

里面也用到了【 t s 】这个变量,那么第一步,我们就是需要拿到 e v a l 的函数,和进入 e v a l 时 _ts】这个变量,那么第一步,我们就是需要拿到eval的函数,和进入eval时 ts】这个变量,那么第一步,我们就是需要拿到eval的函数,和进入eval_ts的具体内容

写一段代码浅尝一下

import requests_html


def main():
    requests = requests_html.HTMLSession()
    response = requests.get(url)
    print(response.status_code)
    print(response.text)


if __name__ == '__main__':
    main()

【瑞数RS专题】首层代码分析,和获取eval层代码,cookie反爬虫详解

非常符合预期的202页面,接着把js内容和js链接抽取出来

import requests_html
from urllib import parse


def main():
    requests = requests_html.HTMLSession()
    response = requests.get(url)
    print(response.status_code)
    html_js = filter(lambda n: '(function()' in n.text, response.html.find('script')).__next__().find('script', first=True).text
    js_url = response.html.find('script[charset="iso-8859-1"]', first=True).attrs['src']
    encrypt_js = requests.get(parse.urljoin(url, js_url)).content.decode('iso-8859-1')
    print(html_js)
    print(encrypt_js)


if __name__ == '__main__':
    main()

【瑞数RS专题】首层代码分析,和获取eval层代码,cookie反爬虫详解

网页返回的js代码和js链接中的代码都拿到了,前面我们知道,当运行到call的时候,就进入到eval层的代码,但是我们并不想它运行,只是想拿到eval层的代码和$_ts的具体内容,那么就要在call的地方修改一下

用正则匹配出call的语句,并且替换成打印,并强制退出,我们就可以在控制台拿到想要的内容

我们使用nodejs运行代码来获取,所以需要先安装nodejs。因为我们文件不下地,这里就使用node的pipe通道的提交代码执行

import re
import subprocess
import requests_html
from urllib import parse


def main():
    requests = requests_html.HTMLSession()
    response = requests.get(url)
    html_js = filter(lambda n: '(function()' in n.text, response.html.find('script')).__next__().find('script', first=True).text
    js_url = response.html.find('script[charset="iso-8859-1"]', first=True).attrs['src']
    encrypt_js = requests.get(parse.urljoin(url, js_url)).content.decode('iso-8859-1')
    ret = re.findall('ret=.{4}\.call.{12}', html_js)[0]
    ret_name = ret[-6: -2]
    ff = subprocess.Popen('node', stdin=subprocess.PIPE, stdout=subprocess.PIPE, encoding='utf-8')  # 需要安装node环境
    ff.stdin.write("window = global;\nwindow['$_ts'] = {}\n")
    ff.stdin.write(encrypt_js)
    ff.stdin.write(html_js.replace(ret, "ret={};window['$_ts']['js']=" + ret_name + ";console.log(JSON.stringify(window['$_ts']));process.exit(0)"))
    ff.stdin.close()
    ts_json = ff.stdout.read()
    print(ts_json)


if __name__ == '__main__':
    main()

【瑞数RS专题】首层代码分析,和获取eval层代码,cookie反爬虫详解

此时打印的内容就是【$_ts】具体的值,并且我们把js的内容也顺便放到一起返回了,接着我们就可以进一步分析eval层的代码

今天我们完成了第一步,获取了eval层的代码和$_ts具体的值

今天分享到这里就结束了,欢迎大家关注下期文章,我们不见不散⛽️
详细调试 vx-> jy2001aaa
文章来源地址https://www.toymoban.com/news/detail-438761.html

到了这里,关于【瑞数RS专题】首层代码分析,和获取eval层代码,cookie反爬虫详解的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 瑞数5.5逆向:纯算法解密与关键点分析

    本文详细记录了瑞数5.5版本的逆向分析过程,包括请求特征识别、动态内容解密、外链JS内容生成、自执行函数逻辑、以及生成cookie函数的关键步骤。

    2023年04月23日
    浏览(51)
  • 网络程序设计专题实验:TCP/IP协议栈源代码分析

    inet_init是如何被调用的?从start_kernel到inet_init调用路径 跟踪分析TCP/IP协议栈如何将自己与上层套接口与下层数据链路层关联起来的? TCP的三次握手源代码跟踪分析,跟踪找出设置和发送SYN/ACK的位置,以及状态转换的位置 send在TCP/IP协议栈中的执行路径 recv在TCP/IP协议栈中的执

    2024年02月02日
    浏览(69)
  • RS232 Android获取串口数据

    串行接口简称串口,也称串行通信接口或串行通讯接口(通常指COM接口),是采用串行通信方式的扩展接口。串行接口 (Serial Interface)是指数据一位一位地顺序传送。其特点是通信线路简单,只要一对传输线就可以实现双向通信(可以直接利用电话线作为传输线),从而大

    2024年02月09日
    浏览(46)
  • 【网安AIGC专题10.19】论文3代码生成:ChatGPT+自协作代码生成+角色扮演(分析员、程序员、测试员)+消融实验、用于MBPP+HumanEval数据集

    Yihong Dong∗, Xue Jiang∗, Zhi Jin†, Ge Li† (Peking University) arXiv May 2023 arXiv 2023.4.15 https://arxiv.org/pdf/2304.07590.pdf 一位不愿意透露姓名的朋友分享了Self-collaboration Code Generation via ChatGPT《基于ChatGPT的自协作代码生成》 这篇论文是chatgpt的黑盒api调用,因此没有关于模型的微调等操作,

    2024年02月03日
    浏览(71)
  • 一文详解Cookie以及Selenium自动获取Cookie

    以后数据获取途径以及数据资产绝对会是未来核心要素生产工具和资源之一,每个大模型都离不开更加精细化数据的二次喂养训练。不过现在来看收集大量数据的方法还是有很多途径的,有些垂直领域的专业数据是很难获取得到的,靠人力去搜寻相当费时费力,而且处理起来

    2024年02月04日
    浏览(55)
  • 【Cookie】获取 Cookie 时,出现 http: named cookie not present

    在Web开发时,我们经常与Cookie打交道,它被用作浏览器中存储的数据。Cookie是name:value的结构,name和value都为字符串。 cookie ,简而言之就是在本地计算机保存一些用户的历史信息。 我们先分析存储Cookie的流程: 1.在首次访问网站时,浏览器发送请求中并未携带Cookie; 2.服务

    2024年03月18日
    浏览(68)
  • 破解小程序禁止使用JS解释器动态执行JS(eval5、estime、evil-eval等)代码的终极解决方案

    关于被小程序禁止使用eval函数的问题,大家都多少了解了,新规则已经限制死了。请看下面新规则。 既然要求如此严格,那么有没有其它解决方案呢,所谓上有正常,下有对策。故今天这篇文章就是要提供新的思路实现动态执行js代码的方案。 云函数 云对象 是的,既然在代

    2024年02月10日
    浏览(83)
  • vue的cookies:vue-cookies 设置,获取及删除指定的cookies

    引用 main.js中设置 1、设置cookie 2、获取cookie 3、删除cookie 4、判断cookie中是否有指定的key 5、获取所有cookie

    2024年02月13日
    浏览(39)
  • selenium保持用户登陆的方法(获取cookie和添加cookie)

    目录 获得cookie 实现登陆 首先在用户登陆界面手动获取用selenium点击等操作获得cookie,并保存至txt 在新链接添加cookie实现用户保持登陆

    2024年02月11日
    浏览(41)
  • 【selenium 获取cookie】

    golang代码 python代码

    2024年02月13日
    浏览(61)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包