如何从 XHR GET 请求的查询字符串中恢复隐藏的 ID?

How to recover a hidden ID from a query string from an XHR GET request?

我正在尝试使用隐藏的爱彼迎 api。我需要对 GET 请求的查询字符串中 ID 的来源进行逆向工程。例如,拿这个清单:

https://www.airbnb.ca/rooms/47452643

“public”ID 显示为 47452643。但是,需要另一个 ID 才能使用 API。

如果您查看 Chrome 中的 XHR 请求,您会看到一个以“StaysPdpSections?operationName”开头的请求。这是我要复制的请求。如果我在 Insomnia 或 Postman 中复制请求,我会在查询字符串中看到一个以以下开头的变量:

"变量":"{"id":"U3RheUxpc3Rpbmc6NDc0NTI2NDM="

隐藏ID“U3RheUxpc3Rpbmc6NDc0NTI2NDM”正是我所需要的。它需要从此请求中获取数据,并且必须插入到查询字符串中。如何动态恢复每个列表的隐藏 ID“U3RheUxpc3Rpbmc6NDc0NTI2NDM”?

那个目标 id 被深深地埋在 html 中......

import requests
from bs4 import BeautifulSoup as bs
import json

url = 'https://www.airbnb.ca/rooms/47452643'
req = requests.get(url)

soup = bs(req.content, 'html.parser')
script = soup.select_one('script[type="application/json"][id="data-state"]')
data = json.loads(script.text)

target  = data.get('niobeMinimalClientData')[2][1]['variables']
print(target.get('id'))

输出:

U3RheUxpc3Rpbmc6NDc0NTI2NDM=