Przeglądarka: CCBot/2.0 (https://commoncrawl.org/faq/).
Strona dobrze działa w przeglądarkach:
IE 5.0, Mozilla 0.9.5, Netscape 6,
Opera 6, Konqueror 3.1 lub nowszych.
Strona może być błędnie wyświetlana!
 
# HTML #

 

Zabezpieczenia grafiki na WWW

Do napisania tego artykułu zainspirował mnie kumpel z roku. Na stronie umieszcza drogocenną grafikę i wolałby żeby nikt jej nie kopiował. Jak wiadomo idealnych zabezpieczeń nie ma, więc ja napiszę tutaj zarówno o sposobach na zabezpieczenie grafiki, jak również o prostych sposobach na owe sposoby ;-).


Zabezpieczenia obecnie stosowane z powodzeniem.


1. Blokujemy menu kontekstowe.
W dokumencie HTML, w sekcji BODY dopisujemy kod JavaScript i blokujemy...

<SCRIPT TYPE="text/javascript" LANGUAGE="JavaScript">
<!--
document.write('<body ');
document.write('oncontextmenu="return false"'); //menu kontekstowe
document.write('onselectstart="return false"'); //zaznaczenie myszką
document.write('oncopy="return false"'); //kopiowanie do schowka
document.write('>');
//-->
</SCRIPT>

Można by to oczywiście napisać używając funkcji "document.write" tylko raz, ale należy pamiętać że cały kod pomiędzy tagami rozpoczynającymi i kończącymi skrypt musiałby być napisany w jednej linii. Inaczej przeglądarka wyrzuci nam błąd.
Rozwijając dalej powyższy sposób możnaby pokusić się o napisanie funkcji blokującej prawy klawisz myszki. Za każdym razem gdy wciśniemy prawy klawisz myszy, wyświetli się stosowny komunikat. A w praktyce wygląda to tak:

<SCRIPT TYPE="text/javascript" LANGUAGE="JavaScript">
<!--
var NN, IE; //identyfikatory przeglądarek
function browser() //detekcja przeglądarki
{
 NN=false;
 IE=false;
 var str = navigator.userAgent;
 NN = (str.indexOf("Gecko") != -1) ? true : false;
 if(NN)return;
 IE = (str.indexOf("MSIE") != -1) ? true : false;
}

function blockMouseIE() //blokujemy prawy klawisz w IE
{
 if(event.button == 2 || event.button == 3)
 {
  alert("Nie klikaj prawym przyciskiem !!!");
  return false;
 }
}

function blockMouseNN(evt) //blokujemy prawy klawisz w Netscape
{
 if(evt.which == 3)
 {
  alert('Nie klikaj prawym przyciskiem !!!');
  return false;
 }
}

browser(); //wywołujemy detekcję przeglądarki

// obsługa kliknięcia w IE
if(IE) document.onmousedown=blockMouseIE;

if(NN) //obsługa kliknięcia w Netscape
{
 document.captureEvents(Event.MOUSEDOWN);
 document.onmousedown=blockMouseNN;
}
//-->
</SCRIPT>

Jak widać inne funkcje zadziałają na IE a inne na Netscape. Dzieje się tak dlatego że istnieją tak naprawdę 2 rodzaje języka JavaScript. Jeden rodzaj obsługiwany jest przez Internet Explorera a inny przez Netscape.


2. Więc skoro blokujemy prawy klawisz myszki, to czemu nie spróbować blokady klawiatury. Zablokujemy klawisze CTRL. To dzięki nim można cokolwieg skopiować nie używając myszki. Funkcja browser() jest już znana więc ją pominę w tym listingu. A oto i blokada klawiszy CTRL.

<SCRIPT TYPE="text/javascript" LANGUAGE="JavaScript">
<!--
function blockKeyDownIE() //blokujemy klawisze CTRL w IE
{
 if(event.keyCode == 17) return false;
}

function blockKeyDownNN(evt) //blokujemy klawisze CTRL w Netscape
{
 if(evt.which == 17) return false;
}
browser(); //uruchamiamy funkcję wykrywającą przeglądarkę
if(IE) document.onkeydown=blockKeyDownIE; //obsługa wciśnięcia
                                                                    //klawisza w IE
if(NN) document.onkeydown=blockKeyDownNN; //to samo w Netscape
//-->
</SCRIPT>



