Pull to refresh

Comments 79

перенес в Web-разработку.
UFO just landed and posted this here
спасибо, исправил. поместить, конечно же, в <noscript></noscript>.
Я бы объединил последний способ с переопределением яваскриптом Ctrl+C, чтобы нормально копировать адрес.
простите, не очень понятно про переопределение, может поясните примером?
кстати, копировать можно не только через Ctrl+C :)
Ну, я точно не помню, как это делается сырым JS, но в плагинизированном jQuery это делается довольно просто, вот, даже демо плагина весьма впечатляет)
UFO just landed and posted this here
самокритика - это хорошо, но не нужно себя так недооценивать:)))
UFO just landed and posted this here
По-моему сложнее генерировать картинку, ведь любой серверный язык может обрезать слова, а дальше мелкопорубленный e-mail вставляется в шаблон + один раз написав функцию вы ее тыкаете куда ваша душа пожелает :)
написать функцию (т.е. автоматизировать) можно любой из способов.
хотелось бы путем обсуждения выбрать лучший способ, а потом и функция будет.
UFO just landed and posted this here
3й способ, imho, не такой надежный:
- у меня, к примеру, js включен только для проверенных сайтов (таких как habr),
- не трудно написать парсер, правда скорей всего он должен быть заточен под конкретный сервис.
картинки тоже не очень трудно распознавать, но пока в инете больше половины сайтов публикуют e-mail адреса в открытом виде без каких либо ухищрений, спамеры вряд ли будут писать хитрые парсеры понимающие js и css.
а вот еще, imho, простой способ обезопаситься. к примеру вот адрес: sobaka_takaya@mail.ru, записывать его таким образом "Пишите мне на mail.ru пользователю sobaka_takaya", т.е. исключить прямую ссылку mailto, т.к. обычно боты парсят, конструкцию перед именем сервера.
Человеку так воспринимать тоже сложнее.
Еще неплохо, на мой взгляд, сделано на groups.google.com: вместо адреса показывается a...@mail.ru, ... — ссылка на форму с капчей, после ввода которой адрес становится виден.
Вот тут
и тут неплохие ресурсы для реализации защиты адреса по 1 способу)))...сам пользуюсь, так как другие,мне пока не по плечу.
Сервис http://www.mailonpix.ru — некачественный. С отключённым js получить картинку не удастся т.к. ссылка "cделать картинку" представляет из себя такой, бракованый, url: http://www.mailonpix.ru/#
)))JS не отключаю,потому и не знал про неудачу с генерацией,а вот по поводу ссылки согласен...при размещении в блоге клик по картинке отправляет на сайт изготовитель картинки...с предложением сделать себе такую же)))у мылопикча этот момент реализован грамотнее.
Ну это ни разу не проблема. Можно сохранить себе картинку на диск и вставлять по мере необходимости.
чисто внешне - mailonpix.ru создает более приятную картинку, чем mail2pic.org, имхо.
упс, не сразу заметил конструктор по оформлению пикчи)
з.ы. спасибо за ссылки на сервисы)
Почему никто не задумался над тем, что это могут быть элементарные мылосборники?
если над всем этим задумываться,придет злая тетя паранойя.)"Вы задумались?тогда мы идем к вам..."
привык заменять адрес на adress(собака)mail.ru или adress(at)mail.ru

кому надо те понимают...
парсится на ура
хоть я иногда и нахожу новые интересные замены, но почти все они эмпирически (и автоматически, что важно) легко вычленяются
ЗЫ: я не спамер ;) опыт от написания антиспам скрипта
вместо "собака" я пишу "такса" "собачечка" "дог" и т. д. и можно писать по разному иногда пишу pochta[такса]mail.ru иногда pochta(такса)mail.ru
неужели все эти написания бот тоже может учесть?, ведь их можно придумать бесконечное количество.
бесконечное количество не учтет, но варианты типа а) username(что-угодно)mail.domain и б) username[что-угодно]mail.domain чересчур стандартны, чтобы их не учесть :)
UFO just landed and posted this here
"adress(at)mail.ru" - как впрочем и xxx[at]xxx.xx удобно описываются регуярными выражениями, которые играют ключевую роль в парсинге, поэтому скорее всего такая конструкция почти ни от чего не спасет.
Пользуюсь простейшем JS-кодированием, который легко получаю тут: http://tools.xplosio.ru/maillink

