Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

mac 指南:写给,没有 Python 经验的程序员 #76

Open
chongiscool opened this issue Jul 23, 2022 · 25 comments
Open

mac 指南:写给,没有 Python 经验的程序员 #76

chongiscool opened this issue Jul 23, 2022 · 25 comments

Comments

@chongiscool
Copy link
Contributor

chongiscool commented Jul 23, 2022

首先谢谢 大佬们的开源贡献!

基于我的环境和编程背景,我想补充下,没有 Python 经验的程序员,如何使用该开源库。

环境:macOS Catalina 10.15.7
我的编程背景:Android 开发者,使用 Java 和 Kotlin。「 Python3 学过基础语法,没用 Python3 写过项目
Kindle:我有一台 paperwhite 2

针对 README.md 的教程,自己如何在 [ 命令行 ] 的环境下,来下载电子书?

  • 第一步:clone 仓库到下载目录(~/Downloads) ;再安装依赖 cd ~/Downloads/Kindle_download_helper ; pip3 install -r requirements.txt --user
  • 第二步:打开 国内(amazon.cn)电子书所有内容(需要登录自己账户)的页面,按 F12
    • 获取 cookie :Network -> Fetch/XHR -> Refresh(Cmd + R) -> 点击任意一个 ajax -> Headers -> Request Headers -> Cookie -> 右键复制它 -> 在 Kindle_download_helper 目录中,新建 cookie_file.txt 来保存 cookie 。
    • 获取 CSRF token : Headers 右边 -> Payload -> csrfToken -> 右键复制它。
  • 第三步:下载书籍 python3 kindle.py --cn --cookie-file ./cookie_file.txt your_csrf_Token

可能的疑问:

  1. 为什么安装依赖要加--user,可能是权限的问题,于是我按照命令行输出的提示,添加的,就安装依赖成功了;
  2. 你应该始终,在 Kindle_download_helper 目录下,执行命令(python3 kindle.py ***)。
  3. cookie 保存在 Kindle_download_helper/cookie_file.txt 中,方便命令行输入 和 cookie的更新

----------------------------- 分割线 -----------------------------

受老哥(#41 )自动化的启发,如果你有 Shell 脚本的知识,也可以自行写个如下半自动化参考脚本;但前提,依然是你得准备好 cookie 和 csrf_token 。

#!/bin/bash

cd ~/Downloads 
git clone https://github.com/yihong0618/Kindle_download_helper.git
cd ~/Downloads/Kindle_download_helper 
pip3 install -r requirements.txt --user
# save cookie in ./cookie_file.txt
python3 kindle.py --cn --cookie-file ./cookie_file.txt your_csrf_Token

PS:大佬,能否考虑保留这个 issues 一段时间,也许能帮到一部分人 :)

@yihong0618
Copy link
Owner

可以,感谢。

你也可以提个 PR 在 README 中,link 是这个 issue. 也能方便到大家,我来 merge

@chongiscool
Copy link
Contributor Author

行,谢谢大佬!不过,我好久没 PR 过,我试试

@yihong0618
Copy link
Owner

@chongiscool
内置了 dedrm 你可以加上 --dedrm 实验一下。

@chongiscool
Copy link
Contributor Author

如果我没理解错的话,我试了下这条命令 python3 kindle.py --cn --dedrm --cookie ${cookie} ${csrf_Token},测试了2种情况,在 首选项设备分别是 kindle pw2 和 kindle for mac(low version),在 DERDMS 目录中得到的分别是 azw3azw 。按说应该是 mobi 格式的,对吗?

@yihong0618
Copy link
Owner

不是。就是得到这俩格式的。但你可以任意转换了。

@chongiscool
Copy link
Contributor Author

那就好极了,我再试试

@chongiscool
Copy link
Contributor Author

完美!我应该这周过来直接捡现成的用,哈哈:)azw3 和 azw 都能在 kindle for mac(low version)和 Kindle for mac(最新版),首选项 是哪个设备貌似已经不重要了。DEDRM 之后,貌似再转不转格式都不重要了。这个产品已经可以交付给国内的绝大多数用户了。

@yihong0618
Copy link
Owner

谢谢。

@xros
Copy link

xros commented Aug 11, 2022

完美!我应该这周过来直接捡现成的用,哈哈:)azw3 和 azw 都能在 kindle for mac(low version)和 Kindle for mac(最新版),首选项 是哪个设备貌似已经不重要了。DEDRM 之后,貌似再转不转格式都不重要了。这个产品已经可以交付给国内的绝大多数用户了。

