首页 > 其他分享 >瑞数初体验--瑞数4补环境

瑞数初体验--瑞数4补环境

时间:2023-08-27 10:46:49浏览次数:43  
标签:function 初体验 return val 瑞数 -- cookie 页面

一、前言

都说瑞数很难,于是自己尝试一下通过补环境的方式来取到内容,记录一下过程。

二、瑞数介绍

瑞数有不同的版本,这次尝试的是瑞数的4代版本

瑞数4主要流程:第一次访问页面(返回202和cookie_S)->获取js,解密生成cookie_T->第二次带上cookie访问页面(返回200和内容)

image

image

image

三、过程

1、cookie生成过程

hook cookie生成位置

(function () {
    'use strict';
    var _cookie = "";
    Object.defineProperty(document, 'cookie', {
        set: function (value) {
            console.warn('cookies set->',new Date().getTime(), value);
            debugger;
            _cookie = value;
            return value;
        },
        get: function () {
            return _cookie;
        }
    })
})()

第一次页面代码

image

外部js代码

image

解密的VM代码

image

把conten、外部js代码、页面内自执行代码、VM代码都复制粘贴到一个文件里面(注意顺序)

image

image

2、补环境

在代码最前面稍微加上点代码,看看代码在浏览器中是否能正确生成cookie

document.getElementsByTagName = function() {
    return [{
        content: meta_content,   // 这里用的是页面中content
        parentNode: {
            removeChild: function() {}
        },
        parentElement: {
            removeChild: function() {}
        }
    }]
}

Object.prototype.getAttribute = function (val){if(val==='r'){return 'm'}}

image

可以看到在浏览器中可以正常生成cookie,接下来直接拿到本地,根据报错来补环境就ok了

先简单补一下环境,大部分环境直接在浏览器控制使用copy()来复制就好了

;Window = function () {}
window = global;
window.__proto__ = Window.prototype;

document = {
    characterSet: 'UTF-8',
    charset: 'UTF-8',
    scripts: ['script', 'script'],
    documentElement: {
        style: {}
    },
    cookie: '',
};
div = {
    getElementsByTagName: function (val) {
        if (val === 'i') {
            return {
                length: 0
            }
        }
    }
};
document.createElement = function (val) {
    if (val === 'div') {
        return div
    }
    if (val === 'form') {
        return {}
    }
    if (val === 'a') {
        return {}
    }
};
location = {
    "ancestorOrigins": {},
    "href": "http://www.fangdi.com.cn/new_house/new_house_detail.html",
    "origin": "http://www.fangdi.com.cn",
    "protocol": "http:",
    "host": "www.fangdi.com.cn",
    "hostname": "www.fangdi.com.cn",
    "port": "",
    "pathname": "/new_house/new_house_detail.html",
    "search": "",
    "hash": ""
};

环境太多了就不一一贴出来了

3、运行

使用python execjs来调用生成cookie,再请求页面看看是否能拿到正确的页面数据

image

image

可以看到已经能正常拿到页面数据了

标签:function,初体验,return,val,瑞数,--,cookie,页面
From: https://www.cnblogs.com/pigke/p/17659947.html

相关文章

  • CF1862F Magic Will Save the World
    思路假设总共耗时是\(s\)秒,那么最多可以消灭的总生命值是\(s\times(w+f)\)。所以我们可以先求出所有怪物的生命值之和\(sum\),那么,至少需要时间\(t=\lfloor\frac{sum}{w+f}\rfloor\)。然后我们可以算出用这些时间最多可以用水魔法消灭的生命值为\(w\timest\)。那么,我......
  • SpringBoot - 事务处理
    事务介绍是一组操作的集合,它是一个不可分割的工作单位,这些操作要么同时成功,要么同时失败Spring事务管理:注解:@Transactional位置:业务层的方法上、类上、接口上作用:将当前方法交给spring进行事务管理,方法执行前,开始事务。成功执行完毕,提交事务,出现异常,回滚事务引入案......
  • CF1862G The Great Equalizer
    思路对于一个数组,每次操作会缩短排序后的数组的相邻两个数的差距,所以总共会执行\(k\)次操作,其中,\(k\)为排序后的数组的相邻两个数的最大差距。因为每次操作都会对最大数加\(1\),所以答案就是\(\text{数组中的最大数}+\text{排序后的数组的相邻两个数的最大差距}\)。因为......
  • CF1423K Lonely Numbers
    思路因为对于\(\gcd(a,b)\),\(\fraca{\gcd(a,b)}\),\(\fracb{\gcd(a,b)}\)中\(a\)和\(b\)是等价的,可以交换的。所以我们先令\(a>b\)。令\(\gcd(a,b)=d\),因为\(\fraca{\gcd(a,b)}\)有除法,所以我们应该想办法去除除法,就同乘以一个\(d\),即\(d^2\),\(a\),\(b\)三条边。......
  • CF1444A Division
    思路首先特判特殊情况,若\(p_i\)本身不可被\(q_i\)整除,那么\(x_i\)就直接取\(p_i\)最大。否则的话,\(p_i=q_i\timesk\)。所以\(q\)的质因数,\(p\)都有,并且数量一定大于等于\(q\)的这个质因数的数量。那么如果\(x_i\)的某个质因数个数小于\(q_i\)的话,\(x_i\)就......
  • P9578「Cfz Round 1」Permutation
    思路我们需要尽量让相邻两个数的和的最大值减最小值最小。先思考如何让最大值最小。对于\(n\),两侧最小也必须要放\(1\)和\(2\)。所以最大值至少也是\(n+2\)。同时,我们再思考\(1\)周围能摆什么,因为不能让最小值太小,我们需要放比较大的,也就是\(n\)和\(n-1\)。这样来......
  • 基于QT和C++实现的停车场管理系统
    基于QT和C++实现的停车场管理系统停车场管理系统简介一、 问题描述设停车场是一个可停放若干辆辆汽车的狭多层平面区域,且只有一个大门可供汽车进出。若车场内已停满汽车,则后来的汽车只能在门外的狭长便道上等候,一旦停车场内有车开走,则排在便道上的第一辆车即可进入。每辆停放在......
  • CF3C Tic-tac-toe
    AC后逛了逛题解,发现好像自己的代码比大佬都短很多?思路数据范围很小,先暴力求得X,0,.的个数,然后暴力求得连着的三个X,0的个数。然后,我们来分类讨论:非法的情况一定优先判断,只有不非法才可能是其他情况,那么非法的可能有:\(A\)和\(B\)都能赢。X的个数既不是0的个数......
  • B3635 硬币问题
    B3635硬币问题方法一:搜索#include<bits/stdc++.h>usingnamespacestd;intm;intdfs(intn){//求凑够n元的最小硬币数 if(n<=4&&n>=1)returnn; if(n>=5&&n<=9)returnn-4; if(n>=10&&n<=11)return12-n; ret......
  • 在Jupyter中使用AI写代码,如有神助,太惊艳了
    昨晚看到一个可以在JupyterLab中使用的AI代码辅助工具jupyter-ai,它的交互确实非常棒,可以直接聊天,也可以就笔记中的代码提问,最出彩的是生成笔记功能,还是蛮惊艳的。这里就极简介绍一下安装及用法第一步是创建环境并安装condacreate-njupyter-aipython=3.11condaactivateju......