3. JavaScript może służyć nie tylko do blokowania klawiszy. Dzięki tym skryptom możliwe jest również odpowiednie zaszyfrowanie źródła strony. Niestety takie szyfrowanie ma swoje wady. Strona jest poprawnie wyświetlana tylko w przeglądarkach obsługujących JavaScript, znacznie wolniej się ładuje i niektóre skrypty wbudowane w niezakodowane źródło strony mogą przestać poprawnie działać po zaszyfrowaniu źródła. Tak czy inaczej ta metoda jak najbardziej działa. Dzięki niej nikt poza wysoko wykwalifikowanymi specjalistami nie podejrzy ścieżki dostępu do foldera z naszymi grafikami. No ale przecież specjalista nie będzie potrzebował grafiki z naszej stronki.

Dawno temu napisałem prosty programik który koduje zawartość plików HTML. Ale uwaga! To jest tylko prościutka (chciałoby się powiedzieć prymitywna) aplikacja, która robi wyżej opisane błędy i dlatego zanim użyjesz tego programu, lepiej zaopatrz się w kopię zapasową swoich dokumentów HTML. Błędy związane są z dublowanym występowaniem znaków apostrofu i cudzysłowu. Żeby nie było wątpliwości, program Diaboli HTML Encoder jest rozprowadzany na licencji freeware ;-).




4. A co z klawiszem "Print Screen"? Niestety tego klawisza zablokować nie można. Ale zastanówmy się chwilkę co ten klawisz dokładnie robi i jak można temu zaradzić. Wciskając klawisz "Print Screen" kopiujemy nasz aktualny obraz ekranu (dane) do schowka (pamięci). Nie możemy nic poradzić na to że po każdym wciśnięciu tego klawisza pewne dane zostaną skopiowane do pamięci. Jednak możemy zapobiec skopiowaniu tych danych z pamięci do innego miejsca. A teraz konkretnie. W JavaScript istnieje bardzo prosta metoda czyszczenia calutkiej zawartości schowka. Niestety musimy zdecydować w jakich sytuacjach nasza strona będzie tę metodę wykorzystywała. Skoro nie możemy wykryć wciśnięcia klawisza "Print Screen" musimy sami przewidzieć w jakim momencie schowek opróżnić. Możemy zrobić tak żeby strona kasowała zawartość schowka cały czas lub co kilka sekund. Niestety nie jest to zbyt dobre rozwiązanie. Inne aplikacje również mogą potrzebować schowka i mogłyby w takim wypadku pracować niepoprawnie. Jednak możemy wykorzystać zdarzenie "onBlur", dzięki któremu strona będzie czyściła schowek za każdym razem gdy będziemy przechodzić z okna naszej strony do innego okna, np. programu graficznego. Po zrzuceniu zawartości ekranu do schowka musimy przecież gdzieś ten obraz wkleić. Żeby to zrobić musimy opuścić okno naszej stronki i przejść np. do MS-Paint. I właśnie wtedy do akcji wkracza nasz skrypt oczyszczający schowek. Ten kod zadziała tylko na IE 5.5 lub nowszych ale za to jest prościutki:

<BODY onblur="window.clipboardData.clearData();">

I w tym momencie większość natrętnych userów poddaje się. Pierwszy raz widzą że metoda "Print Screen" nie działa. Jednak jeśli wiemy co się tak naprawdę dzieje możemy takie zabezpieczenie łatwo obejść. Wystarczy deaktywować okno strony poprzez kliknięcie gdzieś na pulpicie albo na pasku zadań, wcisnąć "Print Screen" i nadal nie klikając w okno strony przejść do programu graficznego. Zdarzenie "onBlur" wtedy nie zadziała. Ale i w tym wypadku nie jesteśmy bezradni. Możemy zrobić coś naprawdę wrednego. Znaczna część internautów której nie interesuje jedynie bezmyślne kopiowanie będzie takim rozwiązaniem wręcz oburzona, więc dlatego przemyślmy dobrze sprawę zanim zastosujemy kolejne utrudnienie takie lub podobne do opisanego poniżej.

<BODY onblur="window.document.all('protected').style.visibility='hidden';
window.clipboardData.clearData();"
onfocus="window.document.all('protected').style.visibility='visible';">
<DIV ID="protected">Ochraniana zawartość</DIV>
</BODY>

W tym wypadku zawartość kontenera DIV o nazwie "protected" będzie widoczna jedynie przy aktywnym oknie przeglądarki, a przy deaktywacji okna zawartość będzie znikała. W przykładzie tym manipulujemy tu właściwością VISIBILITY kontenera. W aktywnym oknie wynosi ona "visible" czyli widzialna, a w nieaktywnym oknie przyjmuje ona wartość "hidden" czyli ukryta. I to rozwiązanie zadziała, jednak to bardzo zirytuje zwykłych użytkowników.


