简单介绍:

最近做研究js混淆加密,以openlaw作为网站进行学习研究。openlaw主页裁判文书栏中有大量案件信息,同时能够为客户提供标准的法律专业知识以及智慧和经验成果。过程中遇到一些反爬措施,记录下来。需要抓取的页面如下:

发现问题:

利用chrome浏览器清除cookie模拟第一次访问,发现存在cookie:

利用Fiddler抓包解析,用户第一次访问会发送两次请求:

第一次请求返回加密的js用于生成cookie同时携带cookie发送第二次请求返回正常数据:

分析cookie构造:

s_token和_003相同,SESSION第一次请求得到服务器传到客户端的响应头Set-Cookie,所以只需要找到c_token生成方式用python模拟即可破解,感觉希望就在眼前。

破解流程:

一:新建html文件将第一次请求返回源码js格式化后复制,同时在js的最低端加上debugger并在chrome中打开

利用Console功能进行js代码解析。只有$表示的第三段代码可能和c_token有关系,得到相对应的参数:

其中$.$表示Function从而将方法中代码进行调试:

得到对cookie加密JS代码,得到c_token以及s_token生成过程:

之后通过python模拟js进行c_token的生成,和c_token完全一样,至此以为破解完毕。

可是,通过正则提取_003模拟生成c_token之后添加cookie发送请求,出乎意料的未抓到想要的数据,再次重复解析JS生成c_token过程,发现js代码生成token参数不断变化导致无法通过固定的python方式模拟生成.

二:想到通过PyV8(Python2)或者PyExecJS(Python3)来执行每次请求返回的js代码以生成cookie,添加到请求头中。至于PyV8和PyExecJS的安装和使用教程自行百度吧!博主用的PyExecJS.直接上源代码吧。

import requests
import re
import execjs
import time
from get_proxy import func_proxy
ip_list = []
header1 = {'Host': 'openlaw.cn','User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64; rv:53.0) Gecko/20100101 Firefox/53.0','Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8','Accept-Language': 'zh-CN,zh;q=0.8,en-US;q=0.5,en;q=0.3','Accept-Encoding': 'gzip, deflate','Connection': 'keep-alive','Upgrade-Insecure-Requests': '1'
}
# 代理ip
ip_list.append(func_proxy())
resp = requests.get(url='http://openlaw.cn/judgement/a66ac059bf924212a9b90f740e098060', proxies=ip_list[0],headers=header1)content = resp.text
#带有js混淆加密内容html标签
print(content)
# 第一次请求服务端返回的SESSION
session1 = resp.headers['Set-Cookie'].split("=")[1].split(';')[0]
# 生成token的必要参数,正则提取
js1 = re.findall(r'_003(\s{1})=(\s{1})(.*?);', content, re.S)[0][2]
# 主要的js混淆加密代码,正则提取
js2 = re.findall(r'\$\.\$\(\$\.\$\(\$\.\$\$\+(.*?)\)\(\)\)\(\);', content, re.S)[0]
file = "jube.js"
# 加载js文件,
ctx = execjs.get().compile(open(file, encoding='utf-8').read())
data = ctx.call('Encrypted', js2)func_js = data[213:-196]
# 执行生成c_token的方法,返回c_toke
ctx2 = execjs.compile(func_js).call('_a', eval(js1))header1 = {'Host': 'openlaw.cn','User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64; rv:53.0) Gecko/20100101 Firefox/53.0','Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8','Accept-Language': 'zh-CN,zh;q=0.8,en-US;q=0.5,en;q=0.3','Accept-Encoding': 'gzip, deflate','Cookie': 's_token=%s; c_token=%s; SESSION=%s' % (eval(js1), ctx2, session1),'Connection': 'keep-alive','Upgrade-Insecure-Requests': '1','Referer': 'http://openlaw.cn/judgement/a66ac059bf924212a9b90f740e098060'
}resp = requests.get(url='http://openlaw.cn/judgement/a66ac059bf924212a9b90f740e098060', proxies=ip_list[0],headers=header1)
print(resp.content.decode())

破解混淆加密所需要的固定js参数文件

function Encrypted(code) {$ = ~[];$ = {___: ++$,$$$$: (![] + "")[$],__$: ++$,$_$_: (![] + "")[$],_$_: ++$,$_$$: ({} + "")[$],$$_$: ($[$] + "")[$],_$$: ++$,$$$_: (!"" + "")[$],$__: ++$,$_$: ++$,$$__: ({} + "")[$],$$_: ++$,$$$: ++$,$___: ++$,$__$: ++$};$.$_ = ($.$_ = $ + "")[$.$_$] + ($._$ = $.$_[$.__$]) + ($.$$ = ($.$ + "")[$.__$]) + ((!$) + "")[$._$$] + ($.__ = $.$_[$.$$_]) + ($.$ = (!"" + "")[$.__$]) + ($._ = (!"" + "")[$._$_]) + $.$_[$.$_$] + $.__ + $._$ + $.$;$.$$ = $.$ + (!"" + "")[$._$$] + $.__ + $._ + $.$ + $.$$;$.$ = ($.___)[$.$_][$.$_];data = eval(eval(code));return data
}

openlaw网站js混淆加密实验的结果如下

