本文的目的绝非为了盗版之用,而是很多美国亚马逊买的Kindle设备(如Kindle 4、Kindle 5)无法在中国亚马逊里注册,不能通过正常的推送渠道购买正版电子书,因此这是一个万不得已的做法,在中国亚马逊买书然后破解再传到美版(或日版)Kindle里。
需要下载的软件有: Calibre 、 DeDRM插件 、 Kindle for PC (或者 for Mac )
Calibre本身是用Qt和Python写成的,因此DeDRM插件也是Python写的。下面以Windows为例(Linux下没有Kindle客户端需要Wine有点麻烦,而Mac和Windows PC大同小异)。
准备电子书
首先安装好Calibre和Kindle for PC,打开Kindle for PC(快捷方式就叫做Kindle),用 中国亚马逊 的账号登录,进去之后简单设置一下吧(比如我改动了 内容文件夹 为 D:\Kindle )。
然后去 中国亚马逊 上买Kindle电子书,推送到Kindle for PC上(不少人是为了知乎周刊吧……)。刷新一下图书馆,确保电子书下载完毕,这时去 内容文件夹 看看吧,azw文件已经躺在那里了。
安装去除DRM保护的插件
不过这些azw文件是带有DRM保护的,你直接传到Kindle里是打不开的(如果Amazon能解决这个DRM的这个问题也算是一大进步啊),这个时候就需要Calibre和DeDRM插件了。需要说明的是Calibre本身是不支持去除DRM的,官方插件仓库里也没有这个插件。在DeDRM的 releases 里下载最新的zip包,解压,在dedrm-ebook-tools-6.0.4\DeDRM_calibre_plugin下有一个英文说明txt文档,还有一个就是插件包DeDRM_plugin.zip!
打开Calibre,点击首选项(或者快捷键Ctrl+P),点击高级选项下的插件,点击“从文件加载插件”,选择DeDRM_plugin.zip,接下来会有一些安全警告什么的,一路下一步忽视警告。 你可能需要重新启动Calibre使其生效。
把Kindle for PC下载的那些azw文件添加到Calibre即可(直接拖进去吧),DeDRM插件会自动去除azw文件的DRM保护并转换成原始格式(azw3或者mobi、prc等)。神马?不会用Calibre传书到Kindle?连接USB会不会,点击鼠标会不会?
请勿通过此法传播盗版书籍!支持正版,人人有责。
也希望有关部门能放宽文化管制,希望能看到Amazon.cn和Amazon.com账户数据互通的那一天(我的中国梦……>_<#)。
‘book_producer’: None,‘change_justification’: u’original’,
‘chapter’: u”//*[((name()=’h1′ or name()=’h2′) and re:test(., ‘\\s*((chapter|book|section|part)\\s+)|((prolog|prologue|epilogue)(\\s+|$))’, ‘i’)) or @class = ‘chapter’]”,
‘chapter_mark’: u’pagebreak’,
‘comments’: None,
‘cover’: u’/var/folders/lm/n7y3xd153qn79pv6tj_6wsph0000gn/T/calibre_1.47.0_tmp_Fln6Dq/siiOzR.jpeg’,
‘debug_pipeline’: None,
‘dehyphenate’: True,
‘delete_blank_paragraphs’: True,
‘disable_font_rescaling’: False,
‘dont_compress’: False,
‘duplicate_links_in_toc’: False,
’embed_all_fonts’: False,
’embed_font_family’: None,
‘enable_heuristics’: False,
‘expand_css’: False,
‘extra_css’: None,
‘extract_to’: None,
‘filter_css’: u”,
‘fix_indents’: True,
‘font_size_mapping’: None,
‘format_scene_breaks’: True,
‘html_unwrap_factor’: 0.4,
‘input_encoding’: None,
‘input_profile’: ,
‘insert_blank_line’: False,
‘insert_blank_line_size’: 0.5,
‘insert_metadata’: False,
‘isbn’: None,
‘italicize_common_cases’: True,
‘keep_ligatures’: False,
‘language’: None,
‘level1_toc’: None,
‘level2_toc’: None,
‘level3_toc’: None,
‘line_height’: 0.0,
‘linearize_tables’: False,
‘margin_bottom’: 5.0,
‘margin_left’: 5.0,
‘margin_right’: 5.0,
‘margin_top’: 5.0,
‘markup_chapter_headings’: True,
‘max_toc_links’: 50,
‘minimum_line_height’: 120.0,
‘mobi_file_type’: u’old’,
‘mobi_ignore_margins’: False,
‘mobi_keep_original_images’: False,
‘mobi_toc_at_start’: False,
‘no_chapters_in_toc’: False,
‘no_inline_navbars’: True,
‘no_inline_toc’: False,
‘output_profile’: ,
‘page_breaks_before’: u”//*[name()=’h1′ or name()=’h2′]”,
‘personal_doc’: u'[PDOC]’,
‘prefer_author_sort’: False,
‘prefer_metadata_cover’: False,
‘pretty_print’: False,
‘pubdate’: None,
‘publisher’: None,
‘rating’: None,
‘read_metadata_from_opf’: u’/var/folders/lm/n7y3xd153qn79pv6tj_6wsph0000gn/T/calibre_1.47.0_tmp_Fln6Dq/4SmU2L.opf’,
‘remove_fake_margins’: True,
‘remove_first_image’: False,
‘remove_paragraph_spacing’: False,
‘remove_paragraph_spacing_indent_size’: 1.5,
‘renumber_headings’: True,
‘replace_scene_breaks’: u”,
‘search_replace’: ‘[]’,
‘series’: None,
‘series_index’: None,
‘share_not_sync’: False,
‘smarten_punctuation’: False,
‘sr1_replace’: None,
‘sr1_search’: None,
‘sr2_replace’: None,
‘sr2_search’: None,
‘sr3_replace’: None,
‘sr3_search’: None,
‘start_reading_at’: None,
‘subset_embedded_fonts’: False,
‘tags’: None,
‘timestamp’: None,
‘title’: None,
‘title_sort’: None,
‘toc_filter’: None,
‘toc_threshold’: 6,
‘toc_title’: None,
‘unsmarten_punctuation’: False,
‘unwrap_lines’: True,
‘use_auto_toc’: False,
‘verbose’: 2}
Python function terminated unexpectedly: ‘utf8’ codec can’t decode bytes in position 22557-22558: invalid continuation byte
InputFormatPlugin: MOBI Input running
on /var/folders/lm/n7y3xd153qn79pv6tj_6wsph0000gn/T/calibre_1.47.0_tmp_Fln6Dq/0IYlpm.azw3
Found KF8 MOBI of type ‘standalone’
Extracting text…
The div table for SKEL0000000001 has incorrect insert positions. Calculating manually.
The div table for SKEL0000000002 has incorrect insert positions. Calculating manually.
The div table for SKEL0000000003 has incorrect insert positions. Calculating manually.
The div table for SKEL0000000004 has incorrect insert positions. Calculating manually.
The div table for SKEL0000000005 has incorrect insert positions. Calculating manually.
Traceback (most recent call last):
File “/Applications/calibre.app/Contents/Resources/Python/lib/python2.7/site.py”, line 208, in main
return run_entry_point()
File “/Applications/calibre.app/Contents/Resources/Python/lib/python2.7/site.py”, line 114, in run_entry_point
return getattr(pmod, func)()
File “site-packages/calibre/utils/ipc/worker.py”, line 195, in main
File “site-packages/calibre/gui2/convert/gui_conversion.py”, line 31, in gui_convert_override
File “site-packages/calibre/gui2/convert/gui_conversion.py”, line 25, in gui_convert
File “site-packages/calibre/ebooks/conversion/plumber.py”, line 1040, in run
File “site-packages/calibre/customize/conversion.py”, line 241, in __call__
File “site-packages/calibre/ebooks/conversion/plugins/mobi_input.py”, line 43, in convert
File “site-packages/calibre/ebooks/mobi/reader/mobi8.py”, line 103, in __call__
File “site-packages/calibre/ebooks/mobi/reader/mobi8.py”, line 449, in expand_text
File “site-packages/calibre/ebooks/mobi/reader/markup.py”, line 311, in expand_mobi8_markup
File “site-packages/calibre/ebooks/mobi/reader/markup.py”, line 52, in update_internal_links
File “lib/python2.7/encodings/utf_8.py”, line 16, in decode
UnicodeDecodeError: ‘utf8’ codec can’t decode bytes in position 22557-22558: invalid continuation byte