禁止網頁右鍵查看源碼(源文件)

衆所周知,要保護一個頁面,最基礎的就是要屏蔽右鍵。而如今網頁上用得最多的是function click(),即下面這段代碼:css

  〈script〉html

  function click(){java

  if(event.button==2){windows

  alert( ’本網站歡迎您 !!’);瀏覽器

  }框架

  }工具

  document.onmousedown=clickpost

  〈/script〉網站

  可是這種屏蔽方法的破解方法也是衆所周知的。那就是連續單擊鼠標左鍵和右鍵便又能夠看到右鍵菜單了。可是,我見過一種很好的屏蔽右鍵的方法。它的原理和上面所說的不一樣。它並非用JS來編寫的腳本,而是利用定義網頁屬性來起到限制的做用。並且,在屏蔽中應該儘可能的避開使用JS腳本。由於只要瀏覽者把IE裏的java script腳本禁用了。那麼一切屏蔽都白費。ui

  那麼繼續說那種經過修改網頁屬性的屏蔽右鍵的方法。這種方法利用了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瀏覽器有效用,若是用別的瀏覽器來瀏覽,就有可能出現屏蔽不成功的現象。

相關文章
相關標籤/搜索