使用 C# 以编程方式登录网页

log in to a web page programatically using C#

我想登录网页 http://abc/mypage/config/login.aspx and fetch html of http://abc/mypage/config/config.aspx 页面。我已经使用 webrequest 并尝试过,但我总是获得登录页面 html。

WebRequest request = WebRequest.Create("http://abc/mypage/config/login.aspx");
request.Method = "POST";

string postData = "usernameTextBox=myUsername&passwordTextBox=myPassword";
byte[] byteArray = Encoding.UTF8.GetBytes(postData);
request.ContentType = "application/x-www-form-urlencoded";
request.ContentLength = byteArray.Length;
Stream dataStream = request.GetRequestStream();
dataStream.Write(byteArray, 0, byteArray.Length);
dataStream.Close();
WebResponse response = request.GetResponse();
dataStream = response.GetResponseStream();
StreamReader reader = new StreamReader(dataStream);
string responseFromServer = reader.ReadToEnd();
reader.Close();
dataStream.Close();
response.Close();

我对此请求的 header 是:

Accept
text/html,application/xhtml+xml,application/xml;q=0.9,/;q=0.8 Accept-Encoding gzip, deflate Accept-Language en-US,en;q=0.5 Connection keep-alive Cookie
ASP.NET_SessionId=nyifft45s13wni45bw0qer3z Host
192.168.174.16 Referer http://abc/mypage/config/login.aspx User-Agent Mozilla/5.0 (Windows NT 6.1; WOW64; rv:39.0) Gecko/20100101 Firefox/39.0

我需要通过此页面登录并获取 config.aspx 页面的 html。

如有任何帮助,我们将不胜感激。

谢谢。

根据您的代码和aspx页面,我猜该网站正在使用表单身份验证。 尝试添加一个 cookiecontainer

    Cookiecontainer cookies = new Cookiecontainer();

   //login request to get authentication cookies.
    WebRequest request = WebRequest.Create("http://abc/mypage/config/login.aspx");
    request.Method = "POST";
    request.cookiecontainer = cookies

    //your rest of the code

  //content request to get what you need
  WebRequest request = WebRequest.Create("http://abc/mypage/config/config.aspx");
    request.Method = "POST";
    request.cookiecontainer = cookies

   //same as before

如果身份验证是通过 cookie 进行的,您应该得到您需要的东西。