Απόκρυψη διευθύνσεων email με JavaScript

Κώδικας, πληροφορίες, ερωτήσεις και απαντήσεις σχετικές με την JavaScript.

Συντονιστές: WebDev Moderators, Super-Moderators

Άβαταρ μέλους
skeftomilos
Script Master
Δημοσιεύσεις: 2888
Εγγραφή: 07 Ιαν 2005 07:22
Τοποθεσία: Αθήνα

Απόκρυψη διευθύνσεων email με JavaScript

Δημοσίευση από skeftomilos » 28 Οκτ 2006 16:52

Βρισκόμαστε στο 2008. Αντίθετα με τις αισιόδοξες προβλέψεις και παρά τις επίμονες προσπάθειες που γίνονται για την καταπολέμησή του, το spam ζει και βασιλεύει. Το anti-spam script του cpulse έχει γίνει πολύ δημοφιλές και είναι ενσωματωμένο σε δεκάδες χιλιάδες σελίδες του διαδικτύου. Στις περισσότερες περιπτώσεις η ενσωμάτωση έγινε με απλό copy-paste, χωρίς καμία αλλαγή. Πολλές απ' αυτές τις προστατευμένες σελίδες περιέχουν email links.

Πεδίο δόξης λαμπρόν αγοίγεται λοιπόν για το παρακάτω ρομποτάκι:

Robot.wsf

Κώδικας: Επιλογή όλων

<job>
  <script language="JScript">
    var ie = WScript.CreateObject&#40;'InternetExplorer.Application'&#41;
//    ie.Visible = true
    ie.Navigate&#40;'http&#58;//users.freestuff.gr/skeftomilos/scripts/email-robot/email-antispam-02.php.htm'&#41;
    WScript.Echo&#40;'Loading document started...'&#41;
    do &#123;
      WScript.Sleep&#40;250&#41;
    &#125; while &#40;typeof ie.document == 'unknown'&#41;
    WScript.Echo&#40;'Reading HTML...'&#41;
    var html = ie.document.documentElement.innerHTML
    if &#40;html.match&#40;/SpAm\$PrOtEcToR/&#41;&#41; &#123;
      WScript.Sleep&#40;1200&#41;
      for &#40;var i = 0, link; link = ie.document.links&#91;i&#93;; i++&#41; &#123;
        if &#40;link.onmouseover&#41; &#123;
          try &#123;link.onmouseover&#40;&#41;&#125; catch&#40;e&#41; &#123;&#125;
        &#125;
      &#125;
      html = ie.document.documentElement.innerHTML
    &#125;
    WScript.Echo&#40;'Searching for emails...'&#41;
    var emails = &#91;&#93;
    html.replace&#40;/href=&#91;"'&#93;?mailto&#58;&#40;&#91;\w@\.\-&#93;+&#41;/gi, function&#40;$0, $1&#41; &#123;
      emails.push&#40;$1&#41;
    &#125;&#41;
    WScript.Echo&#40;emails.length + ' emails found&#58;\n\n' + emails.join&#40;'\n'&#41;&#41;
    ie.Quit&#40;&#41;
  </script>
</job>
Δεν πρόκειται για πλήρες πρόγραμμα, αλλά μόνο για το κομμάτι που κατεβάζει μια σελίδα και αναζητά emails. Η σελίδα που κατεβάζει είναι η email-antispam-02.php.htm, που αποτελεί το output του PHP script του cpulse.

Αν σώσετε το παραπάνω ρομποτάκι σε ένα αρχείο με κατάληξη .wsf (π.χ. Robot.wsf) και το τρέξετε με διπλό κλικ, θα εμφανιστούν τα εξής μηνύματα:

Εικόνα Εικόνα Εικόνα Εικόνα
The pure and simple truth is rarely pure and never simple. Ο μη νους δε σκέπτεται μη σκέψεις για το τίποτα.

Άβαταρ μέλους
cpulse
Script Master
Δημοσιεύσεις: 1527
Εγγραφή: 21 Μαρ 2006 19:30
Τοποθεσία: Αθήνα village
Επικοινωνία:

