CtrlN: A program to help you view the source code of HTML page in IE, or e-books based on IE kernel.

作者:马健
邮箱:stronghorse_mj@hotmail.com
主页:老马的原创空间

FAQ
使用说明
    一、软件安装/删除
    二、软件使用
附录 版本更新记录

FAQ

Q:CtrlN是什么?
A:这是一个简单的网页查看程序,在浏览网页,或基于IE内核的电子书的时候,按下指定的快捷键(缺省为Ctrl+N,可配置),即可实现下面功能中的一种:

  1. 弹出一个新的IE窗口,在其中显示与当前浏览的页面完全相同的内容,但是这个新的窗口包含IE的全部菜单,包括“另存为”、“查看源代码”等,就好像在用IE浏览普通网页的时候按下快捷键Ctrl+N一样(这个软件的名字就是从这里来的)。这个是用来对付那些没有菜单的IE窗口、电子书,或禁止了快捷键、右键菜单的网站的。如果弹出的页面没有用JSP代码禁止右键菜单,也可以用右键菜单中的“图片另存为”功能,保存页面中的图片,不过多半只能存为BMP文件,其原因我已经在《常见电子书格式及其反编译思路》一文中解释过了。
  2. 弹出一个“记事本”窗口,显示当前浏览页面的HTML源代码。这个功能经过特殊处理,比IE的“查看源代码”功能靠得住些,可以有效对付那些通过流动态生成的页面。
  3. 弹出一个“记事本”窗口,显示当前浏览页面的文本。这个功能目前IE 6还没有。在弹出的文本窗口里,你想拷贝什么都可以随便拷贝(如果剪贴板功能没有被封锁的话),也可以对内容进行编辑后存盘。
  4. 弹出一个“记事本”窗口,显示从加密网页中提取的解密后的BODY段HTML源代码,用于对付某些加密网页。

缺省情况下实现的是第一种功能,不过可以配置成实现另外几种功能。某些特殊网站或网页会对上述某项功能进行了封锁,因此如果一个功能不行(例如按下Ctrl+N后弹不出新窗口),可以再试试其它功能(如弹出文本)。

另外在软件的高级界面中,不仅可以执行所有快捷键行为,并通过选择/输入javascript代码、URL等,对电子书、网页进行操纵,或进行cookie复制。

Q:为什么要开发CtrlN?
A:我在《常见电子书格式及其反编译思路》一文中,已经对研究电子书制作工具、电子书反编译工具、电子书替代工具的必要性做出了阐述,有兴趣的可以仔细阅读这篇文章。不过考虑到电子书反编译工具实在是太敏感了,所以我并不打算公开我开发的所有工具,只公开功能相对弱一些的UnEbook和CtrlN。高级界面中的Script命令用法及含义见我写的《用JavaScript获取网页中的js、css、Flash等文件》一文。
对于确实需要从网页或电子书中获取所需内容的人来说,可以用CtrlN得到页面的内容。但是我也不太相信真的会有人用CtrlN来反编译具有多个页面的电子书,所以这个软件对电子书制作者来说应该不会构成威胁,至少不会构成很大的威胁。
郑重声明:请尊重原电子书制作人的劳动,勿将本软件用于非法目的,使用本软件的一切后果由使用者自己承担。

Q:CtrlN收费吗?
A:CtrlN是一个“友情软件”(Friendware),用户在承诺不用于商业目的,也不对文件及其附件进行任何更改的条件下,不需要为使用该软件付任何费用,最多是在小说或动漫讨论区看到我发帖子灌水时,进去捧个人场,作为友情回报,或者在年节时发个email问声好(所以叫“友情软件”)。我承诺绝不在程序中暗藏任何商业广告、木马,但不承诺为使用CtrlN的后果承担任何责任。如果您需要将它用于商业目的,或加入您的网站,请与我联系,否则保留追究一切责任的权利。

Q:CtrlN在使用上有什么限制?
A:本软件仅能用于IE或基于IE内核的浏览器、电子书,不能用于其他浏览器内核。
如果用高级界面中的“执行Script命令”功能执行脚本,只能执行javascript脚本,即脚本字符串必须以javascript开头,否则认为输入的是URL。

Q:CtrlN的功能为什么不能同时使用?
A:对于1.03版以前的版本来说,软件功能只能通过快捷键进行调用,而快捷键也是系统资源的一部分,没事不宜耗着玩,而且多个程序之间存在冲突的可能,因此我决定只用一个快捷键,但是通过“配置”对话框,可以选择按下快捷键后采取的行为。在“配置”对话框中还可以重新定义快捷键,防止与别的程序发生冲突。
从1.03版开始,所有功能在高级界面中都可以使用,不再依赖于快捷键。

