Loading

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

一、前言

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

二、瑞数介绍

瑞数有不同的版本,这次尝试的是瑞数的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

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

posted @ 2023-08-27 10:33  流星Studio  阅读(1602)  评论(11编辑  收藏  举报