Я использую комбинацию HtmlAgilityPack и fiddler для наблюдения за трафиком.С помощью fiddler вы можете увидеть сообщение, которое отправляется на сервер, и просто скопировать его.Затем вы можете захватить данные cookie, чтобы сохранить сеанс входа в систему.Отсюда просто нормальная навигация по сайту.
Несколько вещей, на которые стоит обратить внимание, если вы используете логин для получения данных, там может быть cookie.Если это так, вам нужно установить его в cookieContainer.Это примерная функция, которую я использую для публикации данных в URL.
private string PostWebRequestContent(Uri uri, string postData)
{
CookieContainer cookies = LoggedInCookie();
foreach (Cookie c in cookies.GetCookies(uri))
{
int i = 0;
}
HttpWebRequest req = GetWebRequest(uri);
req.CookieContainer = cookies;
req.Accept = "image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/x-ms-application, application/vnd.ms-xpsdocument, application/xaml+xml, application/x-ms-xbap, application/vnd.ms-excel, application/vnd.ms-powerpoint, application/msword, application/x-silverlight, application/vnd.xfdl; version=7.5.0.51, application/x-shockwave-flash, */*";
req.Method = "POST";
req.Headers.Add("Accept-Language: en-us");
//req.Headers.Add("Accept-Encoding: gzip,deflate");
//req.Headers.Add("Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7");
req.KeepAlive = true;
req.ContentType = "application/x-www-form-urlencoded";
StreamWriter requestWriter = new StreamWriter(req.GetRequestStream());
requestWriter.Write(postData);
requestWriter.Close();
string sid = "";
try
{
using (HttpWebResponse res = (HttpWebResponse)req.GetResponse())
{
using (StreamReader sr = new StreamReader(res.GetResponseStream()))
{
sid = sr.ReadToEnd().Trim();
}
}
}
catch (WebException e)
{
Console.WriteLine(e.Message);
}
return sid;
}
Функция сеанса cookie
private CookieContainer GetSessionCookie(Uri uri)
{
HttpWebRequest req = GetWebRequest(uri);
CookieContainer cookies = new CookieContainer();
req.CookieContainer = cookies;
req.GetResponse().Close();
return cookies;
}