Jump to content
Gecko

Metode de ingreunare a scrapangiilor

Recommended Posts

Am descoperit un site mai devreme care are protectie impotriva DevTools, mai exact, daca il vede deschis, se sterge tot continutul HTML automat si nu se mai incarca niciun script. Mi se pare destul de interesant, mai ales impotriva scrapangiilor, asa ca mi-am facut si eu o jucarioara bazata pe un tool open source de detectie.

 

Il instalati cu:

 

npm install --save devtools-detect



Si il folositi astfel:

 

const devtools = require('devtools-detect/index');

if (window.location.hostname === 'domeniu.com') {
    setInterval(() => {
        if (devtools.open) {
            document.body.innerHTML = ':)';
            for (;;) find();
        }
    }, 1e3);
}

 

Primul if verifica daca e pe site-ul live, pentru a putea sa-l evitam cand dezvoltam aplicatia local, cu un hostname local.

 

Linia:

document.body.innerHTML = ':)';

 

Sterge tot HTML-ul. Iar linia:

for (;;) find();

E doar o jucarie interesanta de a tine procesorul ocupat la infinit. Practic tab-ul ingheata si nu mai reactioneaza la interactiuni.

 

Ceva de genul:

for (;;) debugger;

Presupun ca ar fi la fel de enervant. Insa nu am testat asta.

 

---

 

Sunt curios daca folositi si voi astfel de protectii sau daca ati observat vreunele prin alte parti.

  • Like 1
  • Thanks 3
  • Upvote 4

Share this post


Link to post
Share on other sites
17 minutes ago, Gecko said:

Am descoperit un site mai devreme care are protectie impotriva DevTools, mai exact, daca il vede deschis, se sterge tot continutul HTML automat si nu se mai incarca niciun script. Mi se pare destul de interesant, mai ales impotriva scrapangiilor, asa ca mi-am facut si eu o jucarioara bazata pe un tool open source de detectie.

 

Il instalati cu:

 


npm install --save devtools-detect



Si il folositi astfel:

 


const devtools = require('devtools-detect/index');

if (window.location.hostname === 'domeniu.com') {
    setInterval(() => {
        if (devtools.open) {
            document.body.innerHTML = ':)';
            for (;;) find();
        }
    }, 1e3);
}

 

Primul if verifica daca e pe site-ul live, pentru a putea sa-l evitam cand dezvoltam aplicatia local, cu un hostname local.

 

Linia:


document.body.innerHTML = ':)';

 

Sterge tot HTML-ul. Iar linia:


for (;;) find();

E doar o jucarie interesanta de a tine procesorul ocupat la infinit. Practic tab-ul ingheata si nu mai reactioneaza la interactiuni.

 

Ceva de genul:


for (;;) debugger;

Presupun ca ar fi la fel de enervant. Insa nu am testat asta.

 

---

 

Sunt curios daca folositi si voi astfel de protectii sau daca ati observat vreunele prin alte parti.

N-am mai văzut până acum, dar poate îl pui și tu pe un CDN :P

Share this post


Link to post
Share on other sites
1 minute ago, Silviu said:

N-am mai văzut până acum, dar poate îl pui și tu pe un CDN :P

Nu stiu cat de eficient ar fi, daca il tii intr-un script separat, il poti bloca cu extensii precum cele de ad blocking. Pe cand, daca-l introduci in codul aplicatiei tale, sau il ascunzi prin alt lib, e mult mai greu de evitat.

  • Upvote 1

Share this post


Link to post
Share on other sites
4 minutes ago, Gecko said:

Nu stiu cat de eficient ar fi, daca il tii intr-un script separat, il poti bloca cu extensii precum cele de ad blocking. Pe cand, daca-l introduci in codul aplicatiei tale, sau il ascunzi prin alt lib, e mult mai greu de evitat.

Măcar să îl downloadez de acolo minified, că nu am npm peste tot. E mai mult decât asta?

