邮箱:stronghorse@tom.com
主页:http://stronghorse.yeah.net
版本:1.01
初始发布日期:2005.08.29
最后更新日期:2005.09.28
目录
一、前言
二、从E书或网页中获取文件的一般步骤
三、从E书或网页中获取链接进来的css文件
四、从E书或网页中获取链接进来的js文件
五、从E书或网页中获取Flash文件
六、从E书或网页中获取背景音乐文件
七、从E书中获取图像文件
八、进入frame页面
九、其它问题
一、前言
最近我又听到有人抱怨用miniKillEBook反编译电子书,只能得到HTML网页,得不到E书中的js、css、Flash、背景音乐等文件。其实只要各位对JavaScript代码有所了解,就算只用已经公开发布的CtrlN,要得到E书中的这些文件也不是很难。
事先声明:
1、下面所有方法均基于JavaScript,因此可能会给人绕圈子的感觉,效果也无法与直接调用IE非公开接口的IECracker、KillEBook相比。不过这样正好平衡:对于有意通过反编译学习他人做书经验的好学者,用JavaScript本身就是一个练手的过程,而这种方法又很难用于批量反编译,因此做书的人也不必产生过多的担忧。杀鸡取蛋的事俺是不做的,哈哈……
2、为了便于使用,下面给出的JavaScript写得都很傻瓜,所有URL分析工作都交给代码完成,各位只要会按Ctrl+C、Ctrl+V键就好。但是自动化操作毕竟有其极限,对于大多数网页来说用这些代码应该可以搞定,但是如果碰到搞不定的网页,还是要靠人工对HTML代码进行分析。在分析时如果碰到加密网页,可以用CtrlN的“HTML片段”功能,对加密HTML进行解码。在源代码中查找链接时,可以用搜索功能快速定位。
3、现在基于IE内核的电子书基本上通过自定义协议插件实现,对JavaScript协议插件的支持程度不一,因此如果代码在某些电子书上出现错误,请不必奇怪。
4、除了用于反编译E书,这些代码在平时浏览正常网页时也有用,如用来抓网页中的Falsh文件。
5、所有代码均在Windows XP SP2下测试通过,其它环境我没试,不过估计IE版本不能低于6.0。
6、所有代码均为我的原创,个人可以免费使用,网站转载、商业牟利请先获得我的授权。
二、从E书或网页中获取文件的一般步骤
从E书或普通网页中获取各种文件的步骤基本相同,只是需要输入的JavaScript代码不同:
启动CtrlN。这是为了防止电子书或网页禁用快捷键。如果你确认快捷键没有被禁,可以省略这一步,在第3步直接按Ctrl+N键。 打开电子书或IE,进入引用了需要抓取的css、js、Flash等文件的页面。注意这里必须是真正的页面,不能是frame。后面会谈到如何判断frame及如何进入frame页面。 将CtrlN的“快捷键行为”设置为“弹出新窗口”,然后用鼠标在欲抓取的网页上点一下,再按下Ctrl+N键,弹出新的IE窗口,里面显示的内容与欲抓取的页面内容相同,地址栏上显示有页面的URL。 在弹出的IE窗口中,根据需要将对应的JavaScript代码(后面会给出)复制、粘贴到地址栏上,然后按回车键即可。对于IE 6,第一次运行JavaScript代码可能会在地址栏下弹出一个黄条,提示这段代码被阻止运行,点一下黄条,选择“允许阻止的内容”,然后再重复步骤3、4,即可看到结果。
三、从E书或网页中获取链接进来的css文件
JavaScript本身提供了获取外部css文件内容的接口,因此在前述一般步骤的步骤4中,将下面内容复制、粘贴到IE地址栏上,然后按回车键即可看到内容:
javascript:str='';c=document.styleSheets;for(i=0;i
n';};document.write(str);
如果当前HTML页面没有链接到外部css文件,则步骤4完成后无反应或显示一个空页,这时可以检查一下页面的HTML源代码进行确认。如果当前页面链接了多个css文件,所有css文件内容都会显示出来,格式经过IE排版后可能和原始css代码不同,但是效果绝对相同。如果只显示出css文件的文件名,下面无内容,则说明E书没有把这个css打包进去。
对于某些电子书,也可以试试下面这段代码:
javascript:str='
n';c=document.styleSheets;for(i=0;i
n';};str+='';document.write(str);
这段代码自动对网页进行检查,如果网页中嵌入了css文件,则自动显示出css文件的下载链接,否则显示一个空页或无反应。在链接上点鼠标右键再寻目标另存为”菜单,即可将文件保存到硬盘上。如果不能保存,可将js文件的URL复制到地址栏上,然后按回车试试。不过如果注册表项HKEY_CLASSES_ROOTCSSfileshell下面有open、edit等子项,则获得的css代码会直接在open或edit子项指定的程序中打开而不是提示存盘。这种方法的适用范围远远不如前面直接显示的方法,不是所有电子书都能用的,但只要能用,得到的绝对是原汁原味的css代码。
四、从E书或网页中获取链接进来的js文件
JavaScript没有提供获取js文件内容的接口,因此首先要对注册表进行改造:运行regedit,定位到HKEY_CLASSES_ROOT.js,在它下面增加两个字符串类型的值:
Content Type=application/x-javascript
PerceivedType=text
如果修改的时候不放心,可以参考HKEY_CLASSES_ROOT.css的缺省设置,它们只是Content Type的值不同。注册表改造是一次性的工作,改完就不用再动。
在改造完成后,用CtrlN抓取js文件的步骤与前述一般步骤相同,在步骤4中,将下面内容复制、粘贴到地址栏上,然后按回车键即可看到内容:
javascript:str='
n';c=document.scripts;for(i=0;i
n';};str+='';document.write(str);
这段代码自动对网页进行检查,如果网页中嵌入了js文件,则自动显示出js文件的下载链接,否则显示一个空页或无反应。在链接上点鼠标右键再寻目标另存为”菜单,或直接点链接;即可将文件保存到硬盘上。如果不能保存,请先确认是否已经按照上面说的方法对注册表进行过设置;如果还不行,可以将js文件的URL复制到地址栏上,然后按回车试试。
比较怪异的是用eBook Workshop做的E书(页面URL以ada99:开头),在地址栏上敲入js文件的URL然后回车,会直接显示出js文件内容及其执行结果,需要点“查看->源文件”菜单才可以获得原始js文件代码。不过这种书一般都用unEbookWorkshop反编译了吧?
五、从E书或网页中获取Flash文件
对于Flash这种嵌入对象的文件,直接下载就可以,因此在前述一般步骤的步骤4中,将下面内容复制、粘贴到地址栏上,然后按回车键即可看到内容:
javascript:str='
n';c=document.all;for(i=0;i
n';};str+='