c#抓取网页数据(代码如下:5抓取网页内容-把当前会话(组图) )

优采云 发布时间: 2021-10-12 00:22

  c#抓取网页数据(代码如下:5抓取网页内容-把当前会话(组图)

)

  其次,使用 CookieContainer。

  查看普通副本到剪贴板打印?

  代码如下:

  System.Net.CookieContainer cc = new System.Net.CookieContainer();

request.CookieContainer = cc;

request2.CookieContainer = cc;

  这样,request和request2之间使用了同一个Session。如果 request 已登录,则 request2 也已登录。

  最后,如何在不同页面之间使用相同的CookieContainer。

  不同页面之间要使用同一个CookieContainer,只需要在Session中添加CookieContainer即可。

  代码如下:

  view plaincopy to clipboardprint?

Session.Add("ccc", cc); //存

CookieContainer cc = (CookieContainer)Session["ccc"]; //取

  5 抓取网页内容——将当前会话带到 WebRequest

  比如浏览器B1访问服务器端S1,这会产生一个会话,服务器端S2使用WebRequest访问服务器端S1,就会产生一个会话。当前要求WebRequest使用浏览器B1和S1之间的会话,这意味着S1应该认为B1正在访问S1,而不是S2正在访问S1。

  这是为了使用cookies。先在S1中获取SessionID为B1的Cookie,然后将这个Cookie告诉S2,S2将Cookie写入WebRequest中。

  查看普通副本到剪贴板打印?

  代码如下:

  WebRequest request = WebRequest.Create("url");

request.Headers.Add(HttpRequestHeader.Cookie, "ASPSESSIONIDSCATBTAD=KNNDKCNBONBOOBIHHHHAOKDM;");

WebResponse response = request.GetResponse();

StreamReader reader = new StreamReader(response.GetResponseStream(), System.Text.Encoding.GetEncoding("gb2312"));

Response.Write(reader.ReadToEnd());

reader.Close();

reader.Dispose();

response.Close();

  我想解释一下:

  本文不是 Cookie 欺骗,因为 SessionID 是 S1 告诉 S2 的,并没有被 S2 窃取。虽然有点奇怪,但在某些特定的应用系统中可能会有用。

  S1 必须将 Session 写入 B1,这样 SessionID 将保存在 Cookie 中,SessionID 将保持不变。

  Request.Cookies 用于在 ASP.NET 中获取 cookie。本文假设已获取 cookie。

  不同的服务器端语言对Cookie中的SessionID有不同的名称。本文为ASP SessionID。

  S1 可能不仅依赖 SessionID 来确定当前登录,还可能辅助 Referer、User-Agent 等,具体取决于 S1 终端程序的设计。

  这篇文章其实是本系列中另一种“保持登录”的方式。

  6 抓取网页内容-如何更​​改源Referer和UserAgent

  查看普通副本到剪贴板打印?

  代码如下:

  SPAN class="caution">HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create("http://127.0.0.1/index.htm");

//request.Headers.Add(HttpRequestHeader.Referer, "http://www.jb51.net/"); // 错误

//request.Headers[HttpRequestHeader.Referer] = "http://www.jb51.net/"; // 错误

request.Referer = "http://www.jb51.net/"; // 正确

  注释掉的两句错了,会报错:

  查看普通副本到剪贴板打印?

  必须使用适当的属性修改此标头。

  参数名称:名称

  必须使用适当的属性修改此标头。参数名称:名称

  UserAgent 类似。

  

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线