14 节点 · 15 关系 · 5 分层 · 4 导览步骤
fetch_page.py是统一入口。main()→get_cookies()→subprocess调用Node.js→fetch_page()带Cookie请求→保存结果。理解这个调用链就理解了整个数据流。
RS6(瑞数6)首次请求必然返回412+$_ts JS挑战。226KB VM字节码需要完整浏览器环境(document.all、canvas.toDataURL等)才能执行。sdenv通过jsdom+环境补丁+VM执行自动完成:412→Cookie→200。
sdenv=jsdom模拟+环境补丁+VM执行的三合一方案。jsdomFromUrl自动处理完整412挑战流程。需要Node.js v20.19.5+和VS2022 Build Tools编译C++模块(canvas等)。这是路径B(环境伪装)的典型应用。
Python subprocess启动Node.js→sdenv处理412生成Cookie→stdout输出→Python解析Cookie→requests.get带Cookie请求→200真实页面→保存data/。完整闭环,全程无浏览器。
Python请求调度、Cookie解析、HTML保存
fetch_page.…get_cookies…fetch_page(…sdenv环境伪装、RS6 VM执行、Cookie生成
sdenv_rs6.j…initSdenv()…httpGet(coo…RS6瑞数6动态防护机制分析
RS6瑞数反爬防护sdenv环境伪装sdenv npm包端到端数据获取流程
RS6 412挑战→C…端到端数据获取流程任务规格书、配置证据、爬取结果
task_cqvip_…web_config/…data/ — 产出数据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
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
语言: 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真实页面。