5. Skoro blokujemy kopiowanie do schowka to zablokujmy możliwość wydruku naszej strony. Wystarczy przecież skaner i program OCR żeby skutecznie skopiować nie tylko naszą grafikę ale i całą zawartość naszej strony. Żeby utrudnić drukowanie możemy użyć zdarzeń "onBeforePrint" i "onAfterPrint". Za ich pomocą będziemy sterować właściwością VISIBILITY całej naszej strony. Oto prosty kod.

<BODY onbeforeprint="window.document.body.style.visibility='hidden'; alert('Strona nie jest przeznaczona do wydruku !!!');" onafterprint="window.document.body.style.visibility='visible';">

Jak widać, przed drukowaniem zawartość strony zostanie ukryta. Do tego zostanie wyświetlony komunikat że "strona nie jest przeznaczona do wydruku". Potem zostanie wydrukowana pusta kartka bo przecież w oknie przeglądarki nic nie widać. Na koniec, po wydrukowaniu pustej kartki zawartość strony zostaje wyświetlona. Tych dwóch zdarzeń możemy również użyć do sterowania widocznością wyżej omówionego kontenera DIV, który może zawierać konkretny obrazek. Rozwiązanie trochę wredne, ale sam się zastanawiam czy nie zastosować czegoś podobnego u siebie na stronie. Pożyjemy, zobaczymy.
Opisywane powyżej sposoby na utrudnienie kopiowania grafiki realizowane są przez skrypty JavaScript. Teraz zajmiemy się utrudnieniami nie opartymi na tych skryptach.


6. Możemy utrudnić internautom dostęp do opcji zapisu obrazków i zablokować cachowanie strony poprzez umieszczenie w sekcji HEAD takich oto prostych META-tagów:

<META NAME="MSSmartTagsPreventParsing" CONTENT="True">
<META HTTP-EQUIV="ImageToolbar" CONTENT="No">
<META HTTP-EQUIV="Pragma" CONTENT="no-cache">

Dzięki nim po zatrzymaniu kursora myszy nad obrazkiem nie pojawi się panel z opcjami zapisu i wydruku obrazka. Nie pojawi się także przycisk służący do prostego skalowania obrazka. Dodatkowo przeglądarka przestanie cache'ować naszą stronę.


7. Przeźroczysta warstwa może stanowić kolejne utrudnienie kopiowania grafiki. Układając taką warstwę ponad obrazkiem, blokujemy dostęp do niego poprzez mysz. Klikając wtedy na obrazek klikamy tak naprawdę na warstwę która posiada te same właściwości co cała strona. Dlatego menu kontekstowe strony i warstwy niczym się nie różni. Deklaracje warstw są różne w zależności od przeglądarki i dlatego często używa się języka JavaScript w celu wykrycia przeglądarki i wygenerowania dla niej odpowiedniego kodu warstwy. Ale jeśli warstwa ma tylko posłusznie przykrywać obrazek i nie musi być w żaden sposób poruszana czy też chowana, wystarczy nam standardowa deklaracja CSS którą obsługuje poprawnie znakomita większość przeglądarek.

<HEAD>
 <style type="text/css">
   #szkliwo {position:absolute; left:0px; top:0px;}
 </style>
</HEAD>

<BODY>
 <DIV ID="szkliwo" width="200" height="200">
  <TABLE border="0" cellspacing=0 cellpadding=0 width="200">
   <TBODY>
   <TR><TD width="200" height="200">&nbsp;</TD></TR>
   </TBODY>
  </TABLE>
</DIV>
 <img SRC="obrazek.jpg" width="100" height="100">
</BODY>

