使文字“不可读”

时间:2015-11-27 17:18:49

标签: javascript html css web

我处于一种奇怪的境地,我必须在网页上输入我的姓名和联系信息,我觉得这很好,只要文本无法通过机器人阅读,复制等等。

基本上我想要的是一个看起来像普通文本的文本块,但行为就像一个图像。但是,我不能使用实际图像,因为背景和其他东西阻止了我。

有没有办法克服我的这个问题?我想我可以向后键入所有内容并使用一个控制字符来反转文本方向...或者我可以在某些方面在真实字符之间添加不可见字母,这样文本仍然可以被人类读取,但不能被网站爬虫读取

编辑:澄清一下,如果某个智能机器人真的想要抓取我的信息,那么它将不会是世界末日。我只是想让它变得足够困难,以便抓取网站的第一个随机机器人不会立即获取我的信息。

编辑2:伟大而有趣的答案。其他地方也可能需要这些想法!

5 个答案:

答案 0 :(得分:2)

xyz@example.com:

<span style="unicode-bidi:bidi-override; direction: rtl;">
moc.elpmaxe@zyx
</span>

另请参阅:https://superuser.com/questions/235937/does-e-mail-address-obfuscation-actually-work

但是,你需要小心。 当您反转字符串时,例如"Les Mise\u0301rables""selbare\u0301siM seL"。这应该像

一样呈现
  

selbarésiMseL

,不喜欢

  

selbaŕesiMSeL

(注意重音的位置)。如果你只是做new string("bla".ToCharArray().Reverse()),那么这会弄乱你的字符串,即使用精确的技术术语,错误。

这就是如何正确反转字符串:

using System;
using System.Collections.Generic;
using System.Globalization;
using System.Linq;

public static class Test
{
    private static IEnumerable<string> GraphemeClusters(this string s)      
    {
        var enumerator = StringInfo.GetTextElementEnumerator(s);
        while(enumerator.MoveNext()) {
            yield return (string)enumerator.Current;
        }
    }
    private static string ReverseGraphemeClusters(this string s) {
        return string.Join("", s.GraphemeClusters().Reverse().ToArray());
    }

    public static void Main()
    {
        var s = "Les Mise\u0301rables";
        var r = s.ReverseGraphemeClusters();
        Console.WriteLine(r);
    }
}

答案 1 :(得分:1)

这样的事情应该有效:

.hiddenemail::before{
    content: "myemailtohide"
}
.hiddenemail::after {
    content: "emaildomain.com"
}

<p class="hiddenemail">@</p>

伪类:before和:after不在dom中,不应该对机器人可见。 之所以我将地址拆分为两部分,是为了防止嗅到普通CSS文件的一些正则表达式。

答案 2 :(得分:0)

如果您可以要求用户与该网页进行互动以显示您的地址,那么您可以使用recaptcha的mailhide。它要求用户单击“显示地址”链接/按钮,然后使用验证码对其进行测试。

答案 3 :(得分:0)

要明确:如果它作为文本在网络上,机器人可以阅读它。绝对没有办法解决这个问题。您可以使用robots.txt文件要求他们不要阅读它,但恶意机器人会忽略它。您可以使用Javascript隐藏它,但现代机器人可以执行脚本。简而言之,您要求的内容无法完成。

我真的没有看到使用图片时出现的问题。 PNG上的一点透明度可以让你的背景显示得很好。话虽如此,请记住,垃圾邮件机器人可以并且确实使用OCR来读取图像中的文本;如果您试图避免被垃圾邮件发送者逮捕,那么您唯一真正的选择就是不要首先发布您的详细信息。

如果您试图对其进行模糊处理以使其难以阅读,那么您最接近的是SVG图像,其中文本字符使用向量手动构建,而不是映射到已知字体。垃圾邮件发送者&#39; OCR脚本可能会遇到这种情况,而且它具有可扩展性和背景良好透明度的优势。但它真的有点过分了。

答案 4 :(得分:0)

这是一个提供有关protecting your number and email from spambots的良好信息的网站。尽管仍然容易受到推荐,但推荐的方法是使用javascript实现。

无论您实施哪种方法,您的信息(在网络上发布时)都是可收获的。