维普期刊反爬 — RS6瑞数逆向工程

14 节点 · 15 关系 · 5 分层 · 4 导览步骤

导览
分层
流程
统计

1. 🎯 起点:Python调度中心

fetch_page.py是统一入口。main()→get_cookies()→subprocess调用Node.js→fetch_page()带Cookie请求→保存结果。理解这个调用链就理解了整个数据流。

2. 🔐 核心难点:RS6 412挑战→Cookie生成

RS6(瑞数6)首次请求必然返回412+$_ts JS挑战。226KB VM字节码需要完整浏览器环境(document.all、canvas.toDataURL等)才能执行。sdenv通过jsdom+环境补丁+VM执行自动完成:412→Cookie→200。

3. 🔧 sdenv集成方案

sdenv=jsdom模拟+环境补丁+VM执行的三合一方案。jsdomFromUrl自动处理完整412挑战流程。需要Node.js v20.19.5+和VS2022 Build Tools编译C++模块(canvas等)。这是路径B(环境伪装)的典型应用。

4. 📊 数据流:Python→Node.js→Python闭环

Python subprocess启动Node.js→sdenv处理412生成Cookie→stdout输出→Python解析Cookie→requests.get带Cookie请求→200真实页面→保存data/。完整闭环,全程无浏览器。

Python调度层

Python请求调度、Cookie解析、HTML保存

fetch_page.…get_cookies…fetch_page(…

Node.js sdenv层

sdenv环境伪装、RS6 VM执行、Cookie生成

sdenv_rs6.j…initSdenv()…httpGet(coo…

反爬防护层

RS6瑞数6动态防护机制分析

RS6瑞数反爬防护sdenv环境伪装sdenv npm包

业务流程层

端到端数据获取流程

RS6 412挑战→C…端到端数据获取流程

文档与产出层

任务规格书、配置证据、爬取结果

task_cqvip_…web_config/…data/ — 产出数据

RS6 412挑战→Cookie生成流程

1.Python调用Node.js sdenv → 2.jsdomFromUrl访问目标URL → 3.服务器返回412+$_ts JS挑战 → 4.jsdom加载外部226KB VM JS → 5.VM执行$_ts.nsd+$_ts.cd → 6.生成合法Cookie(S+T对) → 7.cookieJar.getCookieStringSync提取 → 8.stdout输出给Python

入口: subprocess.run(['node', 'sdenv_rs6.js']) · cli

端到端数据获取流程

1.Python main()→get_cookies()→2.subprocess启动Node.js→3.sdenv处理412→4.stdout输出Cookie→5.Python fetch_page()解析Cookie→6.requests.get带Cookie→7.检查200+body>500→8.保存data/journal_guid.html

入口: main() in fetch_page.py · cli
14
节点
15
关系
5
分层
4
导览

节点类型分布

module5
function4
file2
flow2
document1

项目信息

语言: Python, JavaScript, Node.js
框架: sdenv, jsdom, requests, 瑞数RS6
逆向qikan.cqvip.com的RS6(瑞数6)反爬保护。核心难点:$_ts VM字节码执行、412 JS挑战、S+T Cookie对生成、sdenv环境伪装。架构:Python调度 + Node.js(sdenv)生成Cookie → Python带Cookie请求 → 200真实页面。