HttpWebRequest如何应对location.href这样的JS转向?

maruto 2009-07-27 03:35:38
通过HttpWebRequest对象来获得网页源代码


string webUrl = "https://passport.TEST.com/1.asp?name=123&password=123";
HttpWebResponse res = null;
HttpWebRequest req = null;

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

req.AllowAutoRedirect = true;
req.CookieContainer = new CookieContainer();
res = (HttpWebResponse)req.GetResponse();


StreamReader strm = new StreamReader(res.GetResponseStream(),
Encoding.GetEncoding(54936));

String sContent, sTitle;
sContent = strm.ReadToEnd();
strm.Close();


发现得到的网页源代码并不是我想要的,后来抓包发现,原来这个网站在https://passport.TEST.com后面加了个转向页面,如下

<html><head><title>用户登录 </title>
<meta http-equiv=content-type content="text/html; charset=gb2312">
<META http-equiv='Pragma' content='no-cache'>
</head>
<body>
<script>

var url="./"

url=url.replace(/^\.\//gi,"http://home.test.com/");

location.href=url;

</script>

</body>
</html>


我得到的sContent是上述的字符串,但是我想获得的其实是JS转向之后的http://home.test.com/的源代码,HttpWebRequest貌似不能自动跟踪Js的转向。

有什么好的解决办法吗?
...全文
571 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
maruto 2009-07-28
  • 打赏
  • 举报
回复
4#的不好用

上面的和我的情况不一样,下面的(http://topic.csdn.net/u/20071101/16/4851a7f8-1c1a-4299-9c62-06d6c58f7b31.html)和我情况一样,但是没解答
真相重于对错 2009-07-28
  • 打赏
  • 举报
回复
webrequest 只能把网页按文本读取下来,并不能执行其中js
简单的方法就是用webbrowser ,并由它来执行其中的js ,再通过document属性获取其最后的网页
非要用webrequest的话需要你去分析其中的js
maruto 2009-07-28
  • 打赏
  • 举报
回复
谢谢楼上的提醒
biweilun 2009-07-28
  • 打赏
  • 举报
回复
4#的第一个参考你没有好好看。
对你应该有帮助,就是自己写两个Request的对象,将Cookie保留在容器中,到新的页面后如果有新Cookie内容,就Add到容器中
真相重于对错 2009-07-27
  • 打赏
  • 举报
回复
用webbrowser
wuyq11 2009-07-27
  • 打赏
  • 举报
回复
maruto 2009-07-27
  • 打赏
  • 举报
回复
你就当处理一般的网页跳转,告诉我怎么做,OK?
tootto 2009-07-27
  • 打赏
  • 举报
回复
如果HTTPS也能随便搞那么还要安全证书何用?
maruto 2009-07-27
  • 打赏
  • 举报
回复
没人知道么?

110,533

社区成员

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

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

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