Na tym listingu widzimy deklarację warstwy w sekcji HEAD w składni CSS. Warstwa nazywa się "szkliwo" i odległości tej warstwy od lewej i górnej krawędzi wynoszą 0. Położenie tej warstwy jest bezwzględne.
W sekcji BODY widać kontener DIV również o nazwie "szkliwo". Dzięki temu jego właściwości stają się takie jak zdefiniowane w deklaracji stylu "szkliwo", czyli jego odległości od górnej i lewej krawędzi wynoszą 0. Dodatkowo we właściwościach kontenera zdefiniowane są wymiary warstwy, które wynoszą 200 pikseli szerokości i 200 pikseli wysokości. Tak w deklaracji stylu warstwy "szkliwo" jak i we właściwościach jej kontenera DIV nie ma zdefiniowanych żadnych kolorów. Dodatkowo w zawartości kontenera dla pewności umieściliśmy tabelkę o wymiarach 200x200. W tabelce jest niełamliwa spacja. Tabelka nie ma żadnych kolorów ani obramowań. Te czynniki powodują że nasza warstwa jest przeźroczysta.
W sekcji BODY, poza kontenerem "szkliwo" umieszczony został obrazek o wymiarach 100x100. Jeśli na niego klikniemy prawym przyciskiem myszy, to się okaże że nie klikneliśmy w niego lecz w niewidzialny element strony, który wyświetla takie samo menu kontekstowe jak nasza strona. Mało tego. Naszego obrazka nie da się od góry zaznaczyć. Od dołu to się może udać, ale u góry obrazek jest szczelnie przykryty przez warstwę. Teraz wiadomo skąd nazwa warstwy - "szkliwo" :-).


8. Można utrudnić kopiowanie naszej grafiki poprzez umieszczenie jej na stronie w formacie FLASH. Samą grafikę czy też animację najlepiej konwertować do FLASH'a w programie Macromedia FLASH. Dobrze by było gdyby wynikowy plik z rozszeżeniem SWF był zabezpieczony hasłem przed importowaniem. Gdy już mamy wygenerowany plik SWF, osadzanie go na stronie jest dość proste. W programie FLASH można skorzystać z prostego kreatora który wygeneruje nam gotowy do doklejenia do dokumentu HTML kod osadzający nasz plik FLASH'a na stronie. Nie ma sensu umieszczać tutaj takiego przykładowego kodu. Tak wykonanej grafiki nie da się po prostu skopiować tak jak to może mieć miejsce w zwykłych plikach graficznych. Animacje FLASH mają własne menu kontekstowe i nie ma w nim opcji kopiowania.


9. No tak. Mamy JavaScript, DHTML, META-tagi ale okazuje się że dzięki CSS również możemy utrudnić kopiowanie naszych grafik. Możemy umieszczać nasze obrazki jako tła tabeli, tyle tylko że do zdefiniowania tego tła użyjemy stylów CSS. Oto prosty przykład:

<TABLE
 style="background-image: url(images/grafika.gif);
  background-repeat: no-repeat;"
  width="200" height="200">
<TBODY><TR><TD>&nbsp;</TD></TR></TBODY></TABLE>

Myślę że wszystko jest zrozumiałe. W deklaracji tabeli umieszczamy styl definiujący tło, brak powtarzania tła oraz wymiary tabelki które oczywiście powinny być takie same jak wymiary obrazka wczytywanego jako tło. Dodatkowo tworzymy wiersz z komórką zawierającą jedną niełamliwą spację. W niektórych przeglądarkach bez tego zabiegu nie zobaczylibyśmy tak stworzonej tabelki. Ogromna większość przeglądarek nie potrafi zapisać tak wstawionej grafiki poprzez użycie funkcji zapisywania na dysku.


10. Pewnie niektórzy nie wybaczyli by mi gdybym nie napisał tutaj o możliwościach języka PHP w zakresie utrudniania kopiowania grafik. I owszem, istnieje pewne rozwiązanie w PHP. Przecież przeglądarka potrafi wyświetlać wiele plików w formatach innych niż HTML. Wystarczy tylko jej jakoś przekazać że w danej chwili ma zacząć wyświetlać dane jako przykładowo plik graficzny. Potem otwieramy plik i wyświetlamy jego zawartość.

<?php //plik GRAFIKA.PHP
 header("Content-type:image/jpeg"); //wysłanie nagłówka pliku JPG
 if ($fd=fopen('obrazek.jpg', 'rb')) //próba otwarcia pliku w binarce
 {
  print fread($fd, filesize('obrazek.jpg')); //wyświetlenie zawartości
                                                           //pliku
  fclose($fd); //zamknięcie pliku
 }
?>

W ten sposób otworzyliśmy w przeglądarce plik graficzny. W tym przypadku jednak przeglądarka uważa że ścieżka do naszego pliku jest tą samą ścieżką co ścieżka pliku PHP.

