某版本瑞数解决方案-爬虫
某版本瑞数解决方案-爬虫
- 前言
- 工具
- 分析过程
- JS获取
- js代码分析
- 附代码
前言
本次采集的目标站点是江苏省农村产权交易信息平台
,网址http://www.jsnc.gov.cn/jygg/tzgg/index.html
。没想到这么小的网站都上瑞数了,爬虫真是越来越难了。回归正题,该网站的防御机制是在cookie
上做了手脚,cookie
名称为YwnBCHQI8xgWI5a
。
工具
Chrome
浏览器(方便调试)Node.js
开发环境(JS代码运行)Python
开发环境VSCode
(代码阅读)
分析过程
JS获取
这段代码就是获取产生cookie的代码了,进去打断点调试,发现我还是想的太简单了,每次请求这个代码链接。代码都是动态的,打的断点都乱掉了。通过反复观察,代码内容都是一样的,只不过就是打乱了顺序而已。不像高级的版本,比如托福
这个网站,版本比较高级。既然打乱了顺序,咱们就把代码复制下来自己搭建一个web服务慢慢调试。
- 这里使用了
python -m http.server
这个功能,只要当前目录下有index.html
文件即可,自己复制index.html
以及a6a1a7
js文件,需要修改index.html
中js文件的路径。
js代码分析
- 该代码开始首先会将一些方法,对象进行混淆。
var _$lz;var _$lE = window;var _$ks = {};var _$lf = Math;var _$bV = Math.ceil;var _$go = String;var _$kx = _$go.fromCharCode;var _$lD = document;var _$ac = location;var _$lp = _$lE.Array;var _$cB = eval
- 定位到
cookie
生成的函数
function _$kP() {if (_$jb - _$la() < 0) {return _$kN;}// cookie名称 YwnBCHQI8xgWI5avar _$a7 = _$gT();// kvar _$dh = _$ks._$gc();var _$iC = _$ai();var _$gi = _$h1();// 该方法会验证当前浏览器环境。以及计算出浏览器的唯一指纹var _$c1 = _$aU();// 拿着计算出来的一堆参数再去计算最终cookie值 哈哈哈好绕啊。var _$hp = _$dh + _$gI(_$gi[_$ks._$h5()](_$eO(_$c1, _$iC)));// 设置cookie_$ja(_$a7, _$hp, 7, _$ks._$gN(), _$ks._$gN());// cookie 名称和值进行拼接_$kN = _$a7 + _$ks._$fP() + _$hp;return _$kN;}
- 找到入口函数就好办了,扣出来用
Node.js
执行 - 计算
cookie
中还有一个坑就是他会根据js中的 _$g0 函数返回的一堆字符串的进行计算
function _$g0() {// 其实是一些网站的信息,加密了。// 解密出来的值为 "`cookieKey:BTvo5JQ7qt6M3G1jLKRleWXwFuJvWI20fJ.j_LnK1E7`blackBlock:lpkqiYeztiqEjarN.AU.jG`refreshInterval:10`protectedSites:;http://221.226.99.21:80;http://221.226.99.22:80;http://221.226.99.23:8000;http://www.jsic.gov.cn:80;http://www.jsic.gov.cn:8000;http://www.jsnc.gov.cn:80;http://www.qunzh.com:80;`resPath:/mRnE3GFBhtb7/`tokenTimeout:1800`tokenUsedThreshold:50`switchFlags:06c"return "ujmyyuso3oaVx_5/6r6.n=)qJa:N6L5/5zT)7QrJ=u=ks+U1L?3swzOjlvkmu*vymuV-k6m6_0qLz7~8N8l2]+<b/j|op|o}r1x~o|^kvVMLjz|y~om~on;s~o}VWr~~zVKKNNMJNNRJUUJNMVTLWr~~zVKKNNMJNNRJUUJNNVTLWr~~zVKKNNMJNNRJUUJNOVTLLLWr~~zVKK___Jt}smJqy^JmxVTLWr~~zVKK___Jt}smJqy^JmxVTLLLWr~~zVKK___Jt}xmJqy^JmxVTLWr~~zVKK___J{]xbrJmywVTLWj|o}8k~rVKw:x-O/.*r~lSKj~yuox<swoy]~VMTLLj~yuox=}on<r|o}ryvnVQLj}_s~mr.vkq}VLPR";}
- 到这里算是差不多的坑都踩完了吧。最后就是调js哪里不行补哪里。
附代码
链接 https://github.com/xiaoweigege/botgate-RuiShu-Spider
有什么问题需要探讨的可以 + qq_vx: 240942649
某版本瑞数解决方案-爬虫相关推荐
- 爬虫破解瑞数js逆向动态混淆
巧用selenium破解瑞数js逆向 实战站点:湖北省生态环境厅:http://sthjt.hubei.gov.cn/site/sthjt/search.html?searchWord=%E7%A2% ...
- 爬虫漫游指南:瑞数的反调试陷阱
爬虫漫游指南 瑞数的反调试陷阱 遇上有反爬的网站,第一反应肯定是要先打开开发者工具调试一波,于是,反爬工程师们就在此处设下了第一道防线.初级一点的,例如监听F12,禁用鼠标右键,作为防线的一部分,这些 ...
- 瑞数信息的“狩猎术”
科技云报道原创. 远古时代,弱小的人类常遭猛兽攻击,为了生存人类转身成为狩猎者.面对猛兽,人类学会了制作各种狩猎武器,发展出更为高级的狩猎策略,或围猎,或驱赶,或设陷阱诱惑,将曾经威力无比的猛兽变成了 ...
- 【观察】以双引擎动态技术破局,瑞数信息再定义传统WAF市场
申耀的科技观察 读懂科技,赢取未来! 毫无疑问,今天的网络安全已进入无边界阶段,安全威胁.安全危机无处不在.但传统的安全防御手段,却始终无法跟上安全威胁发展的速度,特别是对中小企业而言,其所面临的安全 ...
- js逆向之补环境过瑞数5.0某银河证券,你还在拿某药监局做案例?该换换啦.
网址: aHR0cDovL3d3dy5jaGluYXN0b2NrLmNvbS5jbi9uZXdzaXRlL2Nncy1zZXJ2aWNlcy9zdG9ja0ZpbmFuY2UvYnVzaW5lc3NB ...
- 瑞数5维普期刊js逆向
网址首页http://lib.cqvip.com/ 瑞数5跟瑞数4区别不大,检测的东西多了一点,不会补的话可以看前面的瑞数4补环境.瑞数五有几个小版本,加密入口隐藏了,正则匹配直接能找到入口.\S{4 ...
- JS逆向之补环境过瑞数详解
JS逆向之补环境过瑞数详解 "瑞数" 是逆向路上的一座大山,是许多JS逆向者绕不开的一堵围墙,也是跳槽简历上的一个亮点,我们必须得在下次跳槽前攻克它!! 好在现在网上有很多讲解瑞数 ...
- JS逆向瑞数4算法专题一
遇到无限Debugger怎么办 1.选择这个Never pause here 就可以了 或者 点击第三个 里面填上False 都是可以的 2. 使用本地替换 就可以了 3. 当我们遇到这种 异步的 就 ...
- 小试牛刀-利用AST平坦化一段瑞数代码
文章目录 前言 第一式:鬼影迷踪 第二式:森罗万象 处理逻辑 Step1-处理if...else if... Step2-补全if...else... Step3-平坦化 小结 参考文章 前言 最近一 ...
最新文章
- 计算机三维作品说明,计算机三维技术
- oracle账户锁定解决方法
- [vue] vue-loader是什么?它有什么作用?
- Android input keyevent
- 一点一点学习Ubuntu
- 拓端tecdat|R语言GGPLOT2绘制KOLMOGOROV-SMIRNOV KS检验图ECDF经验累积分布函数曲线可视化
- plusgantt的项目管理系统实战开发最全课程
- c语言单片机秒表程序,单片机秒表程序
- 2018我们讲一下百度云BAE专业引擎的使用
- shift键计算机功能,shift键功能有哪些 shift键有哪些功能【详解】
- 北漂四年,25K,程序员,我依然单身!
- Java IO流详解和常用流的使用
- python输出课程表
- android 程序题期末,Android应用开发期末考试题
- IPFS-Cluster 集群安装与验证测试
- 【论文速递】-2022-金融研究-系统性金融风险文献综述:现状、发展与展望
- 滤镜功能针的萌翻了!Snapchat为狗狗配戴眼镜
- PVE+集客AC+K2T-AP
- 消息提示类控件使用之Toast(吐司)的简单使用
- 代码坏味道之代码臃肿
热门文章
- 如何把PPT文件压缩变小
- 【解决方案】智慧国土管理靠什么?EasyCVR综合性视频监控管理系统成支撑
- 单仓库设施选址决策方法(重心法,C语言代码)
- 配色分享|梵高的薄荷绿
- Web应用程序 [/XXX_war_exploded] 注册了JDBC驱动程序 [com.mysql.cj.jdbc.Driver],但在Web应用程序停止时无法注销它。
- 神兽归笼,又是一波斗智斗勇?这款QLED电视机让你带娃更省心
- DRAM的一些电压参数VDD VDDQ VPP剖析
- 古希腊神话故事:菲勒美拉
- java.io.InvalidClassException异常解决
- springboot @Value 读取数组,List, Map等配置文件