请问如何DEDRM?使用的--dedrm 选项报错。** .azw3: No key found in 2 PIDs tried.** 虽然可以下载azw3格式文件,但是DEDRMS文件夹里面没有。在DOWNLOADS文件夹里面会出现一个 key.txt 文件,大致内容如下。 Key is: 5US9nrt8t3SJP56MtnS86tSr6Etdr7xxxxxxxxrE 这个key是40位的。

使用了 https://github.com/noDRM/DeDRM_tools DeDRM_tools + Calibre 5 进行解密 (版本6不支持此插件)。可是不知如何导入这个下载时生成的key。(本人没有kindle paperwhite或者fire,都是用android/ios/windows/web/mac看电子书的)

Xnip2022-08-11_20-31-41

选择kindle eink ebooks,把40位的key当作序列号输入,超过16位,失败。
选择Kindle for Android/Mac/PC 时不知如何导入key。

https://github.com/apprenticeharper/DeDRM_tools/wiki/Exactly-how-to-remove-DRM#preparing
原作者说不支持kindle android/ios。


另外,需要在本机mac上登陆一下kindle for mac让calibre提取mac上的kindle key吗?(没看明白)

@yihong0618
Copy link
Owner

完美!我应该这周过来直接捡现成的用,哈哈:)azw3 和 azw 都能在 kindle for mac(low version)和 Kindle for mac(最新版),首选项 是哪个设备貌似已经不重要了。DEDRM 之后,貌似再转不转格式都不重要了。这个产品已经可以交付给国内的绝大多数用户了。

请问如何DEDRM?使用的--dedrm 选项报错。** .azw3: No key found in 2 PIDs tried.** 虽然可以下载azw3格式文件,但是DEDRMS文件夹里面没有。在DOWNLOADS文件夹里面会出现一个 key.txt 文件,大致内容如下。 Key is: 5US9nrt8t3SJP56MtnS86tSr6Etdr7xxxxxxxxrE 这个key是40位的。

使用了 https://github.com/noDRM/DeDRM_tools DeDRM_tools + Calibre 5 进行解密 (版本6不支持此插件)。可是不知如何导入这个下载时生成的key。(本人没有kindle paperwhite或者fire,都是用android/ios/windows/web/mac看电子书的)

Xnip2022-08-11_20-31-41

选择kindle eink ebooks,把40位的key当作序列号输入,超过16位,失败。 选择Kindle for Android/Mac/PC 时不知如何导入key。

https://github.com/apprenticeharper/DeDRM_tools/wiki/Exactly-how-to-remove-DRM#preparing 原作者说不支持kindle android/ios。

另外,需要在本机mac上登陆一下kindle for mac让calibre提取mac上的kindle key吗?(没看明白)

你的默认设备是实体的 kindle 么?请问

@chongiscool
Copy link
Contributor Author

@xros 我刚刚拉取了最新的代码测试了下,下载了几本书,在DEDRMS文件夹内任意找一本(xx.azw3),通过 Kindle for mac (已退出账号)能打开和阅读,说明已经 DeDRM了。

这个工具(kindle_download_helper)现在已经集成了 DeDRM 的功能,通过添加 --dedrm 选项,所以可以忽略 DeDRM_tools + Calibre 5 这一部分;

我调用的命令是:python3 kindle.py --cn --dedrm --cookie-file {cookie} {csrfToken}

输出内容如下,我下载2本后就手动暂停了。

Amazon open their bot check will sleep 3s
Using default device serial Number: G090G105xxxxxxxxT
(1/164)downloading SAT词汇词根+联想记忆法(乱序版).azw3 4691766 bytes
SAT词汇词根+联想记忆法(乱序版).azw3 downloaded
MobiDeDrm v1.0.
Copyright © 2008-2020 The Dark Reverser, Apprentice Harper et al.
Crypto Type is: 2
File is encoded with PID UMB5xxxxxT.
Decrypting. Please wait . . . . . . . . . . . . . done
(2/164)downloading 美国学生权威历史教材_美国历史(英汉对照)(经典珍藏版)(学生版)_ For School Use (1909) (English Edition).azw3 12096672 bytes
美国学生权威历史教材_美国历史(英汉对照)(经典珍藏版)(学生版)_ For School Use (1909) (English Edition).azw3 downloaded
MobiDeDrm v1.0.
Copyright © 2008-2020 The Dark Reverser, Apprentice Harper et al.
Crypto Type is: 2
File is encoded with PID eatHxxxxx3.
Decrypting. Please wait . . . . . done
^CTraceback (most recent call last):

