Pogledajte skriveni javascript kod na stranici. Skriveni tekst u JavaScript-u

Da li ste ikada poželjeli da sakrijete skriptu na svojoj stranici od stranaca zbog koje se pojavljuje nerealno lijep meni ili izvršite druge radnje koje ne biste željeli uskoro vidjeti na svakoj drugoj web stranici?
Ako jeste, onda će vam metoda opisana u ovom članku biti korisna zajedno sa zamagljivanjem koda. Istovremeno, odmah ću rezervirati da metoda nije 100 posto učinkovita, ali će vas vjerovatno zaštititi od većine neprofesionalaca i nekih profesionalaca.

Teorija Recimo da imamo stranicu nojs.php, a na njoj secret.js skriptu koju treba sakriti. Pregledač i korisnik mogu primiti skriptu sa servera na sljedeće načine:
  • Učitavanje skripte direktno postavljene na stranicu ili učitane pomoću DOM-a;
  • Pogledajte skriptu u prozoru Izvorni kod stranice;
  • Pohranjivanje stranice sa svim datotekama na vaš tvrdi disk;
  • Unošenje direktnog URL-a u adresnu traku.
  • U prvom slučaju, pretraživač mora poslati HTTP_REFERER HTTP zaglavlje.
    U drugom i trećem slučaju, ne prenose ga svi pretraživači (Chrome, FireFox prikazuju prethodno preuzetu skriptu iz keša; Opera, IE ponovo preuzimaju skriptu, ali bez slanja referera).
    U četvrtom slučaju, referer ne prenosi nijedan od četiri pretraživača.
    Ako dinamički izdamo JavaScript i provjerimo prisustvo referera zaglavlja u zahtjevu, tada ćemo se odmah zaštititi od Opera i IE, ali za Crome i Firefox ćemo morati smisliti nešto lukavije. Prvo ćemo preuzeti jednu skriptu, koja će zauzvrat preuzeti drugu skriptu, a oba preuzimanja će biti provjerena da li postoji http-referer. Naučno je utvrđeno da ako dinamički kreirate skriptu na stranici document.createElement("script"), a zatim je izbrišete sa stranice, skripta će raditi kao i obično, ali neće biti sačuvana stranica ima svrhu učitavanja script1.php
    Pronađite JS Nakon 10 sekundi trebali biste vidjeti skrivenu skriptu koja radi u obliku upozorenja, kliknite na link nakon upozorenja da biste bili sigurni da ni događaji nisu pali. Na ovom linku možete vidjeti skrivenu skriptu script1.php Njen zadatak: dinamički učitavanje script2.php ako postoji referer zaglavlje. Vremenska ograničenja se mogu smanjiti, ovisno o približnom vremenu izvršenja skrivene skripte.
    script2.php Njegov zadatak je da proizvede konačnu skriptu ako postoji referer zaglavlje
    Rezultati Kao rezultat, dobijamo da ne možemo ni pogledati izvorni kod stranice, niti preuzeti ili sačuvati skrivenu skriptu koristeći četiri testirana pretraživača. U principu, možete ga gledati na dva načina:
    • Pratite link koji direktno vodi do script2.php i nalazi se na stranici naše web stranice;
    • Formiranje http zahtjeva koji označava zaglavlje upućivača.
    Možete povećati efikasnost skrivanja koristeći sljedeće metode:
  • Koristeći mod-rewrite, zamenite script1.js i script2.js koji idu na server sa script1.php i script2.php, respektivno, tako da stranica sadrži poznate js datoteke, pošto je php upečatljiv;
  • Učinite izmišljeni scenario što je moguće složenijim, vjerodostojnijim i zbunjujućim, tako da će osoba koja pokušava da ga raščlani mnogo patiti prije nego što shvati da je prevarena;
  • Zamagljivanje koda.
  • Najjednostavnije rješenje za prikaz/sakrivanje elementa HTML dokumenta koristeći JavaScript. Detaljan opis suštine procesa i njegovih karakteristika.

    Srušiti običnim sredstvima sakriti) ili prikaži (engleski) show) Element HTML dokumenta nije moguć. Ovo se radi pomoću CSS svojstva displej ili vidljivost. Razlika između njih je u tome vidljivost, iako čini HTML element nevidljivim, prostor koji zauzima ostaje s njim. Jasno je da se mnogo češće koristi displej.

    displej (sa engleskog) displej) je višenamjensko svojstvo koje određuje kako element treba biti prikazan u dokumentu.

    Lista mogućih vrijednosti CSS svojstava displej, koju razumiju razni pretraživači, nije velika, ali je sasvim dovoljno.

    • blok - element je prikazan kao blok element. Primjena ove vrijednosti na inline elemente, kao što je oznaka SPAN, uzrokuje da se ponaša kao blokovi, tj. Prijelomi reda se javljaju na početku i na kraju sadržaja.
    • inline - element se prikazuje kao inline. Primjena ove vrijednosti na blok elemente, kao što je DIV tag, uzrokuje da se ponaša kao inline elementi, tj. njegov sadržaj će početi tamo gdje je prethodni element završio.
    • list-item - element se prikazuje kao blok element i dodaje se marker liste.
    • none - sakriva element u dokumentu. Prostor koji zauzima nije rezerviran i web stranica je formirana kao da element nikada nije postojao.

    Jasno je da da biste promijenili CSS svojstvo određenog HTML elementa, morate koristiti programski jezik za skriptiranje. U našem slučaju to je JavaScript. Ali sve je u redu.

    Prvi korak je da odlučite kako tačno pristupiti HTML elementu dokumenta. Da biste to učinili, možete koristiti metodu getElemetById objekta dokumenta, koja vraća vezu do HTML elementa dokumenta na osnovu vrijednosti atributa id. Na primjer:

    document.getElemetById("test")

    Sada trebamo pristupiti svojstvima stila odgovarajućeg HTML elementa. Za to se koristi svojstvo style. Na primjer:

    document.getElemetById("test").style.display

    Sve što ostaje je kreirati kontrolni element koji bi promijenio vrijednost CSS svojstva displej, na neki događaj, na primjer onclick (klik mišem). Ovdje je vrijedno obratiti pažnju na činjenicu da ćete morati provjeriti trenutnu vrijednost CSS svojstva da biste riješili zadatak koji je pred vama. displej i promijenite ga u "suprotno". U našem slučaju, koristit ćemo vrijednost none da sakrijemo, a “empty” za prikaz. U drugom slučaju uklanjamo CSS svojstvo displej u odgovarajućem elementu, što će vam omogućiti ispravan rad i sa blok i sa inline HTML elementima.

    Radi jasnoće, navest ću sljedeći primjer:

    function change(idName) ( if(document.getElementById(idName).style.display=="none") (document.getElementById(idName).style.display = ""; ) else (document.getElementById(idName).style). .display = "none" ) return false ) Hi World! Promjena

    Imajte na umu da DIV oznaka ima atribut stila postavljen na display:none. Dakle? postavljamo vrijednost CSS svojstva displej podrazumevano na ništa, tj. HTML element će u početku biti skriven.

    Zdravo čitaoče.
    U ovom kratkom članku želimo vam reći kako pravilno optimizirati kategorije za online trgovinu.
    Kada počnemo optimizirati tekst, prvo postavljamo stranicu za maksimalnu relevantnost. Kako uraditi .
    Ali u ovoj situaciji često se javlja sljedeći problem - morate dodati previše teksta, a to se ne uklapa u dizajn stranice.
    Stoga dio teksta trebate sakriti od korisnika, ali ako ga posjetitelj iznenada poželi pročitati, onda ga može lako otvoriti.

    U online hipermarketu Rozetka implementirano je zanimljivo rješenje. Evo primjera kategorija:

    Kada kliknemo na ovaj link, otvara se puni opis bez ponovnog učitavanja stranice. Ako želite implementirati isto rješenje, u nastavku opisujemo kako se to implementira u praksi.
    Ova stvar se može riješiti zahvaljujući JavaScript programskom jeziku.
    JavaScript je prvobitno kreiran da učini web stranice „živim“.
    Da biste instalirali JavaScript skripte u tekst web stranice, morate unijeti deskriptor. JavaScript kod se nalazi između oznaka. Kôd se može postaviti i u tijelo naslova stranice (između oznaka) i u tijelo stranice (između oznaka).
    Da bi skripta radila, potrebno je da kreirate funkciju koja će se koristiti u bilo kom delu sajta. Koristićemo funkciju sh()


    sh();
    funkcija sh() (
    info = document.getElementById("info");
    button = document.getElementById("button");
    if (info.style.display == "ništa") (
    info.style.display = "blokiraj";
    button.style.display = "nema";
    }
    }

    Da biste na njemu prikazali rad skripte, morate je staviti na određeno mjesto u ovom obliku

    Čitaj više...



    TEKST KOJI ĆE BITI SKRIV

    Ovdje se poziva funkcija sh().
    Da bi skriveni tekst bio otvoren prema zadanim postavkama u kodu, promijenite display:none u display:block

    Evo primjera onoga što se dogodilo nakon primjene funkcije na tekst:

    U ovom primjeru, 3000 karaktera SEO teksta je skriveno na stranici, koji su napisani za promociju stranice. Kada kliknete na vezu, sama veza "Više detalja..." će nestati zahvaljujući svojstvu style.display navedenom u funkciji.
    Na ovaj način možete implementirati ovu funkcionalnost. Ako imate bilo kakvih pitanja, postavite ih u komentarima.

    Iskreno, nijednom programeru ovo nije potrebno, u suštini svaki javascript kod je lako pregledati u pretraživaču, pa stoga nema posebnog razloga da sakrijete svoj kod. To je, da tako kažem, vidljivo, nešto što se ne može sakriti. Međutim, ima momaka kojima je jako neugodno pokazati svoju šifru bilo kome, vjerujući da je to imovina koja se ne može ukrasti, recimo, biblioteke. Napravili ste online uslugu, posebno za nju kreirali moćnu kompleksnu biblioteku koja obavlja određene operacije, nema analoga vašem servisu, vašoj biblioteci i, naravno, ne biste željeli da svi (programer) lako vide vašu skriptu i budu mogu iskoristiti vaš kao primjer sličan, čak i bolji. Naravno, nema ništa loše u tome da se uradi nešto bolje, to je evolucija, ali sa poslovne tačke gledišta, ovo ide samo u korist konkurencije. Vi samo trebate razumjeti algoritam i pokušati ga poboljšati, i reći mi svoje iskustvo o tome kako sam napravio skrivene skripte. Prva stvar koju trebamo je da testiramo zadatak na stvarnom (lokalnom) serveru, ja ću to učiniti koristeći Denwer na lokalnom serveru.

    a) Za testiranje, kreirajte direktorij na serveru.
    Idem na virtuelni disk, za mene je to disk R, idem u početnu fasciklu tamo

    Kreirajte direktorij skripta, a unutra kreirajte www folder, na kraju ćete dobiti: home/script/www/ - nakon toga obavezno ažurirajte server (Restart Denwer)

    b) Kreirajte fajl index.php - recimo da je ovo naša glavna stranica sajta, i ovde treba da prikažemo skrivene skripte. Također kreirajte “js” folder u ovom direktoriju.

    Za naš zadatak će biti potrebni AJAX zahtjevi, za to možete koristiti svoje racionalne funkcije, ali ako vaš projekat naraste do veličine koja zahtijeva korištenje specijalnih efekata, događaja, povežite biblioteku, a ja ću unaprijed povezati jQuery, tako da u korijenu foldera “js” » dodajte jquery.js.

    Zatim kreirajte novu fasciklu u istoj fascikli, skripte koje ćemo morati da sakrijemo biće pohranjene u njemu. Nazvat ću to "sigurnost":

    c) Unesite preliminarni kod u index.php


    Kao što vidite postoji blok

    PHP preuzima ulogu čitanja vaših skripti, koje će biti blokirane na serveru i ne mogu im se pristupiti.

    Ali prvo, kreirajmo naše skripte koje želimo sakriti.


    d) U folderu “security” kreirajte script1.js i script2.js, sa sljedećim sadržajem:


    Ovo je dovoljno za primjer! Sada, da im se ne bi moglo pristupiti, morate ovo postaviti na serveru, to se radi zahvaljujući .htaccess fajlu.

    Htaccess je konfiguracijska datoteka koju je konfigurirao programer, korisnik ovog servera.

    Htaccess ima ovaj sadržaj:

    Zatim, na zahtjev:

    Vidjet ćete nešto ovako:

    Dakle, vaša sigurnosna mapa je skrivena od znatiželjnih očiju i nedostupna.

    Ako pokušate uključiti skripte:

    U svakom slučaju, vaše datoteke neće biti izvršene, jer su globalno skrivene od strane servera

    e) Vratite se na PHP programski blok u index.php

    Poenta je da PHP ima pristup svim fajlovima na serveru, bez obzira da li su skriveni ili ne, odnosno ako napišete:


    tada ćemo u ovom slučaju vidjeti sadržaj naše skrivene skripte.

    Međutim, sadržaj naše skripte neće biti vidljiv sa drugog servera, a poruka o grešci od 500 će biti vraćena.

    f) Ovako će izgledati konačni rezultat:

    Sada da shvatimo kako sve to funkcionira. jQuery izvršava post zahtjev (ovo pomaže da se izbjegnu rupe u radu index.php) na serveru “index.php?js=result”, postoji provjera da li je zahtjev s našeg servera (funkcija strpos() i adresu našeg servera “HTTP:/ /script” – uzimajući u obzir ovaj primjer), tada skripta provjerava POST varijablu, odnosno adresu naše skrivene skripte, i daje tekstualni rezultat. Metoda jQuery done() prima odgovor u obliku ovog tekstualnog sadržaja, a ovaj tekst se već može konvertovati u radni javascript, to radi standardna funkcija cross-browser eval();

    Kao rezultat toga, naše skripte se ne mogu vidjeti statički ili dinamički kroz konzolu pretraživača, ali je lako vidjeti njihov rad. Ove skripte i njihove funkcije se lako izvršavaju. Međutim, morate dobro razmisliti da biste koristili ovu tehniku, jer se u ovom slučaju postavlja pitanje performansi i brzine. Funkcija eval(code) se smatra zlom među javascript programerima i preporučuje se korištenje njene analogne nove Function('return' + code), iako potonja ne može interno definirati funkcije, odnosno ako vaša varijabla sadrži zapis definicije funkcije , code = “funkcija test() (upozorenje(1);); test();”, tada se kod neće izvršiti, što znači da je eval() pogodan za sve prilike, iako ima svoje nijanse, o kojima još trebate pročitati više.

    Opis: Postoje situacije kada ne želite da prikažete sav sadržaj stranice odjednom. Na primjer, u odjeljku "Česta pitanja" prikažite samo nazive pitanja. A ako osobu zanima odgovor na određeno pitanje, onda može otvoriti odgovor, a kada ga pogleda, može ga zatvoriti. Ovo čini stranicu praktičnom i kompaktnom. I za to sam pripremio jednostavnu JavaScript skriptu koja vam omogućava da otvorite ili sakrijete određeni tekst (općenito, određene elemente), odnosno da napravite skriveni tekst u JavaScriptu.

    Rezultat: Kliknite na naslov pitanja. Ako ponovo kliknete, odgovor će se ponovo zatvoriti.

    Pitanje br. 1

    Odgovor #1.

    Pitanje br. 2

    Odgovor #2.

    JavaScript kod (umetnuti između i oznaka):


    funkcija expandit(id)(
    obj = document.getElementById(id);
    if (obj.style.display=="none") obj.style.display="";
    else obj.style.display="none";
    }

    HTML kod (umetnuti između i oznaka):

    Pitanje br. 1
    Odgovor #1.
    Pitanje br. 2
    Odgovor #2.

    mob_info