-
抓包抓得好,监狱进得早,利用Python突破有道云笔记会员功能
侵权删除
另外希望有道云笔记改改bug(关机报错的)
我还是希望文章不要被删除,破解和反破解技术是相互发展的。
本文提供分析思路,突破的技术手段,不提供软件成品,提供源码,如果有道云看到,我希望修补这个漏洞,另外修复一下bug。
复制代码
很多人学习python,不知道从何学起。
很多人学习python,掌握了基本语法过后,不知道在哪里寻找案例上手。
很多已经做案例的人,却不知道如何去学习更加高深的知识。
那么针对这三类人,我给大家提供一个好的学习平台,免费领取视频教程,电子书籍,以及课程的源代码!
QQ群:701698587
欢迎加入,一起讨论 一起学习!
复制代码
前言
之前有人向我要一篇我写的文章,我很多文章都是留在有道云笔记上的,我导出pdf, 发现需要会员,我冲了会员,然后导出了pdf。后来我想分析一下有道云笔记是如何控制是否允许 markdown 导出pdf,所以有了这篇文章。
分析
我想 pdf 来自两个地方:
网络请求返回,这种请求的时候肯定是进行了身份认证,判断用户是否已经冲了会员(cookie),才会从服务器返回pdf的数据。
本地 markdown转换,这种就只能是有道云程序里面有一个开关(是否是会员),是否允许进行转换,而这个开关的是否闭合肯定是源于一个请求的响应。
经过charles 抓包,发现当我点击导出pdf 时候,并不会请求到一个pdf数据,所以判断是第二种情况,那么关键在于我找这个关键请求,我猜测响应中具有一个关键字就是vip, 我开始在很多请求中寻找返回中具有关键字vip的关键请求,然后在其下断点。
因为我冲了会员,所以我是具有会员状态的。
但是我下完断点后发现还是具有保持vip状态,明明请求结果还没有返回,但是还是保持了我充完会员的状态,那么肯定有一个本地数据库保存了我是否是会员的状态,于是我寻找到了对应的数据库,C:\Users\wshuo\AppData\Local\YNote\Data在这个目录下:
抓包抓得好,监狱进得早,利用Python突破有道云笔记会员功能
将其全部删除,就会重新请求是否是会员的状态,(后来我发现点击同步就会刷新状态)。
终于我下断点的请求断下了,那么这时我再导出pdf, 发现不能导出,然后我一个一个放行请求,直到有一个请求放行后发现可以导出了,说明这个请求就是关键请求。
我重新注册一个无会员的有道云用户,然后手动修改charles返回请求结果,发现还是不能将其变为有会员状态,这可能我手动改的速度太慢,超时了,没办法,只能用fiddler的autoResponder来消除这种影响。果然成功了,并且我发现每次点击同步按钮的时候都会进行这个请求,这种是我想看到的,因为不能每次都要删除本地数据库,那就没有意义了。
会员功能测试
当然这里测试我都是使用无会员账号测试的。
导出pdf:
抓包抓得好,监狱进得早,利用Python突破有道云笔记会员功能
会员纸张:
抓包抓得好,监狱进得早,利用Python突破有道云笔记会员功能
会员标识:
抓包抓得好,监狱进得早,利用Python突破有道云笔记会员功能
还有一些功能没有测试,由此可以判断,普通用户和充完会员的用户唯一区别只有空间了,其它功能都具有了。
软件编写
我不能每次启动有道云都开启fiddler, 后来我想起python mitmdump可以实现修改请求返回结果,简单的脚本:
复制代码 隐藏代码
# mitmdump -s proxServer.py -p 8888 -k -q
import json
import time
tss1 = '3000-01-01'
timeArray = time.strptime(tss1, "%Y-%m-%d")
timeStamp = int(time.mktime(timeArray))*1000
def response(flow):
# print(flow.request.url)
if "http://notify3.note.youdao.com/pushserver3/client" in flow.request.url:
pass
elif "https://rpc1.note.youdao.com/ydrive/rpc/u" in flow.request.url:
data = flow.response.content
flow.response.set_content(data.decode().replace('"is_vip":false','"is_vip":true').encode())
elif "https://note.youdao.com/yws/mapi/payment?method=status" in flow.request.url:
data = json.loads(flow.response.content)
data["pt"] = ["pres", "wx_auto"]
data["end"] = timeStamp
flow.response.set_content(json.dumps(data).encode())
print("已启动会员")
在windows上设置好代{过}{滤}理127.0.0.1 8888端口就可以了,启动命令为脚本的第一行。
后续我写了python自动设置代{过}{滤}理,每次当有道云笔记启动的时候先自动设置代{过}{滤}理,当软件退出的时候再自动关闭了代{过}{滤}理和 mitmdump 服务,这里我就不放出了。
会员没有生效点击同步的时候就会生效。
出处:https://www.cnblogs.com/pythonQqun200160592/p/15293110.html
最新更新
nodejs爬虫
Python正则表达式完全指南
爬取豆瓣Top250图书数据
shp 地图文件批量添加字段
爬虫小试牛刀(爬取学校通知公告)
【python基础】函数-初识函数
【python基础】函数-返回值
HTTP请求:requests模块基础使用必知必会
Python初学者友好丨详解参数传递类型
如何有效管理爬虫流量?
2个场景实例讲解GaussDB(DWS)基表统计信息估
常用的 SQL Server 关键字及其含义
动手分析SQL Server中的事务中使用的锁
openGauss内核分析:SQL by pass & 经典执行
一招教你如何高效批量导入与更新数据
天天写SQL,这些神奇的特性你知道吗?
openGauss内核分析:执行计划生成
[IM002]Navicat ODBC驱动器管理器 未发现数据
初入Sql Server 之 存储过程的简单使用
SQL Server -- 解决存储过程传入参数作为s
关于JS定时器的整理
JS中使用Promise.all控制所有的异步请求都完
js中字符串的方法
import-local执行流程与node模块路径解析流程
检测数据类型的四种方法
js中数组的方法,32种方法
前端操作方法
数据类型
window.localStorage.setItem 和 localStorage.setIte
如何完美解决前端数字计算精度丢失与数