参考博客:https://zhuanlan.zhihu.com/p/32344678

本博客仅用于学习研究,切勿用于商业用途

Python爬虫-JS破解openlaw加密cookie相关推荐

  1. Python爬虫JS解密详解,学会直接破解80%的网站(一)!!!

    文章目录 1.网页查看 2.有道翻译简单实现源码 3.JS解密(详解) 4.python实现JS解密后的完整代码 4.1.实现效果 5.JS解密后完整代码升级版 5.1.实现效果 CSDN独家福利降临 ...

  2. **超防 ja3+加速乐(三种加密(md5,sha1,sha256)) 实战(python爬虫js逆向)

    **超防 加速乐+ja3 实战(python爬虫js逆向) 地址 aHR0cHM6Ly93d3cuaGVmZWkuZ292LmNuL2NvbnRlbnQvY29sdW1uLzY3OTQ4MTE/cGF ...

  3. Python攻防-暴力破解ZIP加密文件的密码

    文章目录 前言 Python语法 自定义迭代器 Python多线程 Python脚本 单线程数字爆破 单线程字符爆破 多线程字典爆破 总结 前言 本文继续记录学习下 Python 的有趣应用:借助 P ...

  4. 腾讯爬虫python_【Python爬虫+js逆向】Python爬取腾讯漫画!

    前一段假期期间,博主已经自学完了Python反爬虫的相关内容,面对各大网站的反爬机制也都有了一战之力.可惜因实战经验不足,所以总体来说还是一个字--菜.前两天,在学习并实战爬取了博主最爱看的腾讯动漫后 ...

  5. python爬虫JS逆向加密破解之百度翻译

    最近在从基础学习JS逆向,来分享一下百度翻译JS逆向的整个过程,也有助于自己加深记忆. JS逆向可以说是爬虫工程师必备的知识点了,但是如果对前端知识不够了解还是学起来很有难度的. 想学习的话可以在B站 ...

  6. Python 爬虫js加密破解(四) 360云盘登录password加密

    登录链接:https://yunpan.360.cn/mindex/login 这是一个md5 加密算法,直接使用 md5加密即可实现 本文讲解的是如何抠出js,运行代码 第一部:抓包 如图 第二步: ...

  7. python爬虫之SSL、加密、破解有道词典加密算法并编写有道词典实时翻译

    1.SSL -SSL证书就是指遵守SSL安全套阶层协议的服务器数字证书(SercureSocketLayer) -美国王景公司开发 -CA(CertifacateAuthority)是数字证书认证中心 ...

  8. python爬虫js逆向加密,Web爬虫处理参数js加密、js混淆、js逆向

    中国空气质量在线监测平台(https://www.aqistudy.cn/html/city_detail.html)在众多的练习中,关闭了前台数据信息的展示,也就是说现在网页是这样的: 但我们主要学 ...

  9. python爬虫JS逆向:X咕视频密码与指纹加密分析

    前言 本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理. 作者:煌金的咸鱼 PS:如有需要Python学习资料的小伙伴可以加点击下方 ...

最新文章

  1. 自动驾驶传感器比较:激光雷达(LiDAR) vs. 雷达(RADAR)
  2. Java8 - 接口默认方法
  3. matlab学习——1.基本操作
  4. LightTools 切趾角度设置
  5. MySQL-8.0.x 新特性之索引页合并
  6. mac系统 PDO连接数据库报错处理
  7. MyBatis 实现多表查询、resultMap 标签、MyBatis 注解、mybatis运行原理
  8. 线性代数:线性系统学习笔记
  9. power bi图表_Power BI中的图表类型概述
  10. git钩子放服务器_Git代码自动化部署、Hook、钩子
  11. anaconda 导入cv2
  12. 各省GTFP绿色全要素生产率面板数据(2004-2018年)
  13. matlab 输入数据类型,Matlab数据类型及基本输入输出
  14. 《HarmonyOS开发 – 小凌派-RK2206开发笔记》第4章 串口应用开发
  15. opencv实现阈值分割算法和分水岭算法
  16. python读取文件内容并操作_Python实现的读取文件内容并写入其他文件操作示例
  17. 从事python需要掌握哪些知识和技能_转行从事Python,需要掌握什么技能?
  18. Maven与Gradle项目构建工具
  19. 【dBi、dBd和dBic的含义你真的知道吗?】
  20. win10文件夹加密_分享win10系统不使用第三方工具加密文件夹的操作方法(图文)

热门文章

  1. 从零开始建立机械臂URDF模型
  2. Fresco图片加载+EventBus+Butterknife+Retrofit+RxJava+RxAndroid
  3. c mysql 报表_c 数据库报表打印
  4. python爬虫之爬取起点中文网小说
  5. 北京将评估分时分区单双号限行 推进错时上下班 (zz)
  6. android关闭本应用的通知声音代码,关于android:当我的应用取消通知时,播放带有FLAG_INSISTENT通知的声音不会停止...
  7. Robot framework中支持360浏览器测试
  8. 「迅捷」校园网多设备认证
  9. Nginx 使用./nginx -s reload报错 [error] open() “/opt/nginx/logs/nginx.pid“ failed (2: No such file or di
  10. Python之Excel编辑-[小试牛刀]表格插入列