Kindle_download_helper icon indicating copy to clipboard operation
Kindle_download_helper copied to clipboard

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

Open chongiscool opened this issue 1 year ago • 21 comments

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

基于我的环境和编程背景,我想补充下,没有 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 一段时间,也许能帮到一部分人 :)

chongiscool avatar Jul 23 '22 02:07 chongiscool

可以,感谢。

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

yihong0618 avatar Jul 23 '22 02:07 yihong0618

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

chongiscool avatar Jul 23 '22 02:07 chongiscool

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

yihong0618 avatar Jul 27 '22 00:07 yihong0618

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

chongiscool avatar Jul 30 '22 11:07 chongiscool

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

yihong0618 avatar Jul 30 '22 11:07 yihong0618

那就好极了,我再试试

chongiscool avatar Jul 30 '22 11:07 chongiscool

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

chongiscool avatar Jul 30 '22 12:07 chongiscool

谢谢。

yihong0618 avatar Jul 30 '22 12:07 yihong0618

完美!我应该这周过来直接捡现成的用,哈哈:)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吗?(没看明白)

xros avatar Aug 11 '22 16:08 xros

完美!我应该这周过来直接捡现成的用,哈哈:)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 么?请问

yihong0618 avatar Aug 11 '22 21:08 yihong0618

@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等)即可。

chongiscool avatar Aug 12 '22 14:08 chongiscool

@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 avatar Aug 14 '22 21:08 xros

@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

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

xros avatar Aug 14 '22 21:08 xros

@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 的解密,只可以下载

yihong0618 avatar Aug 14 '22 22:08 yihong0618

@yihong0618

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

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

xros avatar Aug 14 '22 22:08 xros

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

chongiscool avatar Aug 14 '22 23:08 chongiscool

是的

yihong0618 avatar Aug 14 '22 23:08 yihong0618

现在分享一下,如何在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说以后不给你看了,就不给你看了,买书曾花了不少钱的。说好的电子版永久可用呢?让用户费这么大劲。

xros avatar Aug 15 '22 00:08 xros

Updated: 没有kindle 设备,intel-based mac(windows 思路类似) 可以参考 https://github.com/yihong0618/Kindle_download_helper/issues/22#issuecomment-1193113739

chongiscool avatar Aug 16 '22 04:08 chongiscool

以后kindle 也全面转向 epub 了。

jfdnet avatar Oct 07 '22 05:10 jfdnet

现在分享一下,如何在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都报 还是用老哥办法手动搞定

afonw avatar Feb 04 '24 15:02 afonw