Jas*_*ith 37 language-agnostic url sanitization spam-prevention
如何检测(使用正则表达式或启发式方法)一个文本字符串中的网站链接,例如注释?
目的是防止垃圾邮件.HTML被剥离,所以我需要检测复制和粘贴的邀请. 垃圾邮件发送者发布链接应该不经济,因为大多数用户无法成功访问该页面.我想要有关最佳实践的建议,参考或讨论.
一些目标:
http://some-fqdn/some/valid/path.ext
)http://
前缀(即有效的FQDN +有效的HTTP路径)当然,我阻止垃圾邮件,但可以使用相同的过程来自动链接文本.
以下是我在想的一些事情.
www .example.com
"吗?普通用户是否知道自己删除空间,或者做任何浏览器"做什么意思"并为你剥离它?我已经阅读了这些内容,现在它们已在此处记录,因此您可以根据需要参考这些问题中的正则表达式.
哇,我在这里列出了一些非常好的启发式方法!对我来说,最好的砰砰声是以下综合:
这应该使垃圾邮件发送者的CPM足够低,以满足我的需求; "旗帜不合适"的用户反馈应该抓住其他任何东西.列出的其他解决方案也非常有用:
Jon*_*ght 19
我正在集中力量避免垃圾邮件发送者.这导致两个子假设:因此使用该系统的人将主动尝试违反您的检查,并且您的目标只是检测URL的存在,而不是提取完整的URL.如果您的目标是其他目标,这个解决方案会有所不同.
我认为你最好的选择是TLD.有两个字母的ccTLD和(目前)比较小的其他名单.这些需要以点为前缀,并以斜杠或某些单词边界为后缀.正如其他人所指出的那样,这并不完美.没有办法获得"buyfunkypharmaceuticals.它",而不会放弃合法的"我再试一次.它不起作用"或类似的东西.所有这些都说,这将是我的建议:
[^\b]\.([a-zA-Z]{2}|aero|asia|biz|cat|com|coop|edu|gov|info|int|jobs|mil|mobi|museum|name|net|org|pro|tel|travel)[\b/]
Run Code Online (Sandbox Code Playgroud)
这将得到的东西:
一旦人们开始混淆他们的URL,替换".",它当然会中断.用"点".但是,再次假设垃圾邮件发送者是你的目标,如果他们开始做这样的事情,他们的点击率将下降几个数量级的零.一组人告知足以对网址进行反混淆处理,而且我认为,无法通知足够访问垃圾网站的人群是一个微不足道的交叉点.此解决方案应该允许您检测可复制并粘贴到地址栏的所有URL,同时将附带损害保持在最低限度.
我知道这对自动链接文本没有帮助,但如果你搜索并用一个看起来像是同一个东西的字符替换所有的句号,比如希伯来点hiriq(U + 05B4)的unicode字符怎么办?
以下段落是一个例子:
这可能会起作用ִ期间看起来有点奇怪,但它仍然可读ִ当然的好处是任何复制和粘贴wwwִgoogleִcom的人都不会太ִ:)