Profruit banner

Умен звънец в openHAB

16 декември 2023

Телефонът е винаги с мен и сега, където и да се намирам получавам известие от openHAB, че някой е позвънил и чака пред вратата. А ако ме няма вкъщи става ясно часа и датата на последното позвъняване.

Tasmota Multipress

30 септември 2023

Идеята е Sonoff Touch T1 US 2 в салона, да управлява освен своето осветление и това в кухнята, а още вентилатора.

DIY 12V 1A WiFi Router UPS

22 април 2023

При поредно прекъсване на захранването вкъщи, батерията на нoтбука и двата UPS автоматично превключват на аварийно захранване и едновременно полита съобщение за конфуза

Zigbee2MQTT клониране

21 януари 2023

... как да клонираме съществуваща настройка на Zigbee2MQTT без да се налага последвало интервю на zigbee-устройствата.

LD2410 - бюджетен датчик присъствие в openHAB

11 февруари 2023

Цената на HLK-LD2410 зададе име на поредната тема в моя блог. С негова помощ се постига "народен" датчик присъствие в домашната автоматизация. . ...


Известно е, че пряк начин за колекция на e-mail адреси от спамърите е преглед на изходния html код на страниците. С помощта на регулярен израз извличат e-mail адрес/и и го добавят в своя база данни. Успехът им е наличие на определена последователност символи, включващи @ (задължителен атрибут за сформиране на пощенски адрес), а цел на това действие изпитваме всички ние, получавайки писма с предложение да си увеличим члена, купим изгодно виагра или подобно малоумие.


Madonna - Miles Away
Всичко започва от начина по-който обявяваме електронния си адрес, а HTML учи, че се постига така:
HTML код
<a href="mailto:name@address.domain">Контакт</a>
Визуализация в браузъра
Спам-робота (за краткост бот) посещава вашата страница. Вижда изходния код. Стига израз mailto:name@address.domain. Забира го за себе си и си отива. На свой ред мислим как да предотвратим тази неправда известна още като обфускация на e-mail адрес

Начин 1

Това е най-простия начин и той идва пръв на ум - представа на адрес, чрез графическо изображение. На нужно място, чрез html код слагаме картинка с надпис адреса. Веднага лъсват следните минуси. Пропада възможността да кликаме по линк на адреса, задействайки пощенския клиент на системата. Copy-paste също е натирен в немилост. При режим на браузъра изключени картинки вашият адрес става невидим, а указването му в атрибут alt е тъпо.
Достойнство на този метод идва само от ползване на любим шрифт
HTML код
<img src="image.png" alt="email address" title="email address" />
Визуализация в браузъра
email address

Начин 2

Прибягна се до обявяване на e-mail адреса по екзотичен начин - name@address.domain става на name [at] address [dot] domain. Тук стандартния синтаксис се замени с нестандартен. За голяма група интернет-юзери това е откровена тъпня, а закачена на претендиращ сайт - два пъти повече такава.
HTML код
<p>name [at] address [dot] domain</p>
Визуализация в браузъра
name [at] address [dot] domain

Начин 3

Тук наблюдаваме интересен случай. Обръщаме name@address.domain в niamod.sserdda@eman с помощта на PHP функция strrev(), а после прекарваме през свойствата на CSS (unicode-bidi и direction) и постигаме огледален образ на текста. Ботът е заблуден на практика, но доброжелателния потребител също. При Copy-Paste нещата остават обърнати отзад напред. Замисълът пропада.
PHP код
<p style="unicode-bidi: bidi-override; direction: rtl;">
<?=strrev("name@address.domain") ?>
</p>
Визуализация в браузъра
niamod.sserdda@eman
Изходен код
<p>niamod.sserdda@eman</p>

Начин 4

Продължаваме на вълна PHP. Това е култов език за мен. Базови знания в стил процедурно програмиране ни дават възможност да маскираме адреса си по следния начин.

Друга възможност да скрием адреса се свежда до алтернативен синтаксис (мнемоники/entitles-символи), основан на кодиране на символите в вид &#ANSI_код_на_символа (numeric character reference). Браузърите умеят да четат подобен код напряко. Генерацията на подобен код ще доверим на PHP.

Два цикъла ще сравняват дължината на променливите в началото на скрипта. При всеки обход ще връщат html значение на символа върнат от функция ord(). Изходът ще се формира от конкатенация и voila. Имаме кодиран адрес. Ботът в случая ще вижда изходния код.
PHP код
<?php
$email = 'name@address.domain';
$url = 'name@address.domain';
$safe_email='';
$safe_url='';
for($i=0; $i<strlen($email); $i++){
   $safe_email .= '&#'.ord($email{$i}).';';
}
for($i=0; $i<strlen($url); $i++){
   $safe_url .= '&#'.ord($url{$i}).';';
}
 echo "<a href='$safe_url'>$safe_email</a>";
