Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/email/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何混淆';自由输入';Django中的文本字段_Django_Email_Automation_Obfuscation_Textile - Fatal编程技术网

如何混淆';自由输入';Django中的文本字段

如何混淆';自由输入';Django中的文本字段,django,email,automation,obfuscation,textile,Django,Email,Automation,Obfuscation,Textile,在我的模型中,我经常使用文本字段来包含大块的纺织格式输入。我想自动混淆输入到这些文本字段中的任何电子邮件地址,这样当它们打印在模板中时,蜘蛛就看不到它们 有没有一个聪明的方法可以做到这一点 更新: 根据lazerscience下面的回答,这就是我最终使用的代码。我将文件命名为encode_mailto.py,并将其放在templatetags目录中,在我安装到大多数django项目中的“utilities”类型的应用程序中 重新导入 随机输入 从django.utils.safestring导入

在我的模型中,我经常使用文本字段来包含大块的纺织格式输入。我想自动混淆输入到这些文本字段中的任何电子邮件地址,这样当它们打印在模板中时,蜘蛛就看不到它们

有没有一个聪明的方法可以做到这一点

更新:

根据lazerscience下面的回答,这就是我最终使用的代码。我将文件命名为encode_mailto.py,并将其放在templatetags目录中,在我安装到大多数django项目中的“utilities”类型的应用程序中

重新导入
随机输入
从django.utils.safestring导入标记_safe
从django导入模板
register=template.Library()
email\u link\u pat=re.compile(r')是可以使用的东西

诀窍是添加一个电子邮件混淆代码,这将使您的电子邮件地址难以使用非js客户端捕获


将其添加为middlware,或者更确切地说,添加为一个simpletag,它可以作用于包含纺织品数据的对象。

如果您只想将其用作模板标记过滤器:

import re
import random
from django.utils.safestring import mark_safe


email_link_pat = re.compile(r'<a\s+href=("|\')?mailto:[^>]+>[^<]*</a>')
email_pat = re.compile(r'\b[-.\w]+@[-.\w]+\.[a-z]{2,4}\b')

def get_script(m):
    code_list = []
    for c in m.group(0):
        d = ord(c)
        x = random.randint(0, d)
        code_list.append("%d+%d" % (x, d-x))

    return '<script type="text/javascript">document.write(String.fromCharCode(%s))</script>' % \
        ",".join(code_list)

@register.filter
def encode_mailto(text):
    text = email_link_pat.sub(get_script, text)
    text = email_pat.sub(get_script, text)
    return mark_safe(text)
重新导入
随机输入
从django.utils.safestring导入标记_safe
email_link_pat=re.compile(r'| encode_mailto}
您可以使用。首先,安装它:

$ pip install django-email-obfuscator
然后,将
email\u obfuscator
添加到
settings.py中的
INSTALLED\u APPS

INSTALLED_APPS = (
    # ...
    'email_obfuscator',
)
在模板中,您可以使用
obfuscate
过滤器保护电子邮件地址:

{% load email_obfuscator %}
{{ 'your@email.com'|obfuscate }}

很好,谢谢。我更新了我的问题,描述了我是如何在我的项目中使用这种方法的。据我所知,django电子邮件模糊器只能模糊普通的电子邮件地址,没有(html)文本块。。。?!
INSTALLED_APPS = (
    # ...
    'email_obfuscator',
)
{% load email_obfuscator %}
{{ 'your@email.com'|obfuscate }}