Απόκρυψη διευθύνσεων email με JavaScript

Δημοσίευση από cpulse » 28 Οκτ 2006 19:09

Έλα μωρέ.. και τι έγινε.. έτσι κι αλλιώς το 2008 θα κόβω βόλτες με το yaught στο Αιγαίο να προλάβω να χαρώ την ζωή πριν το 2012 που θα έρθει το τέλος του κόσμου.. το έχει πει ο Λιακόπουλος! :lol:

Άβαταρ μέλους
skeftomilos
Script Master
Δημοσιεύσεις: 2888
Εγγραφή: 07 Ιαν 2005 07:22
Τοποθεσία: Αθήνα

Απόκρυψη διευθύνσεων email με JavaScript

Δημοσίευση από skeftomilos » 29 Οκτ 2006 03:05

29 κατασκευαστές άλλων κόσμων συνιστούν: συντέλεια Τώρα! :P
The pure and simple truth is rarely pure and never simple. Ο μη νους δε σκέπτεται μη σκέψεις για το τίποτα.

Άβαταρ μέλους
cherouvim
Script Master
Δημοσιεύσεις: 3137
Εγγραφή: 13 Ιούλ 2005 22:56
Τοποθεσία: Athens, Greece
Επικοινωνία:

Απόκρυψη διευθύνσεων email με JavaScript

Δημοσίευση από cherouvim » 29 Οκτ 2006 04:43

Εγώ πάντως προτείνω φόρμα επικοινωνίας. Έτσι σου στέλνει και κάποιος που δεν έχει email.

Άβαταρ μέλους
skeftomilos
Script Master
Δημοσιεύσεις: 2888
Εγγραφή: 07 Ιαν 2005 07:22
Τοποθεσία: Αθήνα

Απόκρυψη διευθύνσεων email με JavaScript

Δημοσίευση από skeftomilos » 29 Οκτ 2006 12:29

Οι φόρμες επικοινωνίας είναι χρήσιμες, αλλά έχουν ορισμένα μειονεκτήματα.

- Δεν επιτρέπουν (συνήθως) μορφοποίηση του κειμένου, bolds, font-sizes κ.λπ.
- Δεν επιτρέπουν attachments (συνήθως).
- Το email δεν προστίθεται στον φάκελο των απεσταλμένων (αρχείο/searchability).
- Δεν είναι δυνατή η αποστολή Carbon Copies και Blind Carbon Copies.
- Υπάρχει το ενδεχόμενο λάθους στην πληκτρολόγηση του email του αποστολέα, με αποτέλεσμα να μη μπορεί να σταλεί η απάντηση.

Στη σελίδα contact ενός εταιρικού site μαζί με τα υπόλοιπα στοιχεία (διεύθυνση, τηλέφωνο κ.λπ.) συνήθως αναγράφεται το email, και παράλληλα υπάρχει και φόρμα επικοινωνίας. Το να αφαιρέσουμε το email για το φόβο των spammers αντιπροσωπεύει μια μικρή ήττα, έτσι δεν είναι; :-?
The pure and simple truth is rarely pure and never simple. Ο μη νους δε σκέπτεται μη σκέψεις για το τίποτα.

Άβαταρ μέλους
skeftomilos
Script Master
Δημοσιεύσεις: 2888
Εγγραφή: 07 Ιαν 2005 07:22
Τοποθεσία: Αθήνα

Απόκρυψη διευθύνσεων email με JavaScript

Δημοσίευση από skeftomilos » 29 Οκτ 2006 22:03

Ακόμα μια αποτυχημένη προσπάθεια. Εμφάνιση message box. Το ρομπότ θα δυσκολευτεί να πατήσει το OK:

Κώδικας: Επιλογή όλων

if &#40;confirm&#40;'Αποστολή email;'&#41;&#41; &#123;
  location.replace&#40;'mailto&#58;john@mail.com'&#41;
&#125;
Όμως το αντίμετρο είναι απλούστατο:

Κώδικας: Επιλογή όλων