Визуализация в браузъра
Изходен код
ascii code
Достойнства: лека автоматизация, независимост от параметри включена графика или JavaScript в браузъра на потребителя.
Главен минус е, че ботовете станаха по-умни. Те се научиха да четат алтернативно представяне на адреса.

Начин 5

Всички пътеки водят в Рим. А умните казват, че надежен способ за обфускация на e-mail лежи на JavaScript. Засега ботовете са безсилни да интерпретират JavaScript код. Стига да не са заточени под определена страница.

Мързеливият начин ме караше да прекарам HTML кода през този on-line енкодер.
Енкодерът спестява писане на код подобен в начин 4. Тук конкатенация върши подобен израз: $safe_email.='%'.dechex(ord($email{$i}));
JavaScript код
<scriрt type="text/javascriрt">doсument.write(unescaрe('%3C%61%20%68%72%65%66%3D%22%6D%61%69%6C%74%6F%3A%6E%61%6D%65%40%61%64%64%72%65%73%73%2E%64%6F%6D%61%69%6E%22%3E%6E%61%6D%65%40%61%64%64%72%65%73%73%2E%64%6F%6D%61%69%6E%3C%2F%61%3E'));</scriрt>
Визуализация в браузъра
Изходен код
<scriрt type="text/javascriрt">doсument.write(unescaрe('%3C%61%20%68%72%65%66%3D%22%6D%61%69%6C%74%6F%3A%6E%61%6D%65%40%61%64%64%72%65%73%73%2E%64%6F%6D%61%69%6E%22%3E%6E%61%6D%65%40%61%64%64%72%65%73%73%2E%64%6F%6D%61%69%6E%3C%2F%61%3E'));</scriрt>
Този начин ползва JS-функция unescape(), която връща символ по HEX-значение на неговия ASCII-код в ISO Latin-1 кодировкa.

Чета предположения, че някои антивирусни програми подозират сайта за атакуващ при подобен запис. Windows си е windows, там всичко пищи. От естетическа гледна точка през погледа на web-дизайнера, кодът изглежда изродски. Печели с бързина и простота на изпълнението. Колкото толкова.

Начин 6

Тук постигаме замисъла с jQuery. Това е начина чрез когото съм прикрил адреса в блога си (горно меню, бутон Контакт).
JavaScript код
<script type="text/javascript">
 $(document).ready(function(){
  var Con = document.getElementById('promail');
  if(Con){
   var Link = document.createElement('a'); 
   var Parts = ['ma','ilto:na','me','@add','ress.domain'];
   Link.href = Parts[0]+Parts[1]+Parts[2]+Parts[3]+Parts[4];
   var Mail = ['na','me','@add','ress.domain'];
   var aMail= Mail[0]+Mail[1]+Mail[2]+Mail[3];
   var Text = document.createTextNode(aMail);
   Con.appendChild(Link);
   Link.appendChild(Text);
  }
 });
</script>

<p>пишете на <span id="promail"></span></p>
Визуализация в браузъра
Изходен код
<p>пишете на <span id="promail"></span></p>
Нещата тук се постигат динамично. След като се зареди документа, jQuery прихваща идентификатора от таг span и го подлага на проверка за съществуване. В променливи Parts и Mail раздробяваме адреса. Това са масиви, които събираме обратно в цяло. Ясно е, че между кавичките трябва да поставите вашия текущ адрес. За финал формираме html кода с метод appendChild(), който формира между тагове span потомък (дъщерен елемент) с хиперлинк към пощенския адрес. В нужно място на вашата страница поставете параграфа с вложени тагове span и готово.

С посочените примери не се изчерпва темата и те са по-скоро авторска практика.





до нови срещи   ^.^
14.10.2011 profruit 


|

3 Response to "Защита на email адрес от сканиране"

  1. зайче Said,

    Това е много ценно :)

     

  2. Profruit Said,

    Не засегнах начина на обявяване с флаш, но там съм много на Вие. jQuery ми е слабост и последния начин е заявена гордост на умения. Очаквай още ценни пинизи, само време не стига.

     

  3. зайче Said,

    А едно време се оплаквах, че в пощата ми нямам нито едно спам писмо XD

     

Публикуване на коментар

Този блог е реинкарнация на първите ми опити за споделяне в нета. На времето започнах с къси разкази на преживяното. После се обезсмисли и превърнах блога си в системно радио. Пиша единствено неща, които карат душата ми да живее: openHAB, Ubuntu, Споделено и т.н. Това е моето системно радио, разбирате ли? Моята вълна и вие сте на нея сега.

Архив на блога