当页面需要登录时,如何使用c#从网页中获取HTML数据



所以基本上我希望从一个网页抓取HTML数据-问题是要访问这个页面需要登录。我已经登录了浏览器(IE),但我相信我的代码没有引用相同的浏览器,这就是为什么它需要登录。

这是我目前所做的:

        public void HTMLImport(){
        string urlAddress = "https://randomWebsite.com/reports/show_report.aspx";
        HttpWebRequest request = (HttpWebRequest)WebRequest.Create(urlAddress);
        HttpWebResponse response = (HttpWebResponse)request.GetResponse();
        if(response.StatusCode == HttpStatusCode.OK){
            Stream receiveStream = response.GetResponseStream();
            StreamReader readStream = null;
            if(response.CharacterSet == null){
                readStream = new StreamReader(receiveStream);
            }
            else{
                readStream = new StreamReader(receiveStream,Encoding.GetEncoding(response.CharacterSet));
            }
            string data = readStream.ReadToEnd();
            response.Close();
            readStream.Close();
            // This is showing the HTML data for when person is not logged in - 
            Console.WriteLine(data);

        }

你需要从你的c#代码中执行登录,也许通过将登录表单发送回具有正确凭据的服务器(在这里写代码太长了),然后读取会话cookie的响应页面(大多数登录函数将回复一个身份验证cookie,你必须在进一步的请求中包含)。

没有更多的细节,不幸的是我不能帮助更多。

要做到这一点,首先,您应该知道网站通常使用cookie来保持会话。

  1. 向web服务器发送请求并获得响应,您将在响应HEAD中找到session_id。(在。net中通常使用asp.net sessionid)。
  2. 向web服务器发送登录请求并发布用户名和密码,您应该添加ASP。
  3. 当前请求和后续请求中的NET_SessionId cookie。
  4. 发送"https://randomWebsite.com/reports/show_report.aspx"与ASP。NET_SessionId cookie,您将发现您已登录到web服务器。

相关内容

  • 没有找到相关文章

最新更新