可以看到 Decrypting. Please wait . . . . . . . . . . . . . done 就说明,DeDRM 了一本。你可以试试,还有疑问或遇到问题,可以贴一些输出的信息,只要在复制时,去掉一些关键消息(如:cookie、csrfToken、serial Number等)即可。

@xros
Copy link

xros commented Aug 14, 2022

@yihong0618

你的默认设备是实体的 kindle 么?请问

我默认实体时kindle mac客户端,我没有实体kindle阅读器。难道必须要有kindle实体,才能下载对应的电子书文件,然后dedrm吗?

我用同样的,试过默认实体为 kindle pc以及kindle android、kindle ios都是下载的azw3文件。都一样的报错,不能dedrm。

环境

  • m1 macbook pro
  • macos 12.4
  • python3 virtual environment (from miniconda)

@xros
Copy link

xros commented Aug 14, 2022

@xros 我刚刚拉取了最新的代码测试了下,下载了几本书,在DEDRMS文件夹内任意找一本(xx.azw3),通过 Kindle for mac (已退出账号)能打开和阅读,说明已经 DeDRM了。

这个工具(kindle_download_helper)现在已经集成了 DeDRM 的功能,通过添加 --dedrm 选项,所以可以忽略 DeDRM_tools + Calibre 5 这一部分;

我调用的命令是:python3 kindle.py --cn --dedrm --cookie-file {cookie} {csrfToken}

输出内容如下,我下载2本后就手动暂停了。

Amazon open their bot check will sleep 3s
Using default device serial Number: G090G105xxxxxxxxT
(1/164)downloading SAT词汇词根+联想记忆法(乱序版).azw3 4691766 bytes
SAT词汇词根+联想记忆法(乱序版).azw3 downloaded
MobiDeDrm v1.0.
Copyright © 2008-2020 The Dark Reverser, Apprentice Harper et al.
Crypto Type is: 2
File is encoded with PID UMB5xxxxxT.
Decrypting. Please wait . . . . . . . . . . . . . done
(2/164)downloading 美国学生权威历史教材_美国历史(英汉对照)(经典珍藏版)(学生版)_ For School Use (1909) (English Edition).azw3 12096672 bytes
美国学生权威历史教材_美国历史(英汉对照)(经典珍藏版)(学生版)_ For School Use (1909) (English Edition).azw3 downloaded
MobiDeDrm v1.0.
Copyright © 2008-2020 The Dark Reverser, Apprentice Harper et al.
Crypto Type is: 2
File is encoded with PID eatHxxxxx3.
Decrypting. Please wait . . . . . done
^CTraceback (most recent call last):

可以看到 Decrypting. Please wait . . . . . . . . . . . . . done 就说明,DeDRM 了一本。你可以试试,还有疑问或遇到问题,可以贴一些输出的信息,只要在复制时,去掉一些关键消息(如:cookie、csrfToken、serial Number等)即可。

amazon上默认设置kindle for mac客户端。
试过默认实体为 kindle pc以及kindle android、kindle ios都是下载的azw3文件。都一样的报错,不能dedrm。
我没有实体kindle阅读器。
报错结果如下

(2/17)downloading 某指南.azw3 11262281 bytes
某指南.azw3 downloaded
MobiDeDrm v1.0.
Copyright © 2008-2020
Crypto Type is: 2
Dedrm failed for 某指南.azw3: No key found in 2 PIDs tried

其他所有的书籍都是如此报错,解密的时候出错。

@yihong0618
Copy link
Owner

@xros 我刚刚拉取了最新的代码测试了下,下载了几本书,在DEDRMS文件夹内任意找一本(xx.azw3),通过 Kindle for mac (已退出账号)能打开和阅读,说明已经 DeDRM了。

这个工具(kindle_download_helper)现在已经集成了 DeDRM 的功能,通过添加 --dedrm 选项,所以可以忽略 DeDRM_tools + Calibre 5 这一部分;

我调用的命令是:python3 kindle.py --cn --dedrm --cookie-file {cookie} {csrfToken}

输出内容如下,我下载2本后就手动暂停了。

Amazon open their bot check will sleep 3s

Using default device serial Number: G090G105xxxxxxxxT

(1/164)downloading SAT词汇词根+联想记忆法(乱序版).azw3 4691766 bytes

SAT词汇词根+联想记忆法(乱序版).azw3 downloaded

MobiDeDrm v1.0.

