c httpclient抓取网页(转发其他道友的文章需要发送自己的Cookietruetrue)

优采云 发布时间: 2022-01-01 02:13

  c httpclient抓取网页(转发其他道友的文章需要发送自己的Cookietruetrue)

  以下是转发其他dao朋友的文章,主要是在使用过程中,需要向目标服务器发送自定义cookie,但是死活发送不了,最后百度的其他道友文章发现如果需要自己发cookies,需要做个设置:

  var handler = new HttpClientHandler() { UseCookies = false};

var client = new HttpClient(handler);// { BaseAddress = baseAddress };

  道友文章地址:原文如下:

  一般有两种方式

  第一类handler.UseCookies=true(默认为true),默认会自带cookies,例如

  var handler = new HttpClientHandler() { UseCookies = true };

var client = new HttpClient(handler);// { BaseAddress = baseAddress };

client.DefaultRequestHeaders.Add("user-agent", "Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:57.0) Gecko/20100101 Firefox/57.0");

client.DefaultRequestHeaders.Add("Connection", "Keep-Alive");

client.DefaultRequestHeaders.Add("Keep-Alive", "timeout=600");

var content = new FormUrlEncodedContent(new[]

{

new KeyValuePair("email", "xxxx"),

new KeyValuePair("password", "xxxx"),

});

var result = await client.PostAsync("https://www.xxxx.com/cp/login", content);

result.EnsureSuccessStatusCode();

  这种情况下,post请求登录成功后,会跳转到另一个页面,cookies也会自动带上。如果handler.UseCookies设置为false,登录后重定向不会自动带cookies,直接跳转到登录页面。

  第二个设置handler.UseCookies = false,需要手动在headers中添加cookies。

  var handler = new HttpClientHandler() { UseCookies = false};

var client = new HttpClient(handler);// { BaseAddress = baseAddress };

var message = new HttpRequestMessage(HttpMethod.Get, url);

message.Headers.Add("Cookie", "session_id=7258abbd1544b6c530a9f406d3e600239bd788fb");

var result = await client.SendAsync(message);

result.EnsureSuccessStatusCode();

  如果使用场景是:抓取需要登录的网页数据,推荐使用第一种方式,不设置任何cookies,httpclient登录后会在后续请求中自动放置cookies。

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线