Думаю, что в 99% случаев бот не распознает e-mail.
на одном из моих сайтов применяется JS-кодирование, однако спам валит периодически. возможно, боты пронюхали про эти адреса как-то еще, но лучше перестраховаться. тем более, если бот на странице нашел значек @, он может позвать хозяина (полуавтоматические собиралки).
я анализировал некоторые ТЗ на англоязычных фриланс-сайтах и форумах, поэтому утверждаю - яваскрипт парсится спам-сборщиками, а вот JS+CSS им не по зубам.

<script type="text/javascript">eval(unescape('%64%6f%63%75%6d%65%6e%74%2e%77%72%69%74%65%28%27%3c%61%20%68%72%65%66%3d%22%6d%61%69%6c%74%6f%3a%69%6e%66%6f%40%6d%61%69%6c%2e%72%75%22%3e%69%6e%66%6f%40%6d%61%69%6c%2e%72%75%3c%2f%61%3e%27%29%3b'))</script>


где тут @?

а если бот с JS движком, то он всегда может посмотреть и результат выполнения страницы. и тут уже ни css, ни js не поможет.
боту js движок в таком варианте ненужен, он может просто декодировать эту строку, так же как и html entities, а там и собака зарыта.. :)
Декодировать сможет только заточенный на эту страницу бот. Спамеры же разводят ботов общего вида: с максимальным соотношением количества найденных ящиков к стоимости бота. Поэтому-то боты общего вида и пасуют перед необычными записями e-mail.
простите, но что в этой записи необычного?
автор не первый так написал, и создатели ботов тоже не дураки и такие варианты предусматривают не в последнюю очередь, тем более что это просто url декодирование.

можно, конечно, написать свой аналог кодирования на стороне сервера и декодирования на стороне клиента, через js. Вот тут не поспоришь, бота придется затачивать под определенную страницу.
насколько я знаю, такие выражения некоторыми антивирусами считаются "потенциально опасными"...
спасибо,возьму на заметку)))пригодится для поста
К сожалению, всё вышеописанное вызывает лишь грусть.

Борьба со спамом _ДОЛЖНА_ вестись на совсем другом уровне, нежели боязнь лишний раз сообщить где-нибудь свой email-адрес.

Все эти неудобства вызваны лишь техническим несовершенством протокола SMTP, которое никто не хочет исправлять.

Ну есть ведь возможности! Пусть даже путём ломки обратной совместимости, однако сделать почту, на которую не будет приходить спам возможно!
"Все эти неудобства вызваны лишь техническим несовершенством протокола SMTP, которое никто не хочет исправлять." :)))
предложите решение , может кто и займется этим
> Борьба со спамом _ДОЛЖНА_ вестись на совсем другом уровне

она должна вестись на всех доступных уровнях, включая скрытие адреса от спамеров.

> Все эти неудобства вызваны лишь техническим несовершенством протокола SMTP

Далеко не только им. Да, протокол SMTP плох, но сделать протокол с помощью которого не будут рассылать спам невозможно.

Если возможность отправить сообщение есть у легального пользователя, значит такая же возможность есть и у спамера.

Допустим придумали некий протокол Х в котором не должно быть спама, но который позволяет Васе отправлять сообщения 10 своим друзьям (адреса которых есть в адресной книге или в истории переписки).
После того как Вася зашёл на порносайт браузером IE (потому что не знает вообще что такое браузер, а IE и интернет для него одно и тоже) js-эксплоит установил на его компе троян. Этот троян разослал по адресной книге Васи спам сообщения. Точно так же как это Вася сделал бы сам. Получатели этого спама никак не смогут отличить, что это сделал не Вася и его троян.

