最新消息:20210917 已从crifan.com换到crifan.org

【已解决】如何获得网页重定向过程中的cookie信息

Web crifan 4143浏览 0评论

【问题】

用C#代码实现访问一个网页,但是其中该网页会重定向到另外一个地址。

而在重定向之前,根据分析工具分析而得之,会返回对应的cookie信息,此处包含了登陆认证相关的cookie信息。

所以此处需要获得此信息用于后来继续访问相关网页。

但是由于网页重定向了,所以所得到的响应的头部中的cookie信息,已经没了对应的认证信息,所以,想要想办法去获得,在网页重定向的过程中,那些对应的cookie信息。

【解决过程】

网上找了一番,没啥本质帮助。

后来还是自己折腾出来结果了。

其实方法很简单,那就是,在提交网页请求之前,把允许自动重定向,设置为false,即不允许自动重定向,然后获得的响应的头信心中,就包含了我们所需要的cookie信息了。

更加详细的用代码解释为:

原来C#中访问该网页的时候,对应的设置为:

req = (HttpWebRequest)WebRequest.Create(srfUpostUrl);

req.AllowAutoRedirect = true;

然后获得的response就是:

resp = (HttpWebResponse)req.GetResponse();

其所包含的resp.Cookies中,就只是重定向之后的cookie信息了。

 

而通过在访问网页之前,设置为:

req.AllowAutoRedirect = false;

然后得到的resp.Cookies,就是没有重定向的,我所期望的包含认证信息的cookie了。

 

对应地,对于重定向之后的地址,我们还有手动的调用代码去访问一次,这样才能真正模拟网页的过程。

 

【题外话:顺便解决了之前困扰很久的一个问题,那就是直接读取重定向后的内容,其中包含非常多的”\0”字符的问题】

对于上面所说的,第一次的网页请求,如果设置为允许自动重定向的话,那么所得到的response body data,即html源码内容,就包含了非常多的”\0”字符,多达2,3MB,而本身html源码就60多KB左右。

对此,一直没有啥解决办法,但是经过上面无意间为了获得重定向的cookie的值,将一次的允许重定向的http请求,分成两次单独的http请求,而使得最后返回的html源码的数据,是期望的60KB,而没有包含多达2,3MB的”\0”的无效数据。

转载请注明:在路上 » 【已解决】如何获得网页重定向过程中的cookie信息

发表我的评论
取消评论

表情

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址
91 queries in 0.176 seconds, using 23.32MB memory