维普期刊 瑞数5

2023-11-18

  • 郑重声明:本项目的所有代码和相关文章, 仅用于经验技术交流分享,禁止将相关技术应用到不正当途径,因为滥用技术产生的风险与本人无关。

加载流程

url:aHR0cDovL2xpYi5jcXZpcC5jb20vUWlrYW4vU2VhcmNoL0luZGV4P2Zyb209aW5kZXg=

简单说一下瑞数5代的加载流程,首先打开一个无痕浏览器,输入维普的url ,查看其加载过程

在这里插入图片描述

可以看到,当在一个干净的浏览器环境中第一次请求时,会首先返回一个412页面,这个412页面又加载了一个js文件,然后才返回了首页的200页面,我们可以先观察两个 Index?from=index 有什么不同

第一个Index?from=index

在这里插入图片描述

第二个Index?from=index

在这里插入图片描述

很明显,他们的不同之处在于cookie,其中GW1gelwM5YZuS是服务器返回的,而GW1gelwM5YZuT则是js代码生成的,也就是说我们必须破解GW1gelwM5YZuT的生成过程

定位cookie

定位cookie最快的方式自然是hook了,首先新开一个无痕窗口,然后打一个事件断点,输入url回车

在这里插入图片描述

断点断住后,在控制台注入以下代码

(function() {
    'use strict';
    let hookCookie = function (key) {
    'use strict';
    var cookie_str = document.cookie;
        Object.defineProperty(Document.prototype, 'cookie', {
        get: function () {
            return cookie_str;
        },
        set: function (val) {
            console.log('捕获到cookie设置-->', val);
            if (val.indexOf(key) !== -1) debugger;
            let addCookie = val.split('; ')[0]
            addCookie = addCookie.split('=')
            let cookie_object = {}
            cookie_str.split('; ').map(function (v) {
                v = v.split('=')
                cookie_object[v[0]] = v[1]
            })
            cookie_object[addCookie[0]] = addCookie[1]
            let cookie_arr = []
            for (let k in cookie_object) {
                k = k + "=" + cookie_object[k] + '; '
                cookie_arr.push(k)
            }
            cookie_str = cookie_arr.join('')
            return cookie_str
        }
    });
}
hookCookie('GW1gelwM5YZuT');
})();

断点断住后,跟栈调试

在这里插入图片描述

通过跟栈找到cookie生成位置,这是个vm文件,一般这种文件都是eval生成的

在这里插入图片描述

继续跟栈到412页面,找到eval函数,其中_$FP就是vm中的代码

在这里插入图片描述

跟到这里,我们已经知道cookie生成的大致流程了,当不携带cookie访问首页时,服务器返回一个412页面,412页面会执行了一些js代码,生成了_$FP(字符串类型的js代码),然后调用eval函数将_$FP给执行了,生成了vm文件,vm文件执行后生成了cookie。

扣代码

红色标注的位置全部都要扣下来

在这里插入图片描述

补环境

在瑞数的代码还未执行eval之前,可以使用proxy代理补,在执行eval后就不能使用proxy了,为什么不能使用了,懂的都懂,既然不能使用proxy了,那我怎么知道他检测了那些环境呢,其实很简单,就像华为牛过河的面试题的答案一样,他是直接过,我是直接调,两个字:硬刚

  • 第一步复制刚才那份412页面的所有代码,保存到本地为rs.html(记住代码不要格式化)

  • 第二步在rs.html的头部加入以下代码,这么做是为什么,大家应该懂我意思吧

    <script>
    	eval_= eval;
    	eval = function(s){
    		debugger;
    		return eval_(e)
    	}
    	eval.toString = function(){
    		return 'function eval() { [native code] }'
    	}
    	// 保持环境的一致性
    	Object.defineProperty(window,'indexedDB',{
    		ger(){
    			return underline;
    		}
    	}) 
    	......
    
    </script>
    
  • 第三步,使用fiddler本地替换,当断点断住之后,直接调试就可以了,看他检测了什么就补什么(有一些是可以不补的,这就要看你对浏览器的了解了)

  • 至于怎么调试最快最有效就是基础知识了,如果你调试技巧足够娴熟,一天就能补出所有环境,当然后续还有很多坑

  • 可以参考挽风大佬的文章

