【发布时间】:2022-09-26 06:52:35
【问题描述】:
我正在尝试刮 AirBNB通过普通的 HTTP 请求并注意到了一些东西。
假设我们使用这个搜索字符串:\"纽约,纽约,美国\"。
我可以用来获得所需结果的最简单的工作请求(从不必要的标题和字段中删除)是:
GET /api/v3/ExploreSections?operationName=ExploreSections&locale=en¤cy=USD&variables=%7B%22isInitialLoad%22%3Atrue%2C%22hasLoggedIn%22%3Afalse%2C%22cdnCacheSafe%22%3Afalse%2C%22source%22%3A%22EXPLORE%22%2C%22exploreRequest%22%3A%7B%22metadataOnly%22%3Afalse%2C%22version%22%3A%221.8.3%22%2C%22itemsPerGrid%22%3A20%2C%22placeId%22%3A%22ChIJOwg_06VPwokRYv534QaPC8g%22%2C%22query%22%3A%22New%20York%2C%20New%20York%2C%20United%20States%22%2C%22cdnCacheSafe%22%3Afalse%2C%22screenSize%22%3A%22large%22%2C%22isInitialLoad%22%3Atrue%2C%22hasLoggedIn%22%3Afalse%7D%2C%22removeDuplicatedParams%22%3Atrue%7D&extensions=%7B%22persistedQuery%22%3A%7B%22version%22%3A1%2C%22sha256Hash%22%3A%2282cc0732fe2a6993a26859942d1342b6e42830704b1005aeb2d25f78732275e7%22%7D%7D HTTP/2
Host: www.airbnb.com
X-Airbnb-Api-Key: d306zoyjsyarp7ifhu67rjxn52tv0t20
Accept-Encoding: gzip, deflate
此时,该 API 密钥几乎是公开的,因此不必担心。
\"variables\" 参数的可读内容是这样的:
{ \"isInitialLoad\": true, \"hasLoggedIn\": false, \"cdnCacheSafe\": false, \"source\": \"EXPLORE\", \"exploreRequest\": { \"metadataOnly\": false, \"version\": \"1.8.3\", \"itemsPerGrid\": 20, \"placeId\": \"ChIJOwg_06VPwokRYv534QaPC8g\", \"query\": \"New York, New York, United States\", \"cdnCacheSafe\": false, \"screenSize\": \"large\", \"isInitialLoad\": true, \"hasLoggedIn\": false }, \"removeDuplicatedParams\": true }\"extensions\" 参数的可读内容是这样的:
{ \"persistedQuery\": { \"version\": 1, \"sha256Hash\": \"82cc0732fe2a6993a26859942d1342b6e42830704b1005aeb2d25f78732275e7\" } }我试图弄清楚那个哈希是从哪里来的。
它似乎是从 GraphQL 查询中计算出来的,但我不知道其他任何东西,也没有关于它的文档。
有什么帮助吗?
标签: web-scraping graphql airbnb-js-styleguide