Q:为什么在按下快捷键后,弹不出新的IE窗口?
A:这个问题的原因很复杂,可能是下列原因中的一种或几种:

  1. 当前的活动窗口不是IE窗口。在按下快捷键之前,最好先用鼠标左键,在需要抓取的页面上点一下,使它成为活动窗口。
  2. CtrlN使用的快捷键被后启动的程序截留了。重新定义一个快捷键吧,或者在打开电子书后再启动CtrlN。
  3. 您自己把快捷键暂停了。暂停、重新启用快捷键的方法见后面“软件使用”部分。
  4. 您想抓的页面根本就不是用IE内核显示的。
  5. 电子书对IE内核进行了接管,不允许弹出新窗口。

对于后两种情况,可以将“按下快捷键后的行为”配置成“查看源代码”或“查看文本”,再试试看。

Q:为什么在按下快捷键后,弹出的是一个空的IE窗口,地址栏上显示的是about:blank?
A:恭喜,您碰到高手了!这种电子书一般是用流来动态生成页面内容,所以页面的URL固定不变都是about:blank。可以将“按下快捷键后的行为”配置成“查看源代码”或“查看文本”,再试试看。

Q:为什么在按下快捷键后,弹不出源代码或文本窗口?
A:这个问题的原因也很复杂,可能是下列原因中的一种或几种:

  1. 当前的活动窗口不是IE窗口。在按下快捷键之前,最好先用鼠标在需要抓取的页面上点一下,使它成为活动窗口。
  2. 网页使用了frame。把鼠标光标定位到要抓取页面的左上角,但是一要在需抓取的页面内,再按下快捷键试试看。
  3. CtrlN使用的快捷键键被后启动的程序截留了。重新定义一个快捷键键吧,或者在打开电子书后再启动CtrlN。
  4. 您自己把快捷键暂停了。暂停、重新启用快捷键的方法见后面“软件使用”部分。
  5. 您想抓的页面根本就不是用IE内核显示的。这个时候CtrlN会给出提示。
  6. 您当前的运行平台不支持这个功能。这个时候CtrlN也会给出提示。

Q:如何获取E书中的js、css、flash、背景音乐等文件?
A:参见我写的《用JavaScript获取网页中的js、css、Flash等文件》一文。尤其是获取js文件,如果不按照文中说的方法对注册表进行修改,可能什么也得不到。

使用说明

一、软件安装/删除

本软件安装非常简单:创建一个目录,用WinZip将下载下来的ZIP包解压缩到该目录即可。

本软件的删除也很简单:删除从ZIP包中解压缩出来的所有文件即可。

ZIP包中包括下列文件:

  1. CtrlN.exe。这是软件的主程序。
  2. CtrlN.htm。本帮助文件。
  3. CtrlN.spt。缺省Script命令定义文件,用纯文本编辑器编辑此文件即可定制缺省Script命令的内容。缺省Script命令的含义及用法见我写的《用JavaScript获取网页中的js、css、Flash等文件》一文。

另外在程序运行过程中,如果用户选择了“配置”功能,程序会自动生成一个CtrlN.ini,用于记录配置结果。

如果您下载到的ZIP包中还包括其它文件,毫无疑问不是我放进去的,请删除。

二、软件使用

双击CtrlN.exe即可运行本程序,缺省情况下程序启动后进入普通界面,并自动缩小到任务栏。在任务栏上,用鼠标右键点击CtrlN项,在弹出的右键菜单中选“关闭”,即可退出本程序。
也可以在“配置”界面中,取消“进入普通界面”选项,启动后直接进入高级界面。

2.1 普通界面

普通界面是本软件的初始界面,以“简洁”为特色,主要操作完全靠快捷键触发,其操作对象为当前最顶层的IE窗口或IE内核窗口。

普通界面上一共有5个按钮。其中第一个按钮是快捷键启动、停止按钮。程序启动后,自动开始监视快捷键。监视到用户按下快捷键后,即按照配置采取相应的动作(缺省为“打开新窗口”)。由于快捷键具有全局性,因此在本程序中定义的快捷键,在其它程序中就不能再发挥作用。有时候为了避免这种冲突,需要暂时停止本程序的快捷键,在需要的时候再恢复。这种操作可以通过 普通界面上的第一个按钮实现:点击任务栏上的CtrlN项,显示出普通界面,如果第一个按钮是绿灯,表示快捷键正在发挥作用,点击这个按钮,使之变成红灯,即可暂停快捷键。在红灯状态下,点击此按钮可以变成绿灯,表示快捷键再次发挥作用。