如果你自己生成的cookie有173位了,那你因该可以拿到首页的200,如果生成的cookie有279位(记得模拟load事件执行),则可以拿到搜索接口的200,记住cookie的时效性非常短,如果你想在node中生成,然后复制到python脚本中去请求是行不通的。

搜索接口后缀生成

在搜索接口有一个后缀,他其实是重写了XMLHttpRequest.prototype.open方法,只要你调用这个方法,就会自动为url加上后缀

在这里插入图片描述

如果你生成的cookie没问题的话,你可以直接用proxy代理出后缀生成的检测点

成果展示

在这里插入图片描述

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

维普期刊 瑞数5 的相关文章

  • Sequelize 关联 - 请改用 Promise 风格

    我正在尝试将 3 张桌子连接在一起Products Suppliers and Categories然后排SupplierID 13 我读过了如何在sequelize中实现多对多关联 https stackoverflow com a 25
  • 如何从左向右滑动文本和图像并具有滑动效果[关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • CONDITION CSS 区分 IE6 到 IE7

    我想声明一个不同于 ie6 和 ie7 的风格 但我的CSS条件被IE7识别为IE6 我用的是XP和explorer 7 这是我使用的代码
  • Durandal SPA 与打字稿有关的问题

    我使用 TypeScript 1 8 将我的 durandal SPA 应用程序从 VS 2012 更新到 VS 2015 它将生成 JavaScript ECMA5 我解决了所有构建错误 但我无法修复一个名为 return 语句只能在函数
  • jQuery 在附加元素后立即返回 div 元素的高度 0

    我有一个浮动 div 最初没有内容 我使用 jQuery 将一组元素附加到 div 然后立即调用原始 div 的 height 方法 我添加的元素在样式表中具有定义的最小高度 而浮动 div 则没有 问题是 当我在原始 div 上调用 he
  • Jquery:排除元素

    我有以下代码 document ready function a rel each function this qtip content text img class middle src i icon processing gif alt
  • 半流体布局 CSS/Html

    我有一个两列布局 其中右列的静态宽度为 350px 左列的宽度应填充页面的其余部分 或者至少这是我想要发生的事情 但不幸的是事实并非如此 看一下我的 css html http jsfiddle net CmJ7P http jsfiddl
  • 单击 btn 而不触发 div 单击未按预期工作

    代码沙盒 https codesandbox io s currying breeze depdc9 file package json https codesandbox io s currying breeze depdc9 file
  • 2 个 SVG 路径的交集

    我需要检查两个 SVG Path 元素是否相交 检查边界框与 getBBox 太不准确了 我目前正在做的是迭代两条路径 getTotalLength 然后检查是否有两个点 getPointAtLength 是平等的 下面是一个片段 但正如您
  • Nodejs 异步 Promise 队列

    我需要使用速率受限的 API 例如 我一秒钟只能进行 10 个 API 调用 因此我需要等待当前秒结束才能进行另一个 API 调用 为了实现这一目标 我想创建一个可以自行管理的异步队列 它的主要功能是让我向队列添加一个新的 Promise
  • 如何创建显示/隐藏 Docusaurus 项目中所有详细标签状态的按钮?

    根据讨论here https stackoverflow com questions 58579048 how to add or remove the open attribute from all details tags in a r
  • 为什么 WebView 中的 dataWithPDFInsideRect 不能在 Mavericks 上创建高质量的 PDF?

    Run 示例项目 https github com tvarghese TestWebView并观察桌面上生成的输出 PDF 名为保存网页 pdf 粘贴感兴趣的代码片段 NSURL url NSBundle mainBundle URLFo
  • 如何将类组件中的 props 发送到功能组件?

    我是 ReactJS 的初学者 需要知道如何将一个页面中的 props 值发送到另一个页面 道具位于第一页上我可以获取类组件值如何获取另一页中的值 提前致谢 墙色 jsx import React Component from react
  • Xpath 获取 if href 包含字符串的一部分

    您好 我尝试获取包含 href p random tagged see 的所有元素 这是我的路线 div preceding h2 text Most recent div div a href p tagged see 我该如何修复此代码
  • 鼠标输入时反应显示按钮

    我有一个反应组件 它包含如下方法 mouseEnter console log this is mouse enter render var album list const albums this props if albums user
  • 分配函数后如何删除 onmouseout 事件?

    我有一个问题 我正在为 onmouseout 事件分配一个函数 但运行该事件后 我需要将其删除 将非常感谢您的帮助 这取决于你的代码 如果你用 d3 这样做 那么你可以说 在 onmouseout 事件函数中 element on mous
  • 使用 NodeJS 创建 YouTube 播放列表

    我正在尝试使用 NodeJS 服务器创建 YouTube 播放列表 我已按照 Oauth 的 NodeJS 快速入门说明进行操作 如以下链接所示 https github com youtube api samples blob maste
  • 如何将函数导入到Vue组件中?

    我正在尝试将单个函数导入到我的 Vue 组件中 我为我的函数创建了一个单独的 js 文件 randomId js exports randomId gt My function 在我的 Vue 组件中 我导入了 Random js let
  • gjs 如何使用 g_data_input_stream_read_line_async 在 Gnome Shell 扩展中读取套接字流

    我正在尝试编写一个 Gnome Shell 扩展 通过 Socket 服务器与 Arduino 进行通信 服务器和 Arduino 运行良好 但我陷入了监听传入服务器消息的扩展代码 因为我需要一种非阻塞方法 所以使用异步读取行 https
  • 如何向 SvelteKit/Vite 应用添加版本号?

    我正在尝试在我的 SvelteKit 应用程序中创建一个系统 它会在某个页面上向您显示有关当前应用程序版本的信息 最好是 Git 提交哈希和描述 我尝试使用Vite的定义功能 https vitejs dev config define在构

随机推荐

  • 【突变检验方法二】MATLAB实现贝叶斯突变检测

    MATLAB实现贝叶斯突变检测 1 贝叶斯突变检测 2 原理 3 MATLAB相关代码 3 1 调用函数 3 2 案例 参考 另 其它语言实现贝叶斯突变检测 1 贝叶斯突变检测 贝叶斯突变检测属于概率突变检测方法 其特点是能给出突变点的概率
  • json数据如何存入到cookie中,如何获取

    1 引入相对应的cookie js插件如下 例如 button click function var username input name username val var password input name password val
  • scrapy爬虫爬取多网页内容

    摘要 此案例是爬取目标网站 https tipdm com 的新闻中心板块的公司新闻中所有新闻的标题 发布时间 访问量和新闻的文本内容 1 创建scrapy项目 我使用的是 Anaconda prompt 我们使用如下命令创建scrapy项
  • 视线估计、凝视目标估计相关评价指标

    1 TP TN FP FN qquad T F表示待分类目标的GT值 qquad P N表示预测到目标的正反例 在目标检测类任务中 qquad TP 表示正确检测到待检测目标
  • vcruntime140_1.dll丢失怎么办?vcruntime140_1.dll丢失最新解决方法

    如果您在使用某些软件或游戏时遇到了 vcruntime140 1 dll丢失 的错误提示 那么您需要采取一些措施来解决这个问题 以下三种解决方案都能解决vcruntime140 1 dll丢失问题 第一种解决方法 直接使用dll修复程序进行
  • C语言 mktime() gmtime()实现——亲测正确性

    前言 写此文章是因为有的嵌入式设备编程时不支持
  • node_modules安装及卸载

    1 安装 npm install 安装tb镜像 npm install g cnpm registry https registry npm taobao org 2 卸载 1 npm install rimraf g 2 rimraf n
  • Vue3 + Element-UI 搭建一个后台管理系统框架模板

    概述 本文将介绍如何基于Vue3和element ui搭建一个后台管理系统框架模板 我们将详细讲解代码流程 并提供详细的说明 技术栈 Vue3 Element ui Axios 前置知识 本文假设读者已经熟悉Vue3和Element ui的
  • Bootstrap插件(六)——警告框(alert.js)

    bootstrap中的alert和原本的alert弹框可不太一样 原来我们熟悉的弹框是在执行某个动作的时候 浏览器和我们弹出来的一个提示框 比如下面这样 而我们这里的警告框是在html内容之间的提示内容 只是他有着醒目的颜色 以此来达到提醒
  • h5标签上实现文字空格

    在vue项目中实现文字之间的空格 div class top p class groupLeader 组 xa0 xa0 xa0 长 span xxx span p p class standingGroupLeader 副组长 span
  • [YOLO专题-23]:YOLO V5 - ultralytics代码解析-网络子结构详解

    作者主页 文火冰糖的硅基工坊 文火冰糖 王文兵 的博客 文火冰糖的硅基工坊 CSDN博客 本文网址 https blog csdn net HiWangWenBing article details 122369993 目录 第1章 网络总
  • [QT编程系列-2]:C++图形用户界面编程,QT框架快速入门培训 - 1- 预备知识

    目录 概述 1 前置条件 1 1 C 1 2 图形界面 1 3 图形程序集成开发环境 1 4 图形程序开发框架 1 5 跨平台特性 1 6 QT快速感知 1 6 1 QT的典型应用 1 6 2 QT的特点 1 6 3 QT跨平台集成开发环境
  • Qt QProcess

    目录 概述 实 现 一 函数接口 二 执行命令 三 管 道 概述 本文介绍 在Linux环境下 使用Qt中的QProcess类执行shell命令并获取输出 头文件 include
  • 区块链数字签名详解

    有一点比较难以理解的答案就是 私钥加密公钥可以解密 公钥加密私钥可以解密 RSA的原理 两个大质数 p q 乘积 n 难以逆向求解 所以pq是对等的 公钥和私钥也是对等的 区块链 从数字货币到信用社会 读书笔记 这张图来自于新生大学的周兵
  • 【Vue项目实战】Vue3动画神操作!教你如何实现PPT一样的动画效果!

    文章目录 前言 一 Animate css是什么 二 安装和使用 1 安装 2 基本用法 3 JavaScript用法 三 动画制作 1 弹入动画 总结 前言 最近写界面的时候 发现一个前端组件很好玩 他就是鼎鼎大名的 Animate cs
  • 海康工业摄像头调用(linux基于python和opencv)

    1 下载官网客户端 其中包含SDK 官方网站 海康机器人 机器视觉 下载中心 安装deb文件 sudo dpkg i deb文件名 2 运行客户端 cd opt MVS bin MVS sh 如果连不上 看看是不是usb3 0的接口 3 调
  • ThinkPHP 日志信息泄露漏洞复现

    ThinkPHP 日志信息泄露漏洞复现 漏洞简介 ThinkPHP在开启DEBUG的情况下会在Runtime目录下生成日志 而且debug很多网站都没有关 ThinkPHP默认安装后 也会在Runtime目录下生成日志 THINKPHP3
  • 基于SSM 和 layui 的增删查改

    开发工具 IDEA 2021 WebStorm 2021 Mysql 8 0 开发环境 JDK 8 TomCat 8 5 81 apache maven 3 6 1 技术点 Spring SpringMVC Mybatis Mysql Ht
  • express使用简介

    框架搭建 1 安装脚手架 npm install g express generator 2 创建项目 express myapp 查看项目目录 可以知道启动文件www作用是提供http服务 express是一个全栈环境 所以有views
  • 维普期刊 瑞数5

    郑重声明 本项目的所有代码和相关文章 仅用于经验技术交流分享 禁止将相关技术应用到不正当途径 因为滥用技术产生的风险与本人无关 加载流程 url aHR0cDovL2xpYi5jcXZpcC5jb20vUWlrYW4vU2VhcmNoL0l