gpt4 book ai didi

django - 如何混淆 Django 中 'free input' 文本字段中包含的电子邮件地址

转载 作者:行者123 更新时间:2023-12-01 22:58:39 25 4
gpt4 key购买 nike

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

有什么聪明的方法可以做到这一点吗?

更新:

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

import re
import random
from django.utils.safestring import mark_safe
from django import template
register = template.Library()

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)

def encode_mailto(text):
text = email_link_pat.sub(get_script, text)
text = email_pat.sub(get_script, text)
return mark_safe(text)

register.filter('encode_mailto', encode_mailto)</pre>

然后在模板中使用它,如下所示:

{% load encode_mailto %}
{{"A bunch of text with an email address emailaddress@host.com"|encode_mailto }}

最佳答案

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

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)

然后您可以在模板中使用它,例如:

{{ "<a href='mailto:mail@email.com'>Send Mail</a>"|encode_mailto }}

关于django - 如何混淆 Django 中 'free input' 文本字段中包含的电子邮件地址,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2864215/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com