如何从 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=
我正在尝试使用隐藏的爱彼迎 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=