Я использую комбинацию HtmlAgilityPack и скрипача смотреть трафик. С помощью скрипача вы можете видеть сообщение, которое делается на сервере, и просто копировать его. Затем вы можете захватить данные 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;
}
Если форма передает через GET, то это просто вопрос построения URL с? Имя = BlaBla и пароль = BlaBla параметров, а затем обжиг URL. –
Да, Джон, я действительно. Нет biggie, я нашел метод, который я использовал для предыдущих ботов. Не закодированы на C# почти год. –
Sergio Tapia, нет, это POST-запросы. –