c# 模拟登录帐号登录网站得不到应该有的数据

songsz123 songsz123 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
c#模拟登录知乎:const string Url = @"http://www.zhihu.com/login";
处理的大概流程也知道,就是用程序模拟浏览器,发送request,然后得到response,继而得到相应的html数据进行分析。
网上看了好多,用起来感觉不是很适应,大多都是应用cookies获取,我想先不用太复杂,直接帐号密码登录获取页面就行了,最后获取的html保存为html后如下所示:


可实际上我想得到最终的html是这样的


我的代码
        public static string SendRequest()
{
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(Url);
//CookieContainer cc = new CookieContainer();

//---simulate account:
request.Method = "POST";
//request.ContentType = "";
//request.CookieContainer = cc;
string data = "_xsrf:aaaanumber&" +
"email:my@mail.com&" +
"password:password&" +
"rememberme:y";
data = HttpUtility.UrlEncode(data);
byte[] postdata = Encoding.UTF8.GetBytes(data);
request.Credentials = CredentialCache.DefaultCredentials;
request.ContentLength = postdata.Length;
request.AllowAutoRedirect = false;
request.KeepAlive = true;

using (Stream stream = request.GetRequestStream())
{
stream.Write(postdata, 0, postdata.Length);
stream.Close();
}

HttpWebResponse res = (HttpWebResponse)request.GetResponse();
//res.Cookies = cc.GetCookies(request.RequestUri);

// return response;
string htmlData = string.Empty;
Stream datastream = res.GetResponseStream();
if (datastream != null)
{
var reader = new StreamReader(datastream);
htmlData = reader.ReadToEnd();
reader.Close();
datastream.Close();
}
res.Close();
return htmlData;

}
...全文

相关推荐

评论 4
收藏 已收藏
分享
返回顶部
songsz123
C# 111,128 成员 642,536 内容