window.confirm = function&#40;&#41; &#123;
  return true
&#125;
...ή ακόμα και αυτό:

Κώδικας: Επιλογή όλων

location.replace = function&#40;url&#41; &#123;
  if &#40;url.match&#40;/^mailto&#58;&#40;.*&#41;$/i&#41;&#41; &#123;
    // add RegExp.$1 to database
  &#125;
&#125;
Καπούτ. :(
The pure and simple truth is rarely pure and never simple. Ο μη νους δε σκέπτεται μη σκέψεις για το τίποτα.

Άβαταρ μέλους
cpulse
Script Master
Δημοσιεύσεις: 1527
Εγγραφή: 21 Μαρ 2006 19:30
Τοποθεσία: Αθήνα village
Επικοινωνία:

Απόκρυψη διευθύνσεων email με JavaScript

Δημοσίευση από cpulse » 30 Οκτ 2006 14:27

Να πω και μια ιδέα ακόμα..

Θα μπορούσε να μετριέται ο χρόνος κατά τον οποίο το mouse είναι πάνω από κάποιο link. Όταν ενεργοποιείται το link να μεταφέρει σε server side script (για να μην μπορεί να σπάσει από bot) τον χρόνο κατά τον οποίο το mouse είναι πάνω από το link. Ένας ανθρώπινος χρόνος θα μπορούσε να είναι >100msec. Ένα bot θα είχε μηδενικό onmouseover χρόνο.

Βέβαια αυτό θα αχρήστευε το tab.

Άβαταρ μέλους
skeftomilos
Script Master
Δημοσιεύσεις: 2888
Εγγραφή: 07 Ιαν 2005 07:22
Τοποθεσία: Αθήνα

Απόκρυψη διευθύνσεων email με JavaScript

Δημοσίευση από skeftomilos » 30 Οκτ 2006 18:50

cpulse έγραψε:...να μεταφέρει σε server side script τον χρόνο κατά τον οποίο το mouse είναι πάνω από το link.
Νομίζω ότι λίγο πριν τη μεταφορά μπορεί να επέμβει το bot και να κάνει τη ζημιά. Γενικά το bot δείχνει να έχει το πλεονέκτημα, γιατί μπορεί να έχει πάντα τον τελευταίο λόγο.
The pure and simple truth is rarely pure and never simple. Ο μη νους δε σκέπτεται μη σκέψεις για το τίποτα.

Άβαταρ μέλους
alkisg
Δημοσιεύσεις: 265
Εγγραφή: 03 Ιουν 2005 11:53
Τοποθεσία: Ιωάννινα
Επικοινωνία:

Απόκρυψη διευθύνσεων email με JavaScript

Δημοσίευση από alkisg » 30 Οκτ 2006 20:15

Νομίζω ότι για καλύτερη προστασία το μόνο που πρέπει να "φαίνεται" από το view source, είναι μία μόνο function, που μάλιστα να καλείται στο window.onload.

Αυτή η function να περιέχει κάποιον κρυπτογραφημένο κώδικα javascript. Με το που καλείται, τον αποκρυπτογραφεί και τον κάνει eval.
Τελικά, αυτός που κάνει όλη τη δουλειά με τις functions για τα hover και τα timeout θα πρέπει να είναι ο evaluated κώδικας (δηλαδή αυτός πρέπει να φτιάχνει και τα σχετικά events).

Θετικά:
Η κρυπτογράφηση θα γίνεται σε php, έτσι θα μπορεί να είναι διαφορετική κάθε φορά, και έτσι δε θα μπορεί να φτιαχτεί bot που να τον αποκρυπτογραφεί. Ο μόνος τρόπος αποκρυπτογράφησης θα είναι να καλεστεί η δική μας function.

Τη function έτσι κι αλλιώς την καλούμε εμείς στο window.onload, κι επομένως το bot δεν μπορεί να κάνει τίποτα αφού δεν ξέρει από πριν πως είναι ο κώδικάς μας.

Το μόνο που νομίζω ότι θα μπορούσε να κάνει κάποιος hacker, θα ήταν εκεί που κάνουμε
eval(decrypted_code)
να επέμβει στον κώδικα και να το αλλάξει σε
s = decrypted_code

και να προσπαθήσει στη συνέχεια να κάνει κατά το runtime parsing τον decrypted_code για να δει ποια είναι η παράμετρος της setTimeOut κτλ... Αλλά αν έχουμε βάλει την php να παίζει λίγο με τον κώδικα θα παιδευτεί πολύ να φτιάξει καλό parser...

Αν θέλουμε να γίνουμε παρανοϊκοί, βάζουμε στον encrypted κώδικα και πληροφορία CRC (αυτόματα μέσω php) για το innerHTML της σελίδας, οπότε αν αλλάζει έστω και κατά ένα byte τον κώδικα της javascript μας κάνοντας s = decrypted_code, να μη γίνεται σωστό decryption!!! :kaloe:

Όποιος κατάλαβε τι προσπαθούσα να πω με τα παραπάνω είναι ήδη παρανοϊκός!!! :lol:

Άβαταρ μέλους
cpulse
Script Master
Δημοσιεύσεις: 1527
Εγγραφή: 21 Μαρ 2006 19:30
Τοποθεσία: Αθήνα village
Επικοινωνία:

Απόκρυψη διευθύνσεων email με JavaScript

Δημοσίευση από cpulse » 30 Οκτ 2006 21:07

Όσοι ξέρουν κάτι από κρυπτογραφία θα χαμογελάνε με νόημα Άλκη :wink:

Το θέμα είναι αυτό που πας να φτιάξεις τι πάει να πολεμήσει..
Ένα bot που απλά ψάχνει για ένα παπάκι στο HTML source και αντιμετωπίζει το γύρω γύρω σαν email;
Ένα bot που έχει μια optimized έκδοση της JavaScript για να είναι γρήγορο;
Ένα bot που έχει μια κανονικότατη έκδοση της JavaScript και μιμείται απόλυτα τους κανονικούς browsers;
Ένα bot που όχι μόνο μιμείται απόλυτα έναν browser, αλλά και τις ανθρώπινες καθυστερήσεις και λάθη;

Δεν υπάρχει απόλυτη προστασία.. αν είναι ξύπνιος ο cracker δεν γλιτώνεις. Ίσως η τελευταία περίπτωση να παλεύεται λιγάκι.. Μπορείς πχ να έχεις ένα link στις σελίδες σου με χρώμα ίδιο με το background color και το οποίο να οδηγεί σε μια απαγορευμένη σελίδα (σαν την μηλιά του παραδείσου). Ο μόνος τρόπος να το βρεί κάποιος να είναι ένας ρομποτικός crawler. Και όποιος μπαίνει σε αυτή την απαγορευμένη σελίδα να γίνεται ban η IP του.

Ή άλλος τρόπος.. να παρακολουθείς τους χρόνους που μπαίνει μια IP από σελίδα σε σελίδα και αν ο μέσος χρόνος είναι σχεδόν 0 τότε να υποθέσεις οτι έχεις bot στον server. Αλλά ούτε αυτό πιάνει σίγουρα γιατί ένα έξυπνο bot επισκέπτεται μια σελίδα απο το site σου, μια από άλλο site, άλλη από άλλο.. και μέχρι να ξαναγυρίσει σε σένα έχει περάσει κανένα τέταρτο.

Αν παρεμπιπτόντως κάποιος θέλει να χρησιμοποιήσει τέτοια κόλπα καλό είναι να πάρει μέτρα για οδηγεί τα καλά bots όπως του google, yahoo, msn κτλ να μην πέφτουν στα ναρκοπέδια που τους στήνετε. Διαβάστε το http://www.robotstxt.org/

Άβαταρ μέλους
skeftomilos
Script Master
Δημοσιεύσεις: 2888
Εγγραφή: 07 Ιαν 2005 07:22
Τοποθεσία: Αθήνα

Απόκρυψη διευθύνσεων email με JavaScript

Δημοσίευση από skeftomilos » 30 Οκτ 2006 23:34

Πω, πω! Φοβερές ιδέες πέφτουν στο τραπέζι! Κρυπτογραφήσεις, hashing, ποντικοπαγίδες, ναρκοπέδια, ρομπο-δολώματα, τέτοια πλοκή ούτε σε σενάριο science fiction. :D

Ο spammer μπορεί να δοκιμάσει κι έναν άλλο τρόπο επίθεσης. Θα βάλει το ρομποτάκι να πατάει τα links όπως θα έκανε κι ένας άνθρωπος, με αποτέλεσμα να ανοίγει ο mail-client. Όμως δε θα ανοίγει το Outlook ή το Thunderbird αλλά ένα ελαφρύ προγραμματάκι φτιαγμένο ειδικά για την περίσταση, που θα τσιμπά το argument και θα το στέλνει στη database. Η δυσκολία θα είναι μόνο να καταφέρει να περάσει απαρατήρητο καθώς θα ελίσσεται ανάμεσα σε μαγνητικά πεδία, μαύρες τρύπες και λάκους με φίδια. :)
The pure and simple truth is rarely pure and never simple. Ο μη νους δε σκέπτεται μη σκέψεις για το τίποτα.