如果希望重新定义快捷键、改变快捷键对应的行为、指定文件存放的文件夹、文件浏览器,可以点击普通界面上的第二个按钮,在弹出的“配置”对话框中进行配置。

普通界面上的第三个按钮是高级界面的开/关按钮。

普通界面上的第四个按钮是“帮助”按钮,点击它将弹出IE窗口,显示本文。

普通界面上的第五个按钮是“关于”按钮,点击它将弹出“关于”对话框,显示本软件的版本、作者、版权信息。

如果当前IE窗口中有Frame,则除“打开新窗口”外,其他功能均会自动周游frame结构,弹出全部页面的html源代码、文本或强制解码后的html代码。

2.2 高级界面

在普通界面中,点击中间一个按钮即可进入高级界面。在高级界面中,原普通界面中的五个按钮简化成窗口左上角的工具条,点击中间一个按钮即可返回普通界面。

高级界面与普通界面的相比,有下列改进:

  1. 可以选定需要操作的IE窗口,普通界面则自动选择当前最前一个IE窗口进行操作。
  2. 提供JavaScript执行功能,即可以像在IE地址栏中输入JavaScript命令一样执行JavaScript命令,对IE窗口中的当前文档进行操作。
  3. 跳转至指定URL。某些IE窗口或电子书界面没有地址栏,可以用此功能进行导航。
  4. Cookie复制功能。即读取指定页面的中的cookie,然后在需要的时候可以在另外一个浏览器或另外一台机器上再写入cookie,也被称为“cookie重放攻击”。

在高级界面中,在执行任何一项操作前,均需选定需要操作的IE窗口。当然如果后续操作的是同一个IE窗口,则不需要再次选择。
选定IE窗口的方法是:在右上角靶子图标上按住鼠标左键,这时光标变成靶子形状,按住鼠标左键不放,拖动鼠标至目标IE窗口,再松开鼠标左键。选定后在“当前页面URL”框中就会显示出 当前页面的URL。

选定IE窗口后,如果需要执行快捷键行为,可以在“CtrlN命令”框中选择需要的行为,然后点旁边的“执行”按钮。 这部分功能与普通界面中的功能相同,只不过不再依赖快捷键。
对于含frame的页面,除“打开新窗口”外,其他功能也均会自动周游frame结构,弹出全部页面的html源代码、文本或强制解码后的html代码。

如果需要执行Script命令 (以“javascript:”开头的字符串),可以在“Script命令”框中选择预定义的命令,或在下面的编辑框中直接输入,然后点旁边的“执行”按钮。执行结果如果不理想,可以点“返回”按钮返回原来的页面。

在“Script命令”下方的编辑框中输入URL,然后点“执行”按钮,也可以操纵电子书或IE转到特定的页面。总之,可以将这个编辑框当做是IE的地址栏,在里面输入内容然后点“执行”按钮,相当于在IE地址栏里输入内容后按回车键。所以注意所有Script命令都必须在一行内输入。 预定义的Script命令保存在CtrlN.spt文件中,用纯文本编辑器编辑此文件即可定制缺省Script命令的内容。Script命令的含义及用法见我写的《用JavaScript获取网页中的js、css、Flash等文件》一文。

高级界面中对技术要求比较高的是cookie复制功能。cookie与domain、path均有关系,因此想用好这个功能,有时候需要对cookie技术有深入了解。
抓到的cookie可以保存为.cok文件,需要的时候再调入。此文件为纯文本文件,一共四行,分别是cookie、domain、path、url。

cookie复制通常步骤为:

  1. 选定需要抓取cookie的IE页面,获取cookie。获取后可以存盘。
  2. 启动新的IE浏览器,先在地址栏中输入需要闯入的网站URL,回车,这时多半会出现错误信息,但是不要紧,要的就是让IE构造好上下文环境。
  3. 选定刚才出现错误信息的IE窗口,调入保存的cookie,写入。
  4. 重新在IE地址栏输入需要闯入的网站URL,回车,运气好的话就能进去。否则需要对domain、path等进行构造。

