FCC 国家宽带地图 API 端点是否正常工作?

问题描述 投票:0回答:1

我对 FCC 国家宽带地图 API 连接进行故障排除已经有一段时间了,我相信BDC 公共数据 API 规范中列出的端点不可用/损坏/关闭。当我调用该端点时,我无法收到任何响应(成功或失败)。

我使用以下代码来发出 GET 请求:

import requests

#API Base URL
base_url = "https://broadbandmap.fcc.gov/api/public/map"

#User Credentials
username = "[email protected]"
with open("token.txt", "r") as file: #token.txt contains hash_value from FCC Website
    hash_value = file.read().strip()

#3.1 View list of "As Of Dates"
list_as_of_dates_url = f"{base_url}/listAsOfDates"
print(list_as_of_dates_url)
list_as_of_dates_headers = {"username":username, "hash_value":hash_value}
print("Making GET request to provided URL")
list_as_of_dates_response = requests.get(list_as_of_dates_url, headers=list_as_of_dates_headers)
print("GET Request complete.")
print('3.1 View List of "As Of Dates" Response: ', list_as_of_dates_response.json())

该脚本永远不会打印“GET 请求完成”,因为它在 GET 请求期间无限期挂起。输出:

我还尝试将

list_as_of_dates_url
粘贴到浏览器的 URL 行中,并手动将“用户名”和“hash_value”键值对添加到浏览器的网络控制台标头部分。当我这样做时,我收到以下错误:

“Refused to connect to 'https://broadbandmap.fcc.gov/api/public/map/listAsOfDates' because it violates the following Content Security Policy directive: "default-src  'none'". Note that 'connect-src' was not explicitly set, so 'default-src' is used as a fallback.”

“Refused to connect to 'https://broadbandmap.fcc.gov/api/public/map/listAsOfDates' because it violates the document's Content Security Policy.”

API 规范未提及任何设置 connect-src。

此外,使用网站上的数据下载门户手动下载数据时,基本请求 URL 为“https://broadbandmap.fcc.gov/nbm/map/api/”。我尝试编辑 API 请求 URL 以匹配 GUI 下载的基本 URL,但没有成功。

有人成功使用过国家宽带地图API吗?如果是,您使用了什么端点 URL?

python python-requests get
1个回答
0
投票

我已经遇到过这个问题几次,它归结为两件事之一,两者都与过滤有关。

情况一:

如果您尝试从 AWS 访问该网站,我无法以任何方式使其正常工作。我现在就这个问题向 FCC 开出了一张罚单,如果我听到任何消息,我会报告。

情况2:

如果您在本地计算机上工作,则似乎存在某种过滤。我发现的最简单的方法是将用户代理修改为不同的字符串。这是我使用过并且运行良好的一些示例代码:

s = requests.Session()
s.headers.clear()
s.headers.update({'username': '[email protected]'})
s.headers.update({'hash_value': *redacted*'})
s.headers.update({'user-agent': 'play/0.0.0'})
url = "https://broadbandmap.fcc.gov/api/public/map/listAsOfDates"
r = s.get(url, timeout=5)

我的工作 Github 上还有更多代码片段:npappin-wsu/caiAnalysis

希望这有帮助!

© www.soinside.com 2019 - 2024. All rights reserved.