You can tell Google in your HTML markup to ignore a section of HTML.
<!-- googleoff: all-->
<a href="mailto:user%40email.com" title="email user">[email protected]</a>
<a href="tel:+123456789" title="call user">+123456789</a>
<!-- googleon: all-->
That will prevent that piece of HTML from appearing in the cache or being indexed. It offers no security and is only supported by Google.
You can perform Javascript based obfuscation of the email. Here is a jQuery plugin that does that.
https://github.com/mikebranski/jquery-nospam
Alternately, you can do the opposite and share contact information in a way they can index more effectively. Using the hCard microdata format.
http://microformats.org/wiki/hCard
The only way to prevent webcrawlers from accessing this information is to only show it to authorized user sessions that have been verified as humam. Even that is a challenge.
@
in the email address?mailto
URI. Between the local-part and the domain-part there needs to be a@
character. If the local-part contains a@
, it needs to be percent-encoded (%40
) and the local-part needs to be enclosed in quotation marks (%22
) (there may also be other ways, e.g. backslash escaping, but I didn’t check that).