Share this post


Link to post
Share on other sites

@Gecko Care este situl, te rog frumos, ca vreau sa ma joc si eu in python cu el ?

Da-mi PM, te rog mult, daca nu vrei sa il faci public ca eu nu am mai vazut un astfel de site niciodata si vreau sa ma joc cu el (promit ca nu-i fac nici un rau) doar vreau sa vad cum arata asa ceva life.

 

Multumesc mult de tot!

 Linia de mai jos ce face ?

6 hours ago, Gecko said:

}, 1e3);

Edited by Che

Share this post


Link to post
Share on other sites
1 hour ago, Che said:

@Gecko Care este situl, te rog frumos, ca vreau sa ma joc si eu in python cu el ?

https://hqq.tv/player/embed_player.php?vid=229243206242237236222234224243233225194271217261258&autoplay=no

Asta ar fi un exemplu, nu e cu script-ul meu, e site-ul de unde mi-a venit ideea.

 

1 hour ago, Che said:

Linia de mai jos ce face ?

}, 1e3);

1e3 inseamna 1 inmultit cu 10 la puterea 3. Se numeste notare stiintifica si e folosit in general in formule stiintifice, insa eu il folosesc pentru ca mi-e lene sa scriu zerouri. Daca aveam de scris un milion, scriam 1e6.

 

http://www.java2s.com/Tutorials/Javascript/Javascript_Tutorial/Data_Type/How_to_write_Scientific_notation_literal_in_Javascript.htm

 

Functioneaza in majoritatea limbajelor.

  • Thanks 1
  • Upvote 1

Share this post


Link to post
Share on other sites

Folosesc un cpanel + wordpress si am pus scriptul asa: 

<script src="//domeniu.com/devtools-detect/index.js">
<script>if (window.location.hostname === 'domeniu.com') {
    setInterval(() => {
        if (devtools.open) {
            document.body.innerHTML = ':)';
            for (;;) find();
        }
    }, 1e3);
}</script>

Daca il puneam ca in post imi dadea eroare in consola: Uncaught ReferenceError: require is not defined

N-am mai verificat daca este si functional pe mai multe device-uri. Azi cand am intrat pe site pe incognito am realizat ca scriptul sterge html + blocheaza procesor si daca nu am consola deschisa =)). Chiar ma intrebam de ce imi scazue trafficul. Curios este ca daca sunt logat pe site scriptul merge bine. Are cineva vreo idee de la ce ar putea sa fie?

Edited by sinnerman1696

Share this post


Link to post
Share on other sites
5 hours ago, sinnerman1696 said:

Folosesc un cpanel + wordpress si am pus scriptul asa: 


<script src="//domeniu.com/devtools-detect/index.js">

<script>if (window.location.hostname === 'domeniu.com') {
    setInterval(() => {
        if (devtools.open) {
            document.body.innerHTML = ':)';
            for (;;) find();
        }
    }, 1e3);
}</script>

Daca il puneam ca in post imi dadea eroare in consola: Uncaught ReferenceError: require is not defined

N-am mai verificat daca este si functional pe mai multe device-uri. Azi cand am intrat pe site pe incognito am realizat ca scriptul sterge html + blocheaza procesor si daca nu am consola deschisa =)). Chiar ma intrebam de ce imi scazue trafficul. Curios este ca daca sunt logat pe site scriptul merge bine. Are cineva vreo idee de la ce ar putea sa fie?

Stii cumva pe ce device si browser s-a intamplat? Daca era mobil, ai putea adauga inca o conditie in primul if, precum:

/Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent)

Legat de detaliul cu require, este util doar cand compilezi fisierele JS cu node, daca vrei sa-l folosesti direct in browser e corect cum ai facut tu, insa ai putea schimba () => cu function () sa te asiguri ca va rula codul si pe browsere mai vechi care nu suporta ES2015.

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.


×
×
  • Create New...