0

我写在这里是因为我试图向服务器 api 发送一个 POST 请求,
我还尝试发送另一个请求(第一个)并从它的响应中工作({"success":"true", "role":"USER"})。但是在第二个请求中作为响应,我得到:{"timestamp":1524589409895,"status":403,"error":"Forbidden","message":"Invalid CSRF Token 'null' was found on the request parameter '_csrf' or header 'X-XSRF-TOKEN'.","path":"/api/v1/rec"}
所以我放了所有的cookie,但其中一个“XSRF -TOKEN”导致我的程序崩溃System.Net.CookieException: The 'Name'='XSRF -TOKEN' part of the cookie is invalid
,所以我发现每次创建会话时这个cookie都会改变,
所以我尝试从第一条消息的响应中获取cookie并添加第二个的标头,这是结果

我还将 NETFramework 设置为 4.5 版本
我在这里为您留下一个临时帐户,因此您可以尝试此操作,而无需仅为
来自 firefox 的测试请求有效负载创建帐户

static void Main(string[] args)
{
    Uri uri = new Uri("https://www.vcast.it/api/v1/rec");
    cookieContainer = new CookieContainer();
    cookieContainer.Add(uri, new Cookie("CONSENT", "true"));
    cookieContainer.Add(uri, new Cookie("_ga", "GA1.2.940742918.1524584758"));
    cookieContainer.Add(uri, new Cookie("_gid", "GA1.2.1691132054.1524584758"));
    cookieContainer.Add(uri, new Cookie("remember-me", "Z1hvUnJoOHdIM3dCZ2pmYXVKamFRUT09OkpxSXUzRDVRUXd6UG14eGlVUlJMOXc9PQ"));

    clienthandler = new HttpClientHandler { AllowAutoRedirect = true, UseCookies = true, CookieContainer = cookieContainer };
    client = new HttpClient(clienthandler);
    client.DefaultRequestHeaders.Host = "www.vcast.it";

    MainAsync();
}
private static CookieContainer cookieContainer;
private static HttpClientHandler clienthandler;
private static HttpClient client;

static async void MainAsync()
{
    Uri uri = new Uri("https://www.vcast.it");
    var values = new Dictionary<string, string>
    {
       { "username", "XXXX" },
       { "password", "XXXX" },
       { "remember-me", "undefined" },
       { "submit", "" }
    };
    var content = new FormUrlEncodedContent(values);
    HttpResponseMessage response = await client.PostAsync("https://www.vcast.it/apiLogin?appId=58aef0c4ea5d52b2c0e4f2ed", content);
    Console.WriteLine(await response.Content.ReadAsStringAsync());

    Console.WriteLine("New Cookies:");
    var responseCookies = cookieContainer.GetCookies(uri).Cast<Cookie>();
    foreach (var cook in responseCookies)
    {
        cookieContainer.Add(uri, cook);
        Console.WriteLine(cook.Name + ":" + cook.Value);
    }

    Console.WriteLine();
    clienthandler = new HttpClientHandler { UseCookies = true, CookieContainer = cookieContainer };
    client = new HttpClient(clienthandler);

    values = JsonConvert.DeserializeObject<Dictionary<string, string>>("{\"name\":\"Titolo registrazione\",\"fromSuggestion\":false,\"manual\":true,\"followSeries\":false,\"resolution\":\"r576\",\"format\":\"MP4\",\"defaultProvider\":\"vcloud\",\"provider\":\"vcloud\",\"channelId\":\"58138235c9e77c00018242ed\",\"startDate\":1524585300000,\"endDate\":1524588900000,\"startHour\":17,\"startMinute\":55,\"endHour\":18,\"endMinute\":55}");
    content = new FormUrlEncodedContent(values);
    client.DefaultRequestHeaders.Referrer = new Uri("https://www.vcast.it/manualRec/");
    response = await client.PostAsync("https://www.vcast.it/api/v1/rec", content);

    Console.WriteLine(await response.Content.ReadAsStringAsync());
}

我很乐意接受任何评论或回答

4

0 回答 0