Realiza la solicitud como si acabara de completar el formulario. Suponiendo que es POST, por ejemplo, realiza una solicitud POST con los datos correctos. Ahora bien, si no puede iniciar sesión directamente en la misma página que desea raspar, tendrá que rastrear las cookies que se establecieron después de su solicitud de inicio de sesión e incluirlas en su solicitud de raspado para permitirle permanecer conectado.
Puede verse como:
HttpWebRequest http = WebRequest.Create(url) as HttpWebRequest;
http.KeepAlive = true;
http.Method = "POST";
http.ContentType = "application/x-www-form-urlencoded";
string postData="FormNameForUserId=" + strUserId + "&FormNameForPassword=" + strPassword;
byte[] dataBytes = UTF8Encoding.UTF8.GetBytes(postData);
http.ContentLength = dataBytes.Length;
using (Stream postStream = http.GetRequestStream())
{
postStream.Write(dataBytes, 0, dataBytes.Length);
}
HttpWebResponse httpResponse = http.GetResponse() as HttpWebResponse;
// Probably want to inspect the http.Headers here first
http = WebRequest.Create(url2) as HttpWebRequest;
http.CookieContainer = new CookieContainer();
http.CookieContainer.Add(httpResponse.Cookies);
HttpWebResponse httpResponse2 = http.GetResponse() as HttpWebResponse;
Maybe.
Gracias, esto parece algo que podría usar, aceptaré esta respuesta si funciona cuando regrese a la programación. :-) –
Esto funciona si la página web está en HTML simple, pero si el formulario se genera dinámicamente a través de Javascript ... ¿funcionaría esto? – Souper
@Souper probablemente no; desearía inspeccionar a mano cuáles serían las solicitudes desde el inicio de sesión hasta la página que desea raspar y luego generar solicitudes que imiten ese comportamiento. – dlamblin