Одних технических мер недостаточно. Нужны законы против спамеров, принятые в большинстве стран (инернет границ не имеет и законы в отдельно взятой стране мало помогут).
Вспомнилась старая ссылка: Примите участие в коллективной атаке спаммерских баз email. Реальная возможность отомстить спаммерам!
Единственное дополнение - запретите эту фейковую страничку через robots.txt - спамботы на него плюют, а поисковики уважают и не будут индексировать это.
На cssplay.co.uk есть специальный css-шрифт. Отличная штука :)
Еще забыли вариант с кучей фейковых емэйлов (скрытых от пользователей) с пингающимися доменами.
Не очень гуманно (можно сгенерировать и реальный адрес), но, надеюсь, удорожает некоторым работу.
этот вариант я привел в комментариях чуть выше, однако он не защищает реальные e-mail, жаль.
Согласен. Хотя толк может быть если будет использоваться повсеместно. А ля стратегическое решение - может быть когда-нибудь спамеру будет дешевле (вероятнее) случайно сгенерировать валидный емэйл, чем отыскать нефейковый.
На gmail есть дополнительный способ избавиться от спама.

Допустим, у Вас есть ящик sendspamhere@gmail.com. И Вам просто необходимо оставить Ваш емейл, допустим в банке, куда они обещают Вам слать выписки. Так вот, оставляете им емейл такой: sendspamhere+bank@gmail.com
Почтовик на гугле настроен таким образом, что почта на все адреса вида логин+всечтоугодно@gmail.com приходит на логин@gmail.com

Если из банка адрес утекет к спамерам - ставите спам фильтр на адрес и имеете серьезный повод подвергнуть банк публичной обструкции.
Жаль, но это один из тех методов которые становятся неэффективными по мере их распространения.
У GMail есть одна фича действительно необычная фича — точки в имени отбрасываются, таким образом user.name, userna.me, us.ername и username это один и тот же адрес. А использование + это стандартная фича протокола. Просто о ней мало кто знает.
Если почтовый сервер не поддерживает "+" в адресе, то это бракованный сервер, так же как и форма ввода адреса не понимающая плюсы некачественная.
Думаю, что гмайлу нетрудно удостоится отдельной строчки в коде спамботов, чтобы откидывать точку.
посетила вот такая идея:

<a href=";" onclick="a='user@Xmail'; this.href='mailto:'+a.replace(/@X/g,'@');">send email</a>

Из этого получается, что в переменной a записан для робота вполне валидный адрес, который хорошо подходит под самую простую маску, то есть в случае перебора - он уйдет с "мыслью" об успешно выполненной задаче, и набьет свою базу мусорными адресами. Замена @X => @ примитивна, но мысль думаю ясна, дальше можно усложнять по желанию.
ЗЫ: Xmail.ru написал без .ru - так как фильтр хабра вне зависимости от применяемых тэгов делал из него mailto.
идея оригинальна!
увы, люди с отключенным JS отправят почту на несуществующий e-mail.
И скопировать адрес в буфер не получится.
там событие onclick, но можно написать просто document.write - разница не принципиальна.
Всем спасибо за интересные ссылки и примеры, обновил топик, дополнив его ссылками.
Узнал много нового. На хабре очень приятно делиться своими знаниями и получать за это новые.
В Smarty есть штуковина {mailto} ссылка

{mailto address="me@example.com" encode="javascript_charcode"}

превращается в:

<script type="text/javascript" language="javascript">
<!--
{document.write(String.fromCharCode(60,97, ... snipped ....60,47,97,62))}
//-->
</script>

Мне кажется это довольно удобным, хотя сам ни когда не заморачивался над кодированием электронных адресов.
Я кодирую адреса (одной строкой):