以新浪企业邮箱的cookie复制为例,其操作步骤为:

  1. 启动IE,用合法帐号登录mail.sina.net,进入邮箱。这时IE中就含有客户端cookie。
  2. 用CtrlN抓取上面的IE页面,得到cookie、domain、path,并保存为文件。
    domain、path、url之间的关系见cookie相关文档。通常在path为根目录(/)情况下,url仅含完整域名,不含文件夹或文件名。而domain部分仅含域名不变部分,不含易变部分。
  3. 到另外一台机器上,或在本机启动新的IE,在地址栏输入抓cookie时抓到的url(我抓到的是http://bj2.mail.sina.net/),回车,用于这时还没有cookie,也没有合法的邮箱用户名、密码,因此会进入错误提示页面。
  4. CtrlN选定上述错误页面,调入刚才保存的cookie,写入。
  5. 在刚刚写入cookie的页面,在IE地址栏上输入刚才输入的抓cookie时抓到的url,回车,这次即可进入邮箱页面。

2.3 配置

在配置界面中,可以对下列选项组进行设置:

1、快捷键及其行为

对快捷键、快捷键行为进行定义。

2、抓到的HTML或TXT文件存放到

此选项会影响结果文件的命名:如果是存放到“系统临时文件夹”则文件名是随机的,否则如果“文件命名”是“自动”则尽量从URL中获取原始文件名 ,如果是“数字”则从“起始数字”开始连续编号,号长6位。

3、HTML和文本文件浏览器

配置浏览所抓到的HTML、txt文件的浏览器。如果选择“不打开”,则静默抓取。

4、启动后

进入普通界面:选中(缺省为选中)则启动后进入普通界面,否则进入高级界面并不最小化。
启动快捷键:选中(缺省为选中)则启动后即开启快捷键,否则不开启。

附录 版本更新记录

Version 2.04
错误修正:在Win10下如果设置了高DPI,选择窗口时窗口边框显示错误。

Version 2.03
新增功能:在“配置”界面中,可以选择不打开所抓到的HTML或TXT文件。

Version 2.02
新增功能:在“配置”界面中,可以选择目标文件名的命名方式,专门对付某些动态生成的页面使用相同的URL。

Version 2.01
错误修正:ini文件不能存储Unicode字符串。

Version 2.00
新增功能:在高级界面中增加cookie读取、写入功能,实现cookie复制。
新增功能:在“配置”界面中,增加“启动后”选项组,选择启动后是否进入基本界面、是否启动快捷键。
功能增强:在“查看源代码”、“查看文本”、“HTML片段”功能中,如果需要操作的目标页面含有frame,则自动周游frame结构,弹出所有页面的源代码、文本或HTML片段。
功能增强:可以在XP SP3以上版本,包括Win7中执行Script命令,但仅限于javascript命令。 以前的版本只能在XP SP2及其以前的版本中执行。
更改英文版字体,减小占地面积。
对帮助文件进行大幅修订与补充。
取消ANSI版,改为发行Unicode版

Version 1.04
功能修正:在高级界面中,如果目标窗口含有frame,不根据鼠标光标所在位置判断实际需要操作的网页。

Version 1.03

  1. 新增功能:可以打开/隐藏的高级界面,在里面可以执行所有快捷键行为,并通过选择/输入javascript代码、URL对电子书、网页进行操纵。
  2. 新增功能:在配置界面中,可以选择用什么软件浏览抓到的HTML和TXT文件。
  3. 新增功能:在配置界面中,可以选择将抓到的HTML和TXT文件存放在哪个文件夹,并且可以指定是否在打开后即时删除抓到的文件。

Version 1.02

  1. 新增功能:“HTML片段”,能够直接从加密网页中提取解密后的BODY段HTML源代码,用于对付某些加密网页。
  2. 功能增强:能够对付某些使用隐藏frame进行认证的网页。抓取的时候,请将鼠标光标移动到靠近需抓取页面左上角的地方,但是一点要在需抓取的页面内。
  3. 错误修正:在“查看文本”功能中,指针未及时释放,造成轻微的内存泄漏。

Version 1.01

功能增强:能够处理在网页中再嵌入IE控件的情况。某些网站为了保密,在页面中嵌入一个自己写的控件,然后往这个控件传入一堆加密参数,控件自己再创建一个IE控件,显示解密后的内容。

Version 1.00

  1. 提供“打开新窗口”和“查看源代码”功能。
  2. 用户可以对快捷键及快捷键对应的行为进行配置。