瑞树6代流程分析

声明

本文章中所有内容仅供学习交流,相关链接做了脱敏处理,若有侵权,请联系我立即删除!


aHR0cHM6Ly93d3cuZmFuZ2RpLmNvbS5jbi9vbGRfaG91c2Uvb2xkX2hvdXNlX2xpc3RfZGV0YWlsMi5odG1sP2lkPWI5YjhmMjVkNjM2ODRiYjM

流程分析

第一次访问

第一次访问返回412,然后获取到这个content值,ts代码以及外链js

第二次访问

接着就是补环境拿到加密cookie值。取请求同一个接口

其中

  • UA1L1zGonajvO是第一次请求412时候返回cookie值,然后补环境也需要用到。
  • UA1L1zGonajvP就是补环境得到值

这里返回了新contentts代码以及外链js

通过这里再去执行加密逻辑得到cookie再去请求数据接口,就可以拿到数据

第三次访问

当然这里我们知道它包含了后缀值XJlCTRRM

通过重写XMLHttpRequest.prototype.open方法就可以看到后缀值

javascript 复制代码
let requ_param 
XMLHttpRequest  = function(){};
XMLHttpRequest.prototype.open = function(method, url, args){
    console.log("XMLHttpRequest open method:", method, url);
    requ_param = url;
    return {}
};

function get_curr(_url){
    const urls = new URL(_url);
    const pathname = urls.pathname;
    const search = urls.search;
    const path = pathname + search;
    const g = new XMLHttpRequest();
    g.open('POST', path, true);
    return "result:" + requ_param;
}
// const final_param = get_curr('https://www.fangdi.com.cn/oldhouse/selectOldHouseInfo3.action');
const final_param = get_curr('https://www.fangdi.com.cn/oldhouse/searchContactInfo.action');

这样就可以得到后缀值。

这里请求时候

  • UA1L1zGonajvO依旧是第一次返回
  • UA1L1zGonajvP第二次请求返回新数据通过加密得到

必坑:

  • 瑞数6对后缀的校验规则:"要么不携带,只要携带了就必须有效",无效后缀直接返回400;
  • 若"无后缀200、带后缀400",大概率是环境问题;
  • 若"无后缀和带后缀都400",说明瑞数开启强校验,需补更复杂的环境(如canvas指纹、webgl信息等),后续案例补充。

通过上面方法拿到后缀之后请求数据接口返回400,不携带后缀返回200,那么就是补环境有问题。看看location里面包含链接值,改为对应数据可用。

有的时候没有强校验后缀就可以试着不携带后缀请求,依旧能拿到数据

相关推荐
好运的阿财2 小时前
大模型热切换功能完整实现指南
人工智能·python·程序人生·开源·ai编程
军军君012 小时前
Three.js基础功能学习十四:智能黑板实现实例一
前端·javascript·css·typescript·前端框架·threejs·智能黑板
爱码小白2 小时前
数据库多表命名的通用规范
数据库·python·mysql
xiaotao1312 小时前
JS new 操作符完整执行过程
开发语言·前端·javascript·原型模式
大喵桑丶2 小时前
ZABBIX7二次开发AI监控数据调取杂记
大数据·人工智能·python
吴声子夜歌2 小时前
ES6——数组的扩展详解
前端·javascript·es6
WangJunXiang62 小时前
Python网络编程
开发语言·网络·python
guhy fighting2 小时前
new Map,Array.from,Object.entries的作用以及使用方法
开发语言·前端·javascript
_下雨天.2 小时前
Python 网络编程
开发语言·网络·python