用JavaScript获取网页中的js、css、Flash等文件(3)

javascript:str='<HTML><HEAD><BASE HREF="'https://www.jb51.net/;str+=document.URL;str+='"></HEAD><BODY><br>\n';c=document.all;for(i=0;i<c.length;i++){o=c[i];if(o.tagName!="BGSOUND")continue;str+='<a href="'https://www.jb51.net/;str+=o.src;str+='">'https://www.jb51.net/;str+=o.src;str+='</a><br>\n';};str+='</BODY></HTML>';document.write(str);

这段代码自动对网页进行检查,如果嵌入了背景音乐,则自动显示出背景音乐的下载链接,否则显示一个空页或无反应。在链接上点鼠标右键,选“目标另存为”,即可将文件保存到硬盘上。

注意背景音乐一般隐藏在frame中(否则一换页面音乐就被打断了),如果弹出的页面包含frame,而不是真正包含背景音乐链接的页面,就会抓不到。这时还需要按后面说的步骤进入frame中的页面。

另外有些E书为了避免单调,会一次打包进去几个midi文件,每次运行的时候随机选择一个作为背景音乐。对于这样的E书,用上面的代码只能抓到当前背景音乐。如果想抓全部,只能自己对网页源代码进行分析,组合出全部背景音乐的URL,然后在地址栏上输入生成下载链接的JavaScript代码再回车,一次下载一个。注意在下载链接上也只能点右键后选“目标另存为”,不能直接点链接。如果实在没有本事对网页源代码进行分析,只能多运行几回、多抓几回了,正所谓“落后就要挨打”。示例:已知某音乐文件的绝对URL为,则生成下载链接的代码为:
javascript:document.write('<a href="https://ebook/1.mid">右键另存为</a>');

七、从E书中获取图像文件

在前述一般步骤的步骤4中,将下面内容复制、粘贴到地址栏上,然后按回车键即可看到内容:

javascript:z=1;strUrl='';str='';function getImg(){if(strUrl!=''){str+=(z++);str+='. <IMG SRC="'https://www.jb51.net/;str+=strUrl;str+='"><br><br>\n';};};c=document.images;for(i=0;i<c.length;i++){o=c[i];strUrl=o.src;getImg();};strUrl=document.body.background;getImg();c=document.all;for(i=0;i<c.length;i++){o=c[i];if(o.tagName=='TABLE'||o.tagName=='TD'){strUrl=o.background;getImg();};if(o.tagName=='AREA'){strUrl=o.href;getImg();};};document.write(str);

上面这段代码会把网页中能够找到的图片全部顺序显示出来。如果觉得图片太多看起来不方便,或有某些小图片看不清,也可以用下面这段代码显示图片链接,点击链接才显示图片:

javascript:z=1;strUrl='';str='';function getImg(){if(strUrl!=''){str+=(z++);str+='. <a href="'https://www.jb51.net/;str+=strUrl;str+='">'https://www.jb51.net/;str+=strUrl;str+='</a><br>\n';};};c=document.images;for(i=0;i<c.length;i++){o=c[i];strUrl=o.src;getImg();};strUrl=document.body.background;getImg();c=document.all;for(i=0;i<c.length;i++){o=c[i];if(o.tagName=='TABLE'||o.tagName=='TD'){strUrl=o.background;getImg();};if(o.tagName=='AREA'){strUrl=o.href;getImg();};};document.write(str);

由于代码限制,隐藏在页面js、css代码中的图片用上面的两段代码不能抓取,这时只能自己手工对HTML代码进行分析,在地址栏上直接输入图片的绝对URL再回车,也能显示出图片。

另外由于javascript协议插件的能力限制,上面两段代码都没有剔除重复链接,所以如果用这两段代码去抓BBS页面上的图,看到一大堆相同的图片时请不要诧异。

在图片或链接显示出来后,只有极少数E书中的图片可以直接另存为原始格式,绝大多数只能获取解码成Bitmap后的图片,方法为:在图片(注意是图片,不能是链接,链接必须点进去显示出图片)上点右键,选“图片另存为”菜单,即可将图片保存成bmp文件,文件名缺省是“无标题.bmp”,需要手工改名。如果URL中指定的文件不是bmp,而是jpg、gif或png等,则还需要用ACDSee等软件将保存下来的bmp转换成要求的格式。jpg还好说,gif、png的透明色需要手工处理,动画gif干脆就不要想了。

注意:如果只是对文件进行改名,没有对文件格式进行转换,在IE中将会显示不出图片。

平时上网的时候,也可以用上面的代码抓取所浏览网页的背景图片,这个时候选“图片另存为”,一般都能保存成原始格式。

从上面的叙述可以看出,在不使用IE内部接口的情况下,抓取图片可能是最麻烦,但效果又最差的一件苦差使。记得当年我就是因此一怒之下开始咬牙分析IE内核源代码的,还好最后终于获得了回报。不知道在看了上面的说明后,会不会有人血性大发,也走上当年我那条路?嘿嘿嘿……

八、进入frame页面

上面给出的所有JavaScript代码都是针对当前页面的,也就是说,只有当前页面中真的包含音乐文件、Flash文件,才能抓到所需的文件。如果是frame,就必须进入frame中的页面,才能抓取。

检测当前页面是否是frame,最简单的办法就是按前述一般步骤进行操作,然后在步骤4中,将下面内容复制、粘贴到地址栏上,然后按回车键:

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wjjwdp.html