在我的项目中,我想加入一组域的白名单来处理请求。它应该允许来自所列域、其子域和域中不同页面的所有请求。因此,例如,如果白名单中的域之一是example.com,则它应该服务于针对www.example.com、abc.example.com、https://abc.def.example.com、example.com/pg1等的请求。哪一个是可以用于此目的的最佳实用程序/库?或者,我需要编写自己的正则表达式吗?
example.com
www.example.com
abc.example.com
https://abc.def.example.com
example.com/pg1
pxy2qtax1#
您可以使用以下正则表达式来匹配域example.com的子域。
^([a-zA-Z0-9]+\.)*example\.com\/?.*
gfttwv5a2#
你可以使用这个python函数来检查一个url是否应该基于你的域名被允许:
def isDomainAllowed(url) domain = 'example.com' match = re.search(r'example.com', url) if match and match.group() == domain: return True return False
ccrfmcuu3#
我建议使用python lib tldextract。简单验证:
import tldextract def validate_whitelist_url(url: str) -> bool: whitelist_hosts = ["domain.com", "gmail.com"] extracted_hosts = (tldextract.extract(host) for host in whitelist_hosts) _url = tldextract.extract(url) for host in extracted_hosts: if _url.subdomain == host.subdomain and _url.domain == host.domain and _url.suffix == host.suffix: return True return False
您可以根据需要自定义验证,因为您已经将域、后缀和子域的数据分开
3条答案
按热度按时间pxy2qtax1#
您可以使用以下正则表达式来匹配域
example.com
的子域。gfttwv5a2#
你可以使用这个python函数来检查一个url是否应该基于你的域名被允许:
ccrfmcuu3#
我建议使用python lib tldextract。
简单验证:
您可以根据需要自定义验证,因为您已经将域、后缀和子域的数据分开