我做了一些搜索,并没有完全弄清楚为什么我的解决方案无法正常工作。基本上我需要一个字符串(这是HTML代码)解析它并查找mailto链接(然后我想要替换为混淆的一部分)。以下是我迄今:在C#中匹配URL编码的电子邮件地址#
string text = "<p>Some Person<br /> Person's Position<br />p. 123-456-7890<br /> e. <a title=\"Email Some Person\" target=\"_blank\" href=\"mailto:someperson%40domain.com\">[email protected]</a></p>";
text = Server.UrlDecode(text);
string safeEmails = Regex.Replace(text, "(<a href=\"mailto:)(.*?)(%40)(.*?)(\">)(.*?)(</a>)", "<a class=\"mailme\" href=\"$2*$4\">$6</a>");
Response.Write(Server.HtmlDecode(safeEmails));
的文本出来一个所见即所得的文本编辑器(Telrik RadEditor对于熟悉)和用于所有意图和目的,我没有获得能够控制什么正在走出来。
基本上我需要找到并更换:
<a href="mailto:someone%40domain.com">[email protected]</a>
有了:
<a class="mailme" href="[email protected]">[email protected]</a>
一些背景:我试图创建一个mailto链接,将避免收割机检测。问题是我收到一封带有电子邮件的字符串作为标准的mailto链接。我无法控制传入的字符串,所以mailto将始终是未受保护的mailto。我的目标是找到它们,混淆它们,然后使用JavaScript来“修复”链接,以便人类访问者可以轻松使用mailto链接。我接受新方法以及修改上述代码。
提醒我一首歌。你可以做的任何事情都可以做得更好。那是那个吗?请记住,您的资源有限。收割机倾向于无限的资源。 – btlog 2011-03-25 20:39:06
电子邮件劫机者不仅限于在您的hrefs中寻找_mailto:_前缀... – canon 2011-03-25 20:39:39
你们两个都有非常有效的要点,但他们都不能帮助我。我试图混淆mailto,因为那是我能找的唯一的东西。真正的问题是,我似乎无法让.Net找到与其中的URL编码电子邮件匹配。 – jkinz 2011-03-27 15:12:07