Całą sprawę ukrywania pliku graficznego za skryptem można skomplikować jeszcze bardziej, poprzez umieszczenie grafiki w bazie danych. W ten sposób nasz skrypt PHP połączy się z bazą danych i specjalnym zapytaniem pobierze z niej naszą drogą grafikę, po czym ją wyświetli. Więcej na ten temat dowiesz się tutaj, bo odczyt i zapis obrazków do bazy jest materiałem na oddzielny temat.

Tymczasem zapiszmy powyższy skrypt do pliku "GRAFIKA.PHP". Potem zróbmy stronkę z kodem odwołującym się do obrazka. Zamiast ścieżki do naszej grafiki podajmy ścieżkę do pliku "GRAFIKA.PHP". Powinno to wyglądać tak jak poniżej.

<?php //prawidłowa strona
 <img SRC="GRAFIKA.PHP">
?>

Analogicznie możemy to samo zrobić w CSS co utrudni pobranie grafiki metodą "Zapisz jako...".

<?php //prawidłowa strona z tabelą z tłem w stylu CSS
 <table border="0" cellspacing=0 cellpadding=0
  style="background-image:url(GRAFIKA.PHP);
  background-repeat:no-repeat;
  width:200; height:200;">
 <tbody><tr><td>&nbsp;</TD></TR></TBODY></TABLE>
?>

Na koniec otwórzmy stronę którą teraz stworzyliśmy. Okaże się że całkiem łatwo wstawiliśmy zamiast obrazka stronę wyświetlającą obrazek, którego ścieżka jest do tego zamaskowana. Jeśli zablokujemy przy tym klawisz PRINT SCREEN, menu kontekstowe oraz możliwość zaznaczania, kopiowania, drukowania, zapisywania i dodatkowo nałożymy na obrazek przeźroczystą warstwę, okaże się że skopiowanie tak zabezpieczonej grafiki jest dość trudne. Spróbuj skopiować poniższy obrazek, który został zabezpieczony właśnie w taki sposób.




Niestety, ten obrazek będzie widoczny tylko w przeglądarkach Internet Explorer 5.5, Mozilla Firefox 1.0 i Opera 6 lub ich nowszych wersjach przy aktywnej obsłudze JavaScript !!!



Jeśli mimo wszystko udało Ci się go skopiować, to zrobiłeś print screen nieaktywnego okna (co oznacza że jesteś uważnym i spostrzegawczym czytelnikiem), użyłeś programu do kopiowania całych witryn (co uważam za mało prawdopodobne), albo najprawdopodobniej masz nieaktywną obsługę JavaScript. To właśnie skrypty JS blokują menu kontekstowe, zaznaczanie czy też schowek. Jednak PHP i JavaScript współdziałające ze sobą, dla wielu internautów stanowią barierę nie do przejścia.


11. Jeżeli tworzymy galerię grafik to być może warto zastanowić się nad metodą "window.open". Dzięki niej pozbędziemy się na 100% możliwości zapisu naszej grafiki poprzez opcję "Zapisz jako...". Na stronie głównej można umieścić miniaturki obrazków, po których kliknięciu otwiera się nowe okno przeglądarki z odpowiednio spreparowaną stroną wyświetlającą prawidłowy obraz. W kodzie strony głównej możemy napisać tak:

<!-- Strona główna -->
<HTML>
<HEAD>
<title>Galeria</TITLE>

