regex 自定义白名单域名- Python3

jecbmhm3  于 2023-01-10  发布在  Python
关注(0)|答案(3)|浏览(118)

在我的项目中,我想加入一组域的白名单来处理请求。它应该允许来自所列域、其子域和域中不同页面的所有请求。
因此,例如,如果白名单中的域之一是example.com,则它应该服务于针对www.example.comabc.example.comhttps://abc.def.example.comexample.com/pg1等的请求。
哪一个是可以用于此目的的最佳实用程序/库?或者,我需要编写自己的正则表达式吗?

pxy2qtax

pxy2qtax1#

您可以使用以下正则表达式来匹配域example.com的子域。

^([a-zA-Z0-9]+\.)*example\.com\/?.*
gfttwv5a

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
ccrfmcuu

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

您可以根据需要自定义验证,因为您已经将域、后缀和子域的数据分开

相关问题