Άβαταρ μέλους
cpulse
Script Master
Δημοσιεύσεις: 1527
Εγγραφή: 21 Μαρ 2006 19:30
Τοποθεσία: Αθήνα village
Επικοινωνία:

Απόκρυψη διευθύνσεων email με JavaScript

Δημοσίευση από cpulse » 30 Οκτ 2006 23:59

Ο ναι!.. τα κρύπτο είναι ένας μαγικός κόσμος! Το κατατάσσεις ποιο εύκολα στην τέχνη παρά στην επιστήμη.

Λοιπόν Σκεφτόμυλε μόλις μου έδωσες και μια άλλη διάσταση στην σκέψη μου.. βάζεις 30 κινέζους κι άλλους 30 ινδούς να πατάνε τα links σε κυλιόμενο 24ωρο και τελειώνει το θέμα.. ούτε bots ούτε τίποτα. Σου έρχονται και ποιο φθηνά.

Άβαταρ μέλους
cpulse
Script Master
Δημοσιεύσεις: 1527
Εγγραφή: 21 Μαρ 2006 19:30
Τοποθεσία: Αθήνα village
Επικοινωνία:

Απόκρυψη διευθύνσεων email με JavaScript

Δημοσίευση από cpulse » 22 Νοέμ 2006 00:20