Copyright © 2008-2020 The Dark Reverser, Apprentice Harper et al.

Crypto Type is: 2

File is encoded with PID UMB5xxxxxT.

Decrypting. Please wait . . . . . . . . . . . . . done

(2/164)downloading 美国学生权威历史教材_美国历史(英汉对照)(经典珍藏版)(学生版)_ For School Use (1909) (English Edition).azw3 12096672 bytes

美国学生权威历史教材_美国历史(英汉对照)(经典珍藏版)(学生版)_ For School Use (1909) (English Edition).azw3 downloaded

MobiDeDrm v1.0.

Copyright © 2008-2020 The Dark Reverser, Apprentice Harper et al.

Crypto Type is: 2

File is encoded with PID eatHxxxxx3.

Decrypting. Please wait . . . . . done

^CTraceback (most recent call last):

可以看到 Decrypting. Please wait . . . . . . . . . . . . . done 就说明,DeDRM 了一本。你可以试试,还有疑问或遇到问题,可以贴一些输出的信息,只要在复制时,去掉一些关键消息(如:cookie、csrfToken、serial Number等)即可。

amazon上默认设置kindle for mac客户端。

试过默认实体为 kindle pc以及kindle android、kindle ios都是下载的azw3文件。都一样的报错,不能dedrm。

我没有实体kindle阅读器。

报错结果如下


(2/17)downloading 某指南.azw3 11262281 bytes

某指南.azw3 downloaded

MobiDeDrm v1.0.

Copyright © 2008-2020

Crypto Type is: 2

Dedrm failed for 某指南.azw3: No key found in 2 PIDs tried

其他所有的书籍都是如此报错,解密的时候出错。

目前不支持非 kindle 的解密,只可以下载

@xros
Copy link

xros commented Aug 14, 2022

@yihong0618

目前不支持非 kindle 的解密,只可以下载

好吧。谢谢。看来必须要有一个kindle实体阅读器才能解密了。这个应该是 https://github.com/noDRM/DeDRM_tools 需要这个加入对非kindle实体阅读器进行解密。

@chongiscool
Copy link
Contributor Author

@yihong0618
好奇一下,没有 kindle 设备,不能用此工具完全自动化 DeDRM,需要用到以前的低版本 kindle for win/mac 和 (DeDRM)[https://github.com/noDRM/DeDRM_tools] 工具配合 ?

@yihong0618
Copy link
Owner

是的

@xros
Copy link

xros commented Aug 15, 2022

现在分享一下,如何在m1 mac上下载dedrm kindle电子书,在你没有实际的kindle设备的情况下。(因为手边只有m1 mac)

走了很多弯路,但是最后一个成功了。最后没有用到此项目脚本,此项目的脚本是建立在你实际有一个kindle实体阅读器的情况下。 但还是感谢本项目作者。


简单来说

arm64 windows 11虚拟机安装kindle 1.26版本:https://keybase.pub/koumaza/Archive/kindle-for-pc-1-26-55076.exe

然后,修改注册表:

simply use regedit to add/change the "isKRFDRendererSupported" key to "false" in "HKEY_CURRENT_USER\Software\Amazon\Kindle\User Settings"). It will automatically open the Kindle app with KFX download disabled

