Faresti la richiesta come se avessi appena compilato il modulo. Supponendo che sia POST ad esempio, si effettua una richiesta POST con i dati corretti. Ora se non riesci ad accedere direttamente alla stessa pagina che vuoi analizzare, dovrai tracciare i cookie impostati dopo la tua richiesta di accesso e includerli nella richiesta di scraping per permetterti di rimanere loggato.
Potrebbe essere:
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;
Forse.
Grazie, questo sembra qualcosa che potrei usare, accetterò questa risposta se funziona quando torno alla programmazione. :-) –
Funziona se la pagina Web è in HTML semplice, ma se il modulo viene generato dinamicamente tramite Javascript .... dovrebbe funzionare? – Souper
@Souper probabilmente no; vorresti controllare a mano quali sarebbero le richieste che vanno dall'accesso alla pagina che vuoi analizzare e poi creare richieste che imitano quel comportamento. – dlamblin