【问题标题】:How to get the IP address or range of a Firebase functions? [duplicate]如何获取 Firebase 功能的 IP 地址或范围? [复制]
【发布时间】:2018-05-06 23:04:11
【问题描述】:

如果我们想在项目中获取 Firebase 函数的 IP 地址或范围,我们该怎么做? 因为我们必须为特定的服务器权限提供这个 IP 范围。

【问题讨论】:

  • 酷,太棒了。谢谢。
  • @FrankvanPuffelen 所以 Firebase IP 地址可能会随着时间的推移而改变?我想使用 IP 过滤共享对 ElasticSearch 实例的访问权限,这样我就可以简单地将 Firebase Functions IP 添加到 ElasticSearch 端的 IP 地址白名单中。这可以解决此类问题吗?

标签: firebase google-cloud-functions


【解决方案1】:

使用此代码获取实际的 ips 列表

from dns import resolver
import ipaddress
import re


domain_pattern = re.compile('(([\da-zA-Z_])([_\w-]{,62})\.){,127}(([\da-zA-Z])[_\w-]{,61})?([\da-zA-Z]\.((xn\-\-[a-zA-Z\d]+)|([a-zA-Z\d]{2,})))$', re.IGNORECASE)


def parse_spf(domain):
    ips = set()
    answers = resolver.query(domain.strip(), "TXT")
    for rdata in answers:
        splitted = rdata.to_text().split(' ')
        for split in splitted:
            split = split.strip()

            if split.startswith('ip4:') or split.startswith('ip6:'):
                split = split.lstrip('ip4:')
                split = split.lstrip('ip6:')

                try:
                    ipaddress.ip_address(split)
                    ips.add(split)
                    continue
                except ValueError:
                    pass

                try:
                    ipaddress.ip_network(split)
                    ips.add(split)
                    continue
                except ValueError:
                    pass

            if split.startswith('include:'):
                split = split.lstrip('include:')
                if domain_pattern.match(split):
                    ips.update(parse_spf(split))
                    continue

            print("Unrecognized entry", split)

    return ips


if __name__ == "__main__":
    domain = '_cloud-netblocks.googleusercontent.com'

    ips = parse_spf(domain=domain)

    for ip in ips:
        print(ip)

【讨论】:

    【解决方案2】:

    在您的函数中,请求 http://httpbin.org/ip 以获取您的 IP 地址。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-03-19
      • 1970-01-01
      • 1970-01-01
      • 2018-06-10
      • 2011-10-06
      • 2018-10-08
      • 1970-01-01
      相关资源
      最近更新 更多