要在.NET中使用HttpClient启用与
Cloud
flare的403状态码和“请启用cookies。”一起工作的cookies,可以使用以下代码示例:
using System;
using System.Net;
using System.Net.Http;
class Program
static async System.Threading.Tasks.Task Main(string[] args)
// 创建HttpClientHandler实例
var handler = new HttpClientHandler();
// 启用自动解码压缩响应
handler.AutomaticDecompression = DecompressionMethods.GZip | DecompressionMethods.Deflate;
// 忽略SSL证书验证
handler.ServerCertificateCustomValidationCallback = HttpClientHandler.DangerousAcceptAnyServerCertificateValidator;
// 创建HttpClient实例
var httpClient = new HttpClient(handler);
// 创建Cookie容器
var cookieContainer = new CookieContainer();
handler.CookieContainer = cookieContainer;
// 设置HttpClient的BaseAddress
httpClient.BaseAddress = new Uri("https://example.com");
// 发送GET请求
var response = await httpClient.GetAsync("/");
// 如果响应状态码是403
if (response.StatusCode == HttpStatusCode.Forbidden)
// 获取Cloudflare返回的Cookie
var cloudflareCookie = cookieContainer.GetCookies(httpClient.BaseAddress)["__cfduid"];
// 添加Cloudflare Cookie到请求头
httpClient.DefaultRequestHeaders.Add("Cookie", cloudflareCookie.ToString());
// 再次发送GET请求
response = await httpClient.GetAsync("/");
// 打印响应内容
var content = await response.Content.ReadAsStringAsync();
Console.WriteLine(content);
在上面的代码示例中,我们首先创建了一个HttpClientHandler实例,并启用了自动解码压缩响应和忽略SSL证书验证。然后,我们创建了一个HttpClient实例,并将HttpClientHandler实例分配给它。接下来,我们创建了一个CookieContainer实例,并将其分配给HttpClientHandler的CookieContainer属性,以便在每个请求中使用相同的Cookie容器。
然后,我们设置了HttpClient的BaseAddress,并发送一个GET请求。如果响应状态码是403,我们从Cookie容器中获取了Cloudflare返回的Cookie,并将其添加到请求头中。然后,我们再次发送GET请求,并打印响应内容。
这样,我们就可以在.NET中使用HttpClient启用与Cloudflare的403状态码和“请启用cookies。”一起工作的cookies了。