<SCRIPT TYPE="text/javascript" LANGUAGE="JavaScript">
<!--
function otwieraj(grafika)
{
 //otwieramy stronę 'podglad.php' z parametrem 'g'
 //odpowiadającym numerowi danej grafiki
 var grafa='podglad.php?g='+grafika;
 window.open(grafa,'nowe_okno','toolbar=no,location=no,
 directories=no,status=no,menubar=no,scrollbars=no,
 resizable=no,fullscreen=no,channelmode=no,
 width=400,height=400,top=100,left=100');
}
//-->

</HEAD>
<BODY>
<table>
  <tbody>
   <tr>
    <td><img SRC="miniaturka1.gif" width="80" height="80"
    onclick="javascript: otwieraj(1);"></TD>
    <td><img SRC="miniaturka2.gif" width="80" height="80"
    onclick="javascript: otwieraj(2);"></TD>
   </TR>
   <tr>
    <td><img SRC="miniaturka3.gif" width="80" height="80"
    onclick="javascript: otwieraj(3);"></TD>
    <td><img SRC="miniaturka4.gif" width="80" height="80"
    onclick="javascript: otwieraj(4);"></TD>
   </TR>
  </TBODY>
</TABLE>
</BODY>
</HTML>

Następnie tworzymy plik "padglad.php":

<!-- plik podglad.php -->
<HTML>
<HEAD>
<title>Powiększenie</TITLE>
</HEAD>
<BODY>

<?php
$graf=$HTTP_GET_VARS['g']; //przypisujemy wartość paramertu g
                                            //zmiennej $graf
print '<img SRC="obraz'.$graf.'.gif" width="400" height="400">';
 //wyświetlamy odpowiedni obrazek
?>

</BODY>
</HTML>

Jak widać duże odpowiedniki miniaturek otworzą się w nowym oknie bez żadnych pasków narzędzi, czy też możliwości zmiany rozmiaru. Jeśli więc w stronie "podglad.php" zablokujemy menu kontekstowe, prawy przycisk myszy oraz dodatkowo użyjemy wyżej zdefiniowanych META-tagów i zablokujemy schowek, to skopiowanie tak zabezpieczonej grafiki będzie bardzo trudne. Żeby wszystkie zabezpieczenia zdały egzamin mądrym posunięciem byłoby blokowanie uruchomienia strony w przeglądarkach innych niż Internet Explorer. Na tym przykładzie widać bardzo wyraźnie że PHP współdziałające z JavaScript daje zadowalające efekty.



Zabezpieczenia które w dalekiej przyszłości mogą dobrze działać.


1. A gdyby tak zabezpieczyć się przed klawiszem "Print Screen" bez wykorzystania JavaScript? Hmmm... To może się kiedyś udać. Można np. z jednej statycznej grafiki stworzyć specyficzną animację. Można powiedzieć że to byłby taki trochę telewizyjny sposób. To zabezpieczenie mogło by bazować na efekcie optycznym, który udaje się uzyskać poprzez szybką zmianę klatek animacji. A teraz pomyślmy. Można by stworzyć taką animację, która miała by powiedzmy 2 klatki. W obydwu ujęciach byłby ten sam obrazek, tyle tylko że pewne fragmenty tychże klatek byłyby zamazane. Dodam że fragmenty zamazane w pierwszej klatce byłyby widoczne w drugiej i odwrotnie. Później należałoby taką animację maksymalnie przyspieszyć żeby nasze oczy nie wychwytywały zmian. I w ten sposób gdybyśmy zapisywali zrzut ekranowy strony, zapisywana grafika byłaby zawsze niepełna.


2. Wyświetlenie grafiki jako tabeli w HTML dzięki takim skryptom jak np. mój phpTableGraph. Tworzy on tabelkę HTML o dokładnie takiej ilości komórek, ile jest pikseli w danej grafice. Tabelka jest tworzona beż żadnych obramowań i marginesów. Kolory tła poszczególnych komórek odpowiadają kolorom odpowiednich pikseli w danej grafice. Kliknij tutaj żeby zobaczyć więcej informacji o tym skrypcie.



Na wszystko są sposoby ;-).


Co można zrobić kiedy mamy kłopoty z kopiowaniem ze stronek?
Jest kilka sposobów.

1. Można użyć przeglądarki innej niż Internet Explorer.
Przeglądarką wartą uwagi jest z pewnością Mozilla. Niejednokrotnie potrafi pokazywać w dymkach lub pasku statusu ścieżkę dostępu do zabezpieczonej przed czymś takim grafiki.


2. Można wyłączyć w takiej przeglądarce obsługę JavaScript.
Wiele zabezpieczeń i blokad bazuje właśnie na JavaScript. Wyłączając obsługę tych skryptów często można się uwolnić od wielu niedogodności.


3. Ciekawą opcją jest też instalacja przeglądarki bazującej na jądrze Internet Explorera. Myślę tu o programie MyIE2 z zainstalowanym kompletem pluginów. Dzięki nim bez problemów pobierzemy z serwera wszystkie grafiki wykonane w technologii FLASH, wyświetlimy kod źródłowy każdej ramki oraz odblokujemy prawy klawisz myszy.

4. Istnieją też programy pobierające strony WWW w całości. Myślę tu o programach takich jak Offline Explorer czy też Teleport Pro.


5. Jeśli chodzi o zrzuty ekranowe, to nie musimy koniecznie wciskać klawisza "Print Screen". Wystarczy nam program taki jak np. Snagit który potrafi zapisywać stan całego ekranu lub też konkretnego okna. I nie pomoże żadne opróżnianie schowka.


Generated in: 0.02 s
Copyright © 2002-2023 Sigillum Diaboli