zoukankan      html  css  js  c++  java
  • 网页源代码禁止网页右键查看源码(源文件)

    最近研究网页源代码,稍微总结一下,以后继续补充:

        尽人皆知,要保护一个页面,最基本的就是要屏蔽右键。而当初网页上用得最多的是function click(),即下面这段代码:

    〈script〉

    function click(){

    if(event.button==2){

    alert( ’本网站欢送您 !!’);

    }

    }

    document.onmousedown=click

    〈/script〉

    但是这类屏蔽方法的破解方法也是尽人皆知的。那就是连续单击鼠标左键和右键便又可以看到右键菜单了。但是,我见过一种很好的屏蔽右键的方法。它的原理和下面所说的不同。它并非用JS来编写的脚本,而是利用定义网页属性来起到限制的作用。而且,在屏蔽中应该尽量的避开应用JS脚本。因为只要浏览者把IE里的java script脚本禁用了。那么一切屏蔽都白费。

    那么继续说那种通过修改网页属性的屏蔽右键的方法。这类方法利用了HTML里的〈body〉来作修改,它只有以下短短的一行代码:

    〈body oncontextmenu=self.event.returnvalue=false〉

    这里,定义了oncontextmenu。使得右键的值为false,起到了屏蔽右键的效果。当初,再试试看刚才的破解方法,已经不行了。左右键连击已经不能再打开右键菜单。不但是这个,再试试看其他的方法。无论你怎样的乱点,右键都没有用。因为在这个网页里,右键已经不存在了。对于一个不存在的功能键,你又能做什么呢?

    但是,屏蔽了右键还不能处理问题。如果我要复制一段文字,或是一张图片。那么,把它选中后用ctrl+C 再用 ctrl+V不就可以复制粘贴了嘛。对了,接下来要讲的,就是屏蔽左键(什么?屏蔽左键?那这个网页不就差不多废掉了?别急,没说完呢,左键只有一项功能是很讨厌的)的选定功能。

    那么,如上所说,用JS来屏蔽是没有用的,治标不治本的。那么,我们就还用网页的最基本的语言:HTML来定义吧。还是老招数,定义〈body〉。这次用的参数是:onselectstart。就是左键选定的参数。代码如下:


    〈body onselectstart="return false"〉

    这样,左键选定功能就给轻易屏蔽了。原理和下面的一样。当初,再用你的左键选择恣意内容把,已经没有用了。天然也不能ctrl + C,ctrl +V了。那么,当初我们来把这两部份合并起来。完全控制左右键!:


    〈body oncontextmenu=self.event.returnvalue=false onselectstart="return
    false"〉

    当初,左右键的问题总算是处理了吧。

    好,当初我们来看另一个问题。大家都晓得,在IE浏览器的菜单栏里的“查看”项里。有一个“查看源代码”选项。这么一来,虽然我们屏蔽了右键里的查看源代码。但是,只要用菜单栏里的查看源代码,还是可以看到源代码的。这可怎么办呢?

    我最初的设法是用框架来避开源代码的查看。也就是说,只要一个网页是嵌在框架里的,那么在菜单栏里选择查看源代码查看到的只是框架网页的源代码。一般格式如下:


    〈html〉

    〈head〉

    〈meta HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=gb2312"〉


    〈title〉本网站标题〈/title〉

    〈/head〉

    〈frameset rows="47,*" framespacing="0" border="0"
    frameborder="0"〉

    〈frame name="header" scrolling="no" noresize target="main"
    src="top.htm"〉

    〈frame name="main" src="main.htm" scrolling="auto"
    target="_self"〉

    〈noframes〉

    〈body〉

    〈p〉此网页应用了框架,但您的浏览器不支持框架。〈/p〉

    〈/body〉

    〈/noframes〉

    〈/frameset〉

    〈/html〉

    这样看起来对方是没有直接看到你的源代码了。但是,如果一个人要看你的源代码,那他八成是能看懂的。如果懂一点HTML的话,都能看出这两句是什么意思:

    〈frame name="header" scrolling="no" noresize target="main"
    src="top.htm"〉

    〈frame name="main" src="main.htm" scrolling="auto"
    target="_self"〉

    这两句的意思就是:在header(也就是网页顶部)处引用相对路径下的top.htm网页文件。而在main(也就是占领网页大部份页面的位置)处引用相对路径下的main.htm网页文件。就这两点是症结的,其他就不作解释了,大家也都懂的。而下面所讲的利用框架来隐藏源代码的方法就是将要表现页面放在main部份。而将header部份的大小设为0。但是这样一来,利用菜单栏里的查看源代码,还是能查看到框架网页的源代码。只要看到这两句,就晓得我们前面用的手法了。也就是说,只要将框架网页的名字改为目标网页,即可以用相同的方法直接看到目标网页的源代码了。如:框架网页:http://www.sina.com.cn/red.htm的源代码如上,就可以改为Http://www.sina.com.cn/main.htm。这样即可直接浏览被保护网页,屏蔽源代码的效果还是没有达到。

         那么,有些人就会想到,如果对方看不到框架网页的源代码。又何谈去直接打开被保护网页?对,这就是接下来我要讲的。如果要一个页面的菜单栏内的查看源代码得到功效。那最简略的方法就是去掉菜单栏。而这一点是可以通过弹出窗口来实现的。之所以不选用超链接打开无菜单栏窗口是因为那样会暴露目标地址,浏览者可以直接在浏览器中敲入地址,而绕过这个屏蔽的菜单栏。要应用超链接打开无菜单栏窗口,就必须在一个已遭到源代码屏蔽保证的网页中应用相干链接。

    那么,我们就看看如何利用弹出窗口来去掉菜单栏。其实,我们要做的,就是让目标网页在一个广告条中打开。这个代码几乎每个大型网站都会有的。代码如下:

    〈script〉

    〈!--

    window.open("red.htm", "red", "resizable=yes,width=500,height=300");


    --〉

    〈/script〉

    这里,在window.open后的括号里的第一个参数就是弹出窗口所表现的网页的位置,这里例子里是先对位置下的red.htm网页文件。这时运行便会谈出一个表现有red.htm的无菜单栏的窗口。好,我们的目的达到了。但是,这个窗口有一个缺陷,就是没有滚动条。因为在谈出窗口的语句:window.open里并没有关于滚动条的参数,(或是我不晓得?欢送妙手来信指出),所以这里打开的网页建议只做成网页的导航页。

    但是,用以上方法取消菜单栏,必须有一个第二方的网页来作弹出的工作。那么,这个用来弹出窗口的网页又成为了一个问题的地点。举例来说:假设,我们用一个index.htm来作弹出窗口的工作。也就是打开index.htm之后,会弹出red.htm的无菜单栏窗口。前面我们也提到了,如果晓得了一个网页的地址后,无论这个网页是否隐藏在无菜单栏之下,你都能看到它的源代码。那么,不让这个red.htm的地址暴露也就成了处理这个问题的症结。但是,只要这个index.htm被打开,就可以看到源代码。但是,不妨反过来想想,如果我们把index.htm给关起来呢?只要在浏览者没有来得及查看index.htm之前将它关闭,就能保住它的源代码了。那么,在这个index.htm里就有得做些文章了。

    那就是,添加关闭网页的代码。

    那么,我们就可以用window.close来关闭窗口。代码如下:

    〈script〉

    〈!--

    window.open();

    --〉

    〈/script〉

    那么,当初我们把两部份代码合并起来。当初,失掉的效果就是——直接有一个无菜单栏的窗口打开了。因为计算机的处理速度很快,如果我们将这两段代码紧接着写在一同,那么我们就只能看到新建的窗口。代码如下:


    〈script〉

    〈!--

    window.open("red.htm", "red", "resizable=yes,width=500,height=300");


    window.close();

    --〉

    〈/script〉

    而原来的窗口,已在我们无察觉的情况下关闭了。这样,就别说查看该网页的源代码了。这里,参加下面源代码的网页起了一个跳板的作用。但是,在这里,我们要注意几点。第一,用来做跳板的网页不应该命名为index.htm。将它换一个名字,然后把默认首页的名字改为更改过的名字。这样,是浏览者能在输入网之后便主动拜访该页。而又不致让对方晓得该页的名称。如果不这样做,就会致使对方猜测出该页的位置。如:172.0.0.0/index.htm。这样,就可以通过在浏览器中提交:View-Source:Http://172.0.0.0/index.htm就可以看到该页的源代码了。

        每日一道理
    “一年之计在于春”,十几岁的年纪,正是人生的春天,别辜负了岁月老人的厚爱与恩赐。行动起来,播种梦想吧!

         在屏蔽掉了菜单栏和工具栏之后,我们想,如果没有了最上方的窗口条该多好呢?下面我们要做的事情,有前提,就是在下面所说的在利用跳板页面打开一个无菜单栏的窗口之后。我们要做什么呢?就是让我们表现网站内容的窗口只表现内容,(是啊,网站不就是给别人浏览的吗?要浏览器和windows的那么多功能做什么呀……)只要内容,其余一概去掉。我们就可以通过一段java
    script来实现。下面这段代码就是用来定义无任何窗口特征的代码:

    〈script〉

    function open1(url){

    newwin=window.open(url,’newwindow’,’fullscreen=1’)

    newwin.resizeTo(800,600)

    newwin.moveTo(screen.width/0-800,screen.height/0-600)

    }

    〈/script〉

    其中,function open1(url)定义了超链接的写法。所以,我们在写链接的地址时,应该这样写:java script:open1(url)。比如我要打开一个无窗口特征的新浪首页就应该在文字或图片的超链接里这样写:java
    script:open1(‘http:www.sina.com.cn’)。当然,括号内也支持相对路径。最后写出来的格式应该是:

    〈script〉

    function open1(url){

    newwin=window.open(url,’newwindow’,’fullscreen=1’)

    newwin.resizeTo(800,600)

    newwin.moveTo(screen.width/0-800,screen.height/0-600)

    }

    〈/script〉

    〈body oncontextmenu=self.event.returnvalue=false onselectstart="return
    false"〉

    〈td width="100%"〉〈a href="java script:open1(’main.htm’),window.close()"〉〈img
    border="0" src="pic/blank1.gif" style="position: absolute;
    left: 556; top: 142" width="169" height="57"〉〈/a〉〈/td〉


    〈/body〉

    这样,我们就达到了打开无窗口边的网页了。并且,在这个网页中,会主动参加滚动条,这样,就不会像前面那样看不到下面的内容啦。

    最后我们要做的工作,就是把每一页,或者你以为重要的症结的页面停止加密,就OK啦。怎样对网页的源代码停止加密就不用我多说了吧?网上到处都有,可以用工具,也可以自己写一个htm文件来转换。加密软件,我推荐“Batch
    HTML Encryptor”,去google找吧。还有转换加密网页的代码如下:

    〈HTML〉〈HEAD〉〈TITLE〉网页加密解密〈/TITLE〉

    〈META http-equiv=Content-Type content="text/html; charset=gb2312"〉


    〈META content="MSHTML 6.00.2600.0" name=GENERATOR〉〈!-- 大地软件工作室--〉〈LINK


    href="style.css" rel=stylesheet〉

    〈META content="Microsoft FrontPage 4.0" name=GENERATOR〉

    〈/HEAD〉

    〈BODY bgColor=#ffffff leftMargin=0 topMargin=0 onload=initStyleElements()〉

    〈DIV

    style="LEFT: 139px; WIDTH: 106px; POSITION: absolute; TOP: 52px; HEIGHT:
    36px"〉

    〈TABLE cellSpacing=0 cellPadding=0 width=760 align=center border=0〉〈!--DWLayoutTable--〉


    〈TBODY〉

    〈TR〉

    〈TD vAlign=top align=middle width=760 height=310〉

    〈DIV align=center〉

    〈H2〉

    〈SCRIPT language=java script〉

    〈!--

    var i=0;

    var ie=(document.all)?1:0;

    var ns=(document.layers)?1:0;

    function initStyleElements() /* Styles for Buttons Init */

    {

    var c = document.pad;

    if (ie)

    {

    //c.text.style.backgroundColor="#DDDDDD";

    c.compileIt.style.backgroundColor="#C0C0A8";

    c.compileIt.style.cursor="hand";

    c.select.style.backgroundColor="#C0C0A8";

    c.select.style.cursor="hand";

    c.view.style.backgroundColor="#C0C0A8";

    c.view.style.cursor="hand";

    c.retur.style.backgroundColor="#C0C0A8";

    c.retur.style.cursor="hand";

    c.clear.style.backgroundColor="#C0C0A8";

    c.clear.style.cursor="hand";

    }

    else return;

    }

    /* Buttons Enlightment of "Compilation" panel */

    function LightOn(what)

    {

    if (ie) what.style.backgroundColor = ’#E0E0D0’;

    else return;

    }

    function FocusOn(what)

    {

    if (ie) what.style.backgroundColor = ’#EBEBEB’;

    else return;

    }

    function LightOut(what)

    {

    if (ie) what.style.backgroundColor = ’#C0C0A8’;

    else return;

    }

    function FocusOff(what)

    {

    if (ie) what.style.backgroundColor = ’#DDDDDD’;

    else return;

    }

    /* Buttons Enlightment of "Compilation" panel */

    function generate() /* Generation of "Compilation" */

    {

    code = document.pad.text.value;

    if (code)

    {

    document.pad.text.value=’Compiling...Please wait!’;

    setTimeout("compile()",1000);

    }

    else alert(’First enter something to compile and then press CompileIt’)

    }

    function compile() /* The "Compilation" */

    {

    document.pad.text.value=’’;

    compilation=escape(code);

    document.pad.text.value="〈script〉/n〈!--/ndocument.write(unescape(/""+compilation+"/"));/n//--〉/n〈//script〉";


    i++;

    if (i=1) alert("Page compiled 1 time!");

    else alert("Page compiled "+i+" times!");

    }

    function selectCode() /* Selecting "Compilation" for Copying */

    {

    if(document.pad.text.value.length〉0)

    {

    document.pad.text.focus();

    document.pad.text.select();

    }

    else alert(’Nothing for be selected!’)

    }

    function preview() /* Preview for the "Compilation" */

    {

    if(document.pad.text.value.length〉0)

    {

    pr=window.open("","Preview","scrollbars=1,menubar=1,status=1,width=700,height=320,left=50,top=110");


    pr.document.write(document.pad.text.value);

    }

    else alert(’Nothing for be previewed!’)

    }

    function uncompile() /* Decompiling a "Compilation" */

    {

    if (document.pad.text.value.length〉0)

    {

    source=unescape(document.pad.text.value);

    document.pad.text.value=""+source+"";

    }

    else alert(’You need compiled code to uncompile it!’)

    }

    // --〉

    〈/SCRIPT〉

    〈BR〉〈B〉〈FONT color=#333333〉网页HTML源代码加密解密器〈/FONT〉〈/B〉〈/H2〉〈/DIV〉

    〈TABLE cellSpacing=0 borderColorDark=#000000 cellPadding=10 width=750

    align=center borderColorLight=#ffffff border=2〉

    〈TBODY〉

    〈TR〉

    〈TD〉

    〈DIV align=center〉〈BR〉将你的源代码贴到编辑区域即可〈BR〉〈BR〉

    〈TABLE cellSpacing=0 cellPadding=0 width="100%" border=0〉

    〈TBODY〉

    〈TR〉

    〈TD width="100%"〉〈!-- Compilation Panel --〉

    〈FORM name=pad method=post align="center"〉

    〈DIV align=center〉〈TEXTAREA style="WIDTH: 95%; BACKGROUND-COLOR: #ebebeb"
    name=text rows=11 cols=58〉〈/TEXTAREA〉

    〈BR〉〈BR〉〈BR〉〈INPUT onmouseover=LightOn(this) onclick=generate() onmouseout=LightOut(this)
    type=button value=加密 name=compileIt〉

    〈INPUT onmouseover=LightOn(this) onclick=selectCode() onmouseout=LightOut(this)
    type=button value=全选 name=select〉

    〈INPUT onmouseover=LightOn(this) onclick=preview() onmouseout=LightOut(this)
    type=button value=预览 name=view〉

    〈INPUT onmouseover=LightOn(this) onclick=uncompile() onmouseout=LightOut(this)
    type=button value=解密 name=retur〉

    〈INPUT onmouseover=LightOn(this) onmouseout=LightOut(this) type=reset value=清除
    name=clear〉

    〈/DIV〉〈/FORM〉〈!-- Compilation Panel --〉〈/TD〉〈/TR〉〈/TBODY〉〈/TABLE〉〈/DIV〉〈/TD〉〈/TR〉〈/TBODY〉〈/TABLE〉


    〈DIV align=center〉〈BR〉〈/DIV〉

    〈DIV align=center〉〈/DIV〉 〈/TD〉〈/TR〉〈/TBODY〉〈/TABLE〉

    〈/DIV〉

    〈DIV〉〈/DIV〉〈/BODY〉〈/HTML〉

         总结一下……按我的思绪,屏蔽网页源代码主要分为以下几个步调:

    1. 做一个网页跳板,弹出要保护的广告条状页面,并将自身关闭,以避免泄漏需保护网页的地址。

    2. 由于上述条件屏蔽了广告条内网页的源代码,所以可以用这个网页作为欢送页。

    3. 在欢送页中,利用java script以超连接的情势来打开无窗口边的新窗口表现网站内容。

    4. 对每个页面或者对重要的症结的页面停止源代码加密,为源代码加一把锁。(有些人说对源代码停止加密没有用,但是我觉得要应用另类点的加密方法就可以了,比如软件的加密方法就很普通。但是用我自己写的htm文件加密的源代码,一般软件是不能停止解密的。大家有兴趣的话可以试试。)

    5. 最后不得不提的就是windows网页临时文件夹了,那里面会把源代码记录的。但是不用怕,参加一种代码,就可以使windows不下载网页的源代码,直接浏览。可以去找找。

    有些货色要注意的:

    1. 在文中所说的主动关闭网页的语句:window.close()有一个弊病。就是会在关闭窗口之前询问是否关闭窗口,如果选择否的话目的还是达不到。

    2. 以上一切都只对IE浏览器有功效,如果用别的浏览器来浏览,就有可能涌现屏蔽不成功的现象。

    文章结束给大家分享下程序员的一些笑话语录: 程序员喝酒
      我偶尔采用“木马策略”、“交叉测试”,时间不长就开始“频繁分配释放资源”,“cache”也是免不了的了,
      不过我从不搞“轮巡”,也不会“捕获异常”,更不会“程序异常”,因为我有理性
    克制的。  

    --------------------------------- 原创文章 By
    网页和源代码
    ---------------------------------

  • 相关阅读:
    团队贡献分汇总
    【Gamma】Scrum Meeting 1
    【Beta】测试报告
    【Beta】发布说明
    【技术博客】JWT的认证机制Django项目中应用
    Daily Scrumming* 2015.12.17(Day 9)
    Daily Scrumming* 2015.12.16(Day 8)
    Daily Scrumming* 2015.12.15(Day 7)
    Daily Scrumming* 2015.12.13(Day 5)
    Daily Scrumming* 2015.12.12(Day 4)
  • 原文地址:https://www.cnblogs.com/xinyuyuanm/p/3102440.html
Copyright © 2011-2022 走看看