Python 无法从网站获取API密钥的值

Python 无法从网站获取API密钥的值,python,python-3.x,web-scraping,Python,Python 3.x,Web Scraping,我试图从中获取标题中可用的API键的值。重新加载页面后,可以在标题中使用找到API键的值 在dev tools中,我发现API键和值所在的标题如下所示: Accept: application/json Content-Type: application/json Referer: https://www.pinnacle.com/en/ Sec-Fetch-Mode: cors User-Agent: Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.3

我试图从中获取标题中可用的API键的值。重新加载页面后,可以在标题中使用找到API键的值

在dev tools中,我发现API键和值所在的标题如下所示:

Accept: application/json
Content-Type: application/json
Referer: https://www.pinnacle.com/en/
Sec-Fetch-Mode: cors
User-Agent: Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/76.0.3809.100 Safari/537.36
X-API-Key: CmX2KcMrXuFmNg6YFbmTxE0y9CIrOi0R
X-Device-UUID: 3a10d97d-5dc63d32-9b562999-2a023260
但是,当我使用第二个链接打印标题时,我会得到除该API键之外的以下项目

{'Date': 'Tue, 20 Aug 2019 03:53:47 GMT', 'Content-Type': 'application/problem+json', 'Content-Length': '119', 'Connection': 'keep-alive', 'Set-Cookie': '__cfduid=d43bcbb47c4b830f22e994d7311c5f37d1566273227; expires=Wed, 19-Aug-20 03:53:47 GMT; path=/; domain=.pinnacle.com; HttpOnly', 'Access-Control-Allow-Origin': '*', 'Access-Control-Allow-Methods': 'HEAD, GET, POST, PUT, DELETE, OPTIONS', 'Access-Control-Allow-Headers': 'Accept, Content-Type, X-API-Key, X-Device-UUID, X-Session, X-Language', 'Access-Control-Max-Age': '86400', 'Cache-Control': 'no-cache', 'CF-Cache-Status': 'MISS', 'Expect-CT': 'max-age=604800, report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'Vary': 'Accept-Encoding', 'Server': 'cloudflare', 'CF-RAY': '50916c15eb6ee03b-DFW'}
我试过:

import requests
from bs4 import BeautifulSoup

link = 'https://guest.api.arcadia.pinnacle.com/0.1/sports/33/markets/live/straight'

res = requests.get(link)
print(res.headers)

如何从该站点获取API密钥的值?

我们来分析一下“请求”是如何工作的

当你说:

res = requests.get(link)

这意味着您正在向API服务器发送一个请求——您应该在这里提供API密钥。它不应该是“requests”在请求后收到的内容,而是请求执行请求所需的内容。

您发布的第一个片段包含请求标题,而第二个片段包含响应。我从服务器上检查了响应标题。我没有看到任何X-API-Key或X-Device-UUID字段……这就是我要说的。为什么响应头包含API键?你是应该在请求中发送这些的人。我明白你的意思@Selcuk。我认为API密钥可能在页面源或脚本标记中,我可以使用一个请求解析该密钥,然后在另一个请求中再次发送该密钥。页面源可能将API密钥存储在某个位置,但它仍会在请求头中发送到后端服务器。在响应标题中找到它是非常不寻常的。