正则表达式过滤 Urls 中的电子邮件地址
Regex to filter email address in Urls
我需要过滤掉我们 url 中包含电子邮件地址或任何个人信息的垃圾邮件请求。
例如:如果有人输入 url
www.mydomain.com/en-us?email=abc@gmail.com
它应该重定向到
www.mydomain.com/en-us?email=
[使用正则表达式对电子邮件进行模式匹配并将其删除]
基本上它应该保持 url 不变并删除 emailaddress
另一个例子
重定向
www.mydomain.com/en-us/sompePage/SomeStructure?query=abc.gmail.com
到
www.mydomain.com/en-us/sompePage/SomeStructure?query=
这是我试过的:
(http|https)://mydomain.com/(^((?!\.)[\w-_.]*[^.])(@\w+)(\.\w+(\.\w+)?[^.\W])$
但抛出错误
背景故事和推理,如果有兴趣
我们查看了 google 分析并意识到我们的网站正在获取一个带有随机查询字符串的随机电子邮件地址。但是 Google 将它们标记为存储个人信息,因此将其视为违反政策。 Sl 我们正在尝试在 akamai 中放置一些正则表达式,以便这些请求永远不会到达服务器。
(我们也有后备 javascript 来处理同样的问题)
你的例子对问题的解释不是很好。主要问题是如何确定要删除的 'mail'。
我会采取其他方法:
use strict;
use warnings;
use Data::Dumper;
my $debug = 0;
my %url;
while( <DATA> ) {
print if $debug;
chomp;
m|(https{0,1})://([\w\d\.]+)/(.*)\?(.*)|;
@url{qw(proto dn path query)} = (,,,);
print Dumper(\%url) if $debug;
# now do whatever your heart desire with $url{query}
$url{query} =~ /(.*=)/;
$url{query} = ;
print Dumper(\%url) if $debug;
printf "%s://%s/%s/%s\n",
$url{proto}, # protocol
$url{dn}, # domain name
$url{path}, # directory path
$url{query}; # query
}
__DATA__
http://www.example.org/en-us?email=abc@gmail.com
https://www.example.org/en-us/sompePage/SomeStructure?query=abc.gmail.com
好吧,我再次阅读了您的问题,并意识到 akamai 可能只允许修改正则表达式,不包括完整的 perl 脚本。
那么您要查找的可能是 s|=.*|=|
或 s/=.*/=/
use strict;
use warnings;
while( <DATA> ) {
s|=.*|=|;
print;
}
__DATA__
www.mydomain.com/en-us?email=abc@gmail.com
www.mydomain.com/en-us/sompePage/SomeStructure?query=abc.gmail.com
但此方法同样无法识别查询中的电子邮件。你的问题不完整,无法对问题做出全面判断。
您可以尝试 s/[\w\d\.\-]+@[\w\d\.]+//
作为 电子邮件 匹配替代正则表达式。
Email::Valid contains a regex for validating an email address 的代码。它比大多数人想象的要复杂得多:-)
编辑:
仔细一看,我忘了我们已经添加了正则表达式匹配。我们的 RegEx 引擎默认使用 PCRE 语法,因此理论上您可以在整个查询字符串中进行全面匹配:
提交前在登台平台上仔细检查和测试。并仔细检查 RegEx。我从 emailregex.com 那里拿来的,并没有自己测试。
原文:
借助 Akamai,属性 Manager 工具可让您使用新规则执行此操作。您应该在部署前检查文档和测试,或咨询您的客户团队以了解更具体的问题。
在规则中,您需要为查询字符串添加一个匹配项,如下所示:
从那里添加行为,让 Akamai 平台执行您想要的操作。如果它是一个简单的重定向,那么您可以使用重定向行为并完全删除查询字符串。是这样的:
如信息框所述,Redirector Cloudlet 可能会更好地处理此特定用例。但是一旦匹配了该查询字符串,您就可以做很多事情。
我需要过滤掉我们 url 中包含电子邮件地址或任何个人信息的垃圾邮件请求。
例如:如果有人输入 url
www.mydomain.com/en-us?email=abc@gmail.com
它应该重定向到
www.mydomain.com/en-us?email=
[使用正则表达式对电子邮件进行模式匹配并将其删除] 基本上它应该保持 url 不变并删除 emailaddress
另一个例子
重定向
www.mydomain.com/en-us/sompePage/SomeStructure?query=abc.gmail.com
到
www.mydomain.com/en-us/sompePage/SomeStructure?query=
这是我试过的:
(http|https)://mydomain.com/(^((?!\.)[\w-_.]*[^.])(@\w+)(\.\w+(\.\w+)?[^.\W])$
但抛出错误
背景故事和推理,如果有兴趣
我们查看了 google 分析并意识到我们的网站正在获取一个带有随机查询字符串的随机电子邮件地址。但是 Google 将它们标记为存储个人信息,因此将其视为违反政策。 Sl 我们正在尝试在 akamai 中放置一些正则表达式,以便这些请求永远不会到达服务器。 (我们也有后备 javascript 来处理同样的问题)
你的例子对问题的解释不是很好。主要问题是如何确定要删除的 'mail'。
我会采取其他方法:
use strict;
use warnings;
use Data::Dumper;
my $debug = 0;
my %url;
while( <DATA> ) {
print if $debug;
chomp;
m|(https{0,1})://([\w\d\.]+)/(.*)\?(.*)|;
@url{qw(proto dn path query)} = (,,,);
print Dumper(\%url) if $debug;
# now do whatever your heart desire with $url{query}
$url{query} =~ /(.*=)/;
$url{query} = ;
print Dumper(\%url) if $debug;
printf "%s://%s/%s/%s\n",
$url{proto}, # protocol
$url{dn}, # domain name
$url{path}, # directory path
$url{query}; # query
}
__DATA__
http://www.example.org/en-us?email=abc@gmail.com
https://www.example.org/en-us/sompePage/SomeStructure?query=abc.gmail.com
好吧,我再次阅读了您的问题,并意识到 akamai 可能只允许修改正则表达式,不包括完整的 perl 脚本。
那么您要查找的可能是 s|=.*|=|
或 s/=.*/=/
use strict;
use warnings;
while( <DATA> ) {
s|=.*|=|;
print;
}
__DATA__
www.mydomain.com/en-us?email=abc@gmail.com
www.mydomain.com/en-us/sompePage/SomeStructure?query=abc.gmail.com
但此方法同样无法识别查询中的电子邮件。你的问题不完整,无法对问题做出全面判断。
您可以尝试 s/[\w\d\.\-]+@[\w\d\.]+//
作为 电子邮件 匹配替代正则表达式。
Email::Valid contains a regex for validating an email address 的代码。它比大多数人想象的要复杂得多:-)
编辑:
仔细一看,我忘了我们已经添加了正则表达式匹配。我们的 RegEx 引擎默认使用 PCRE 语法,因此理论上您可以在整个查询字符串中进行全面匹配:
提交前在登台平台上仔细检查和测试。并仔细检查 RegEx。我从 emailregex.com 那里拿来的,并没有自己测试。
原文:
借助 Akamai,属性 Manager 工具可让您使用新规则执行此操作。您应该在部署前检查文档和测试,或咨询您的客户团队以了解更具体的问题。
在规则中,您需要为查询字符串添加一个匹配项,如下所示:
从那里添加行为,让 Akamai 平台执行您想要的操作。如果它是一个简单的重定向,那么您可以使用重定向行为并完全删除查询字符串。是这样的:
如信息框所述,Redirector Cloudlet 可能会更好地处理此特定用例。但是一旦匹配了该查询字符串,您就可以做很多事情。