curl 抱歉,您没有权限访问该版块API调用问题

x7yiwoj4  于 2022-11-13  发布在  其他
关注(0)|答案(1)|浏览(274)

我正在尝试使用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&#58;&#47;&#47;disneyland&#46;disney&#46;go&#46;com&#47;availability&#45;calendar&#47;api&#47;calendar&#63;" on this server.<P>
Reference&#32;&#35;18&#46;b5fa3b17&#46;1661136664&#46;2e1059d6
</BODY>
</HTML>

我只是不明白为什么请求会在Postman中工作,而不是在cURL中工作,Postman是否发送了某种必需的cookie或其他东西?

rm5edbpk

rm5edbpk1#

是的,你的猜测是正确的。在Postman中,如果你点击“发送”按钮下的“Cookies”,你会看到已经有一些Cookies保存了。
迪士尼正在使用Akamai这样的服务来防止爬虫程序/抓取器淹没他们的服务器。当你发出请求时,他们会用一些必需的参数来响应,例如_abck,ak_bmsc,bm_sz等。
如果没有这些参数,您的请求将被阻止(因此,当您cURL页面时,您将看到这样的结果)。

相关问题