webclient如何获取js生成的cookie?

67676373 2010-12-03 04:04:42
html源码如下:

<html>
<head>
<script>document.cookie='abc'</script>
<script language="JavaScript" type="text/javascript" src="http://www.test.com/1.js?cookieTime=12913"></script>
</head>

<body>
hello!
</body>
</html>


上面的源码是我用webclient提交后返回的页面,是用js生成cookie的页面,请问我怎么才能执行js取到cookie呢?

各位老大给点思路吧。。
...全文
581 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
67676373 2010-12-04
  • 打赏
  • 举报
回复
主贴问题已解决。正如wuyq11 所说。结贴
67676373 2010-12-03
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 wuyq11 的回复:]

webbrower执行JS获取相关数据IHTMLWindow2 win = (IHTMLWindow2)webBrowser.Document.
Window.DomWindow; win.execScript("", "Javascript");
[/Quote]

刚试过了,不过问题又来了。。
IHTMLWindow2 win = (IHTMLWindow2)webBrowser.Document.Window.DomWindow;
win.execScript("alert('hello webbrowser')", "Javascript");

上面是可以执行的,但是换成下面的
IHTMLWindow2 win = (IHTMLWindow2)webBrowser.Document.Window.DomWindow;
win.execScript("document.cookie='abc'", "Javascript");

执行后, webBrowser.Document.Cookie 的值为null。。cookie没有写入。。。为什么??
wuyq11 2010-12-03
  • 打赏
  • 举报
回复
webbrower执行JS获取相关数据IHTMLWindow2 win = (IHTMLWindow2)webBrowser.Document.
Window.DomWindow; win.execScript("", "Javascript");
67676373 2010-12-03
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 net_lover 的回复:]

webclient都不执行代码,是无法设置cookie的。你可以使用webBrowser进行测试
[/Quote]
我用webbrowser模拟登录测试过,是可以获取到cookie的, 但是我不想用webbrowser用。

我还这样试过,我把用webclient得到的网页源码htmlcode赋值给webbrowser

webbrowser.DocumentText=htmlcode

虽然webbrowser显示页面,但却依然不能执行js。

难道没有方法能执行页面的js得到cookie吗? 我查资料查到用JsEval来执行得到的js。。但c#中不知道怎么用。

哪位老大给点建议
孟子E章 2010-12-03
  • 打赏
  • 举报
回复
webclient都不执行代码,是无法设置cookie的。你可以使用webBrowser进行测试
67676373 2010-12-03
  • 打赏
  • 举报
回复
楼上的给出的是什么。。晕

string htmlcode =Encoding.UTF8.GetString(webclient.UploadData(new Uri("http://test/login"), "post", byteArray))

在winform中,我用上面的提交代码得到了 网页源码, 以前我都是用
webclient..ResponseHeaders["Set-Cookie"]
来获取cookie,但这次 cookie是由返回页面里的js代码生成,请问我如何取呢?
cxx1997 2010-12-03
  • 打赏
  • 举报
回复
<script type="text/javascript">
//js获取cookie
var acookie=document.cookie.split("; ");
function getck(sname)
{//获取单个cookies
for(var i=0;i<acookie.length;i++){
var arr=acookie[i].split("=");
if(sname==arr[0]){
if(arr.length>1)
return unescape(arr[1]);
else
return "";
}}
return "";
}

110,534

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