问题描述
- HttpWebRequest cookie 问题
-
在写一个 网站的模拟登录。但是在登录过程中发现一个问题。
无法获取cookie 的全部信息。
如图途中 slt 的内容是在每次是否能登录的关键。而他又是动态的。目前已知 每天更新。
我想在 项目里直接通过动态的方式 来先把 slt value拿到。在执行登录操作。
解决方案
slt这个cookie值是登陆后注册后才生成的。。你将email和密码用webrequest post发送到https://www.hammocktrader.com/Login.asp这个接口,同时设置好cookietainer接受返回的cookie值,后续的请求在附带上这个cookie
楼主先搞清楚什么是模拟登陆,你都没登陆就像直接获取登录后的相关信息。。
Set-Cookie slt=2E692F63-47FA-402C-8086-005F2E4BE2E0; expires=Mon, 27 Apr 2015 12:19:44 UTC; path=/; HttpOnly vsettings=; expires=Wed, 20-Apr-2016 07:00:00 GMT; path=/ CustomerID=6F19F597E36D9F658E5233F7477638E761D6C7A2C079694859E34ABF17C1CEEF; expires=Wed, 20-Apr-2016 07:00:00 GMT; path=/
解决方案二:
一般cookie使用有两种情况导致无法使用,一是cookie声明的域不对称.浏览器没有把cookie post上来.二是浏览器安全设置禁止了cookie使用.
解决方案三:
cookieContainer.Add(new Cookie { Name = "slt", Value = "D4408553-D77B-4164-826A-66697418B9FF", Path = "/", Domain = "www.hammocktrader.com" });
cookieContainer.Add(new Cookie { Name = "vsettings", Value = "", Path = "/", Domain = "www.hammocktrader.com" });
cookieContainer.Add(new Cookie { Name = "CustomerID", Value = "F58660ABCE8B601F1C341F13C831520E8A3CAF20C8DAC36C0B35B32A3569D00C", Path = "/", Domain = "www.hammocktrader.com" });
_html = DataGatherUtil.UtilClass.Post("https://www.hammocktrader.com/Login.asp"
, ""
, ref cookieContainer
, "email=....................................................Login=Login&CalledBy=Register.asp&CustomerNewOld=old"
, "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:37.0) Gecko/20100101 Firefox/37.0"
, "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8"
, "application/x-www-form-urlencoded");
这个是我现在的代码块。如果 将指插入到 cookie中可以正常登录 。
解决方案四:
那么为什么为在 没登陆的情况下也可以看见 slt ?
解决方案五:
问题中的图片 就是未登录状态。
解决方案六:
不可能拿不到,肯定是你的流程控制不对。或者你没有完全模拟浏览器参数