<a href="mailto:noreply@spammer.net"
onmouseover="var a=String.fromCharCode(67+47,25+92,46+61,17+84,33+65,70+27);
var b=String.fromCharCode(21+43,23+91,48+69,65+42,66+35,95+3,19+78,20+26,66+33,86+25,25+84);
this.href=['mail','to:',a,b].join('');">rukeba&lt/a>

Как работает, можно посмотреть тут: http://rukeba.com/ra/2008/03/28/nautilus-pompilius-dyhanie/
Есть templatetag для django, если кому интересно.
есть еще способ с CSS стилями, переворачивающий строку.
поясните примером, пожалуйста?
используется возможность изменить направление текста с посмощью стилей. примерно так:
[span style="direction: rtl;unicode-bidi: bidi-override;"]ur.tset@maps_on[/span]

правда, не знаю, насколько такой способ от спамеров спасает
лучший способ - не публиковать e-mail вообще, см. Википедию.
куда именно смотреть?
бывают случаи, когда не публиковать нельзя.
e-mail любому участнику можно отправить через пункт меню, не узнавая его e-mail
Я не селен в программировании, но родилась идея (может и бред?!)!
Привелек первый способ, а почему бы не полностью менять email на картинку, а какуюто его часть(и) ? например символ "@" поменять на изображение собачки (или улитки)?! что-нибудь в таком духе!
Как такой метод? У меня он генерится случайным образом..


<script language="JavaScript" type="text/javascript"><!--
function oCtn(){var mm="@"; mm=mm+"doma"; mm="r"+mm; mm=mm+"in.net"; mm="use"+mm; return mm}; function jraIpwiKsJ(){return "?Subject=testing"}; function fIb0pAzr(){status="mailto:"+oCtn()+jraIpwiKsJ()}; function n7eNcRvVwOcBzOnM(){status=""}; function ium1ySnnyegntOsozM(){this.location="mailto:"+oCtn()+jraIpwiKsJ(); return false}; document.write("<a href='mailto:[antispam_protected]' onmouseover='fIb0pAzr()' onmouseleave='n7eNcRvVwOcBzOnM()' onclick='return ium1ySnnyegntOsozM()'>"+oCtn()+"<"+"/a>");
//--></script><noscript>user®domain
Интересно, а все эти вспомогательные сервисы, которые email позволяют зашифровать, они сами emailов не собирают ли? :)
В первом способе у картинке можно проставить alt="@" и проблемы с копированием текста и с отключенными картинками снимется...
самый актуальный способ - это мэйл в картинке. можно юзать генераторы наподобие этого:
http://iframe.in/email-protector/
Я проводил несколько тестов. Регистрировал ящики на гугле, яндексе и мэйл-ру.
Часть не светил вообще нигде (не посылал никаких писем, не давал никому адрес), часть светил только среди 2-3 основных переписчиков, часть активно указывал в открытом доступе.
В результате на ВСЕ ящики постепенно начал идти спам. Все указанные службы этот спам успешно фильтровали. И, в конечном итоге, в папке Спам оказывались десятки/сотни писем в день/неделю, а во Входящих, за редчайшим исключением, только полезные письма.
Из чего я сделал вывод, что прятать адрес бесполезно. Можно спокойно его светить. Никакой практической разницы всё равно нет.
Gmail отсеевает спам очень прилично… Даже если Ваш мейл на личном домене, простая переадресация поможет.
Схема:
Мейл1 — мейл который указываете при регистрациях и т.д… Делаете на нем переадресацию на Мейл2
Мейл2 — ящик на Gmail на котором стоит форвард (переадресация) на Мейл3
Мейл3 — ящик который проверяете и с которым работаете.

Тоесть, в результате на Мейле3 получаете нормальные письма… Хотя изначально на Мейл1 Вам обычно валил страшным потоком спам.
Sign up to leave a comment.

Articles