این موضوع خیلی وابسته به سایت مورد نظره.
خوب من یه حالت ساده رو درنظر می گیرم و توضیح میدم.
شما در ابتدا باید صفحه لاگین سایت رو بررسی کنید و اطلاعاتی که توی form به سرور ارسال می شه رو مشخص کنید.
مثل نام متغییرهای ارسالی که معمولا شامل یوزرنیم و پسورده (و شاید اطلاعات دیگه برای کنترل بیشتر سرور)
خوب بریم سر وقت کد.
اگه اطلاعات فرمتون شامل موارد اضافی باشه که مقدارشون ثابت نیست و توی هر بازدید تغییر می کنه، ممکنه نیاز باشه یه کارهای اضافه تری انجام بدین.
خب ما فرضو می گیریم که شما می دونید چه اطلاعاتی رو می خواین به سرور بفرستین.
یه چیزی مثل کد زیر یه درخواست می فرستی به صفحه لاگین و بعد از لاگین سرور برات کوکی همراه با sessionid رو می فرسته.
HttpWebRequest req = WebRequest.Create("login address") as HttpWebRequest;
// اطلاعاتی که باسد برای لاگین ارسال بشن
string postData="user=username&pass=password";// اگه نیاز به ست کردن مقادیر دیگه ای هم باشه باید اضافه شون کنی
byte[] dataBytes = UTF8Encoding.UTF8.GetBytes(postData);
req.ContentType = "application/x-www-form-urlencoded";
req.Method = "POST";
req.ContentLength = dataBytes.Length;
using (Stream strm = req.GetRequestStream())
{
strm.Write(dataBytes, 0, dataBytes.Length);
}
HttpWebResponse httpResponse = req.GetResponse() as HttpWebResponse;
// اینجا اطلاعات کوکی رو بدست میاری. البته اگه لاگین موفقیت آمیز باشه
string cookieHeader = httpResponse.Headers["Set-cookie"];
خوب حالا کوکی رو داری و برای درخواستهای بعدی اون رو به هدر درخواستهات اضافه می کنی.
HttpWebRequest req2 = WebRequest.Create("resource address") as HttpWebRequest;
req2.Headers.Add("Cookie", cookieHeader);
HttpWebResponse response = req2.GetResponse() as HttpWebResponse;
using (StreamReader sreader = new StreamReader(response.GetResponseStream()))
{
data = sreader.ReadToEnd();
}
بازهم می گم که بسته به سایت مورد نظرت، ممکنه نیاز به انجام ریزه کاری های دیگه ای باشه.
موفق باشی.