Και στις σελίδες ναρκοπέδια.. όχι μόνο κάνεις ban τις IP αλλά κάνεις κι αυτό! :

http://towerofbabel.com/antispam/

χοχοχο

Άβαταρ μέλους
skeftomilos
Script Master
Δημοσιεύσεις: 2888
Εγγραφή: 07 Ιαν 2005 07:22
Τοποθεσία: Αθήνα

Απόκρυψη διευθύνσεων email με JavaScript

Δημοσίευση από skeftomilos » 22 Νοέμ 2006 01:59

Έξυπνο! Στην πρώτη ευκαιρία θα το εφαρμόσω. :bouncy:
The pure and simple truth is rarely pure and never simple. Ο μη νους δε σκέπτεται μη σκέψεις για το τίποτα.

Άβαταρ μέλους
ThyClub
Honorary Member
Δημοσιεύσεις: 5312
Εγγραφή: 17 Νοέμ 2003 00:21
Τοποθεσία: Hell's Kitchen
Επικοινωνία:

Απόκρυψη διευθύνσεων email με JavaScript

Δημοσίευση από ThyClub » 22 Νοέμ 2006 02:44

Το είχα κάνει εν έτη 2001 και είχα μερικά emails της μορφής senator@goverment.us κτλ κτλ :)

Απάντηση

Επιστροφή στο “JavaScript και Frameworks”

Μέλη σε σύνδεση

Μέλη σε αυτήν τη Δ. Συζήτηση: Δεν υπάρχουν εγγεγραμμένα μέλη και 0 επισκέπτες