然后,关闭kindle自动更新。重启kindle for pc,登陆,并且下载你需要的电子书。
然后,安装calibre 5 + dedrm插件 (https://github.com/noDRM/DeDRM_tools )。然后配置你的dedrm插件,选择kindle for pc自动导入key file。重启calibre 5. (arm64 windows 11运行x86的calibre 5不会报错,有内置微软x86模拟器,稳)

然后,找到你kindle上下载的电子书,后缀为 azw3文件,鼠标拖入 calibre 5,点击打开你的电子书,就会自动解密。然后,自己转换为epub文件,在任何阅读器上都可以直接阅读了。 Over。


弯路

设备型号不对,核心是需要关闭kfx文件格式。这里说的很明白。

1、m1 mac上解密失败,当然,因为目前dedrm工具只能解密非kfx格式。mac上kindle客户端都是支持kfx的,所以你需要低版本的kindle for mac
2、windows上解密失败。我用的arm64 windows 11跑在m1 mac parallels虚拟机里面。安装requirements.txt 环境时候遇到编译器问题,所以装了vs community 2022的arm64编译工具链。但是编译时候又出现缺少rust编译器的情况,又装了arm64 windows的rust编译器。然后继续安装工具链,但是在编译cryptography的时候出现openssl的错误。然后找到cryptography官网发现不支持arm64 windows,此路不通,不想自己去给cryptography重造车轮了。
3、在amd64 linux上也遇到和m1 mac一样的问题。

以上思路其实一开始就是不正确的,因为你没有解密需要的key。而本机安装kindle for pc能给你提供解密key file。或者说如果你有个kindle实体阅读器,机器码就是你解密的依据。我没有实体阅读器,只能走安装kindle for pc的思路。

有帮助的教程 https://www.cloudwards.net/remove-drm-from-kindle-books/

闲聊

自己买的书,amazon说以后不给你看了,就不给你看了,买书曾花了不少钱的。说好的电子版永久可用呢?让用户费这么大劲。

@chongiscool
Copy link
Contributor Author

Updated: 没有kindle 设备,intel-based mac(windows 思路类似) 可以参考 #22 (comment)

@jfdnet
Copy link

jfdnet commented Oct 7, 2022

以后kindle 也全面转向 epub 了。

@afonw
Copy link

afonw commented Feb 4, 2024

现在分享一下,如何在m1 mac上下载dedrm kindle电子书,在你没有实际的kindle设备的情况下。(因为手边只有m1 mac)

走了很多弯路,但是最后一个成功了。最后没有用到此项目脚本,此项目的脚本是建立在你实际有一个kindle实体阅读器的情况下。 但还是感谢本项目作者。

简单来说

arm64 windows 11虚拟机安装kindle 1.26版本:https://keybase.pub/koumaza/Archive/kindle-for-pc-1-26-55076.exe

然后,修改注册表:

simply use regedit to add/change the "isKRFDRendererSupported" key to "false" in "HKEY_CURRENT_USER\Software\Amazon\Kindle\User Settings"). It will automatically open the Kindle app with KFX download disabled

然后,关闭kindle自动更新。重启kindle for pc,登陆,并且下载你需要的电子书。 然后,安装calibre 5 + dedrm插件 (https://github.com/noDRM/DeDRM_tools )。然后配置你的dedrm插件,选择kindle for pc自动导入key file。重启calibre 5. (arm64 windows 11运行x86的calibre 5不会报错,有内置微软x86模拟器,稳)

然后,找到你kindle上下载的电子书,后缀为 azw3文件,鼠标拖入 calibre 5,点击打开你的电子书,就会自动解密。然后,自己转换为epub文件,在任何阅读器上都可以直接阅读了。 Over。

弯路

设备型号不对,核心是需要关闭kfx文件格式。这里说的很明白。

1、m1 mac上解密失败,当然,因为目前dedrm工具只能解密非kfx格式。mac上kindle客户端都是支持kfx的,所以你需要低版本的kindle for mac 2、windows上解密失败。我用的arm64 windows 11跑在m1 mac parallels虚拟机里面。安装requirements.txt 环境时候遇到编译器问题,所以装了vs community 2022的arm64编译工具链。但是编译时候又出现缺少rust编译器的情况,又装了arm64 windows的rust编译器。然后继续安装工具链,但是在编译cryptography的时候出现openssl的错误。然后找到cryptography官网发现不支持arm64 windows,此路不通,不想自己去给cryptography重造车轮了。 3、在amd64 linux上也遇到和m1 mac一样的问题。

以上思路其实一开始就是不正确的,因为你没有解密需要的key。而本机安装kindle for pc能给你提供解密key file。或者说如果你有个kindle实体阅读器,机器码就是你解密的依据。我没有实体阅读器,只能走安装kindle for pc的思路。

有帮助的教程 https://www.cloudwards.net/remove-drm-from-kindle-books/

闲聊

自己买的书,amazon说以后不给你看了,就不给你看了,买书曾花了不少钱的。说好的电子版永久可用呢?让用户费这么大劲。

废了半天劲MAC/Win都试了 搞不定404/503都报 还是用老哥办法手动搞定

@CMakey
Copy link

CMakey commented Jun 16, 2024

您好大佬,请问这样应该如何获取cookies呀?之前提到的在‘网络’里找cookies的方法似乎没有办法使用了。
image

@CMakey
Copy link

CMakey commented Jun 16, 2024

您好大佬,请问这样应该如何获取cookies呀?之前提到的在‘网络’里找cookies的方法似乎没有办法使用了。 image

safari如果没有ajax,可以停用缓存试试
image

@yihong0618
Copy link
Owner

学习了!

@TheoHLong
Copy link

按照这个终于成功了,只需要按主页改下网址就行了,太赞了

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

7 participants