iCal from API GET AirBnb returns "The remote server returned an error: (403) Forbidden" ASP.NET

iCal from API GET AirBnb returns "The remote server returned an error: (403) Forbidden" ASP.NET

我想从提供 AirBnb 的 iCal 导入日期。 我正在开发 ASP.NET MVC 应用程序,其中包含一些名为 iCal.Net.

的金块

代码:

public ActionResult Index()
    {

        const string airbnbCalendar = "https://www.airbnb.com/calendar/ical/1111111.ics?s=zkdjhfkjsdzkhfkkjsadjkfhskjdfhjk";

        Calendar calendar;
        using (var client = new WebClient())
        {
            byte[] file = null;

            file = client.DownloadData(airbnbCalendar);
            Stream stream = new MemoryStream(file);
            calendar = Calendar.Load(stream);
        }

        return View();
    }

我在行 client.DownloadData(airbnbCalendar):

上收到错误

The remote server returned an error: (403) Forbidden

我用谷歌搜索了一下,发现出于某种原因,我必须 "imitate" 一个网络浏览器才能满足该请求。这是 link 到 airbnb forum

如何将我的请求转换为 CURL 请求?为了 airbnb 给我正确的数据?

P.S。当我将 airbnb url 复制到浏览器时,我得到了正确的 .ics 文件

出于安全原因,我更改了 url 地址。

User-Agent 通过 request-header 传输。因此,将适当的 header 添加到网络客户端,如图所示 here.

这是我特别添加的并且有效:

webClient.Headers.Add("user-agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.2; .NET CLR 1.0.3705;)");

我将 request.UserAgent = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.138 Safari/537.36"; 添加到我的 HttpWebRequest 对象,以便从爱彼迎下载 iCal 数据