我正在尝试使用get请求调用此终结点。https://disneyland.disney.go.com/availability-calendar/api/calendar?segment=ticket&startDate=2022-09-01&endDate=2022-09-30
当使用没有auth头文件而只有'Host'头文件的Postman时,请求成功并返回一个包含正确正文的200响应。
Postman 图像预览
示例正文:
[
{
"date": "2022-09-01",
"availability": "full",
"parks": [
"DLR_CA",
"DLR_DP"
]
},
{
"date": "2022-09-02",
"availability": "full",
"parks": [
"DLR_CA",
"DLR_DP"
]
},
{
"date": "2022-09-03",
"availability": "full",
"parks": [
"DLR_CA",
"DLR_DP"
]
}
]
但是,在cURL或另一个HTTP客户端中使用相同的请求时,我得到了包含以下内容的403响应:
请求:curl --location --request GET 'https://disneyland.disney.go.com/availability-calendar/api/calendar?segment=ticket&startDate=2022-09-01&endDate=2022-09-30'
回应:
<HTML><HEAD>
<TITLE>Access Denied</TITLE>
</HEAD><BODY>
<H1>Access Denied</H1>
You don't have permission to access "http://disneyland.disney.go.com/availability-calendar/api/calendar?" on this server.<P>
Reference #18.b5fa3b17.1661136664.2e1059d6
</BODY>
</HTML>
我只是不明白为什么请求会在Postman中工作,而不是在cURL中工作,Postman是否发送了某种必需的cookie或其他东西?
1条答案
按热度按时间rm5edbpk1#
是的,你的猜测是正确的。在Postman中,如果你点击“发送”按钮下的“Cookies”,你会看到已经有一些Cookies保存了。
迪士尼正在使用Akamai这样的服务来防止爬虫程序/抓取器淹没他们的服务器。当你发出请求时,他们会用一些必需的参数来响应,例如_abck,ak_bmsc,bm_sz等。
如果没有这些参数,您的请求将被阻止(因此,当您cURL页面时,您将看到这样的结果)。