PDA

View Full Version : کد برنامه دانلود فایل از سایتی که شناسه کاربری و پسورد دارد؟؟؟



aria2006
یک شنبه 17 اردیبهشت 1391, 16:19 عصر
با سلام و احترام خدمت کلیه دوستان عزیز
من یه تعداد فایل متنی دارم که بصورت روزانه باید از سایت برداشت کنم.کد برای دانلود فایل از اینترنت را دارم منتها چون این سایتی که من باهاش کار میکنم رمز و کلمه عبور داره این برنامه که خودم نوشتم جواب نمیده !!!!!
از دوستان کسی هست راهنمایی کنه و بگه چطور میشه فایل متنی رو از اینگونه سایتها برداشت کرد؟؟؟
سپاسگزارم

aria2006
دوشنبه 18 اردیبهشت 1391, 14:59 عصر
اساتید گرامی کمی تامل کنید:
با سلام و احترام خدمت کلیه دوستان عزیز
من یه تعداد فایل متنی دارم که بصورت روزانه باید از سایت برداشت کنم.کد برای دانلود فایل از اینترنت را دارم منتها چون این سایتی که من باهاش کار میکنم رمز و کلمه عبور داره این برنامه که خودم نوشتم جواب نمیده !!!!!
از دوستان کسی هست راهنمایی کنه و بگه چطور میشه فایل متنی رو از اینگونه سایتها برداشت کرد؟؟؟
سپاسگزارم

gsearch
دوشنبه 18 اردیبهشت 1391, 15:39 عصر
دوست عزیز
بسته به نوع اعتبار ستجی سرور ممکنه کمی متفاوت باشه ولی در کل به این صورته:

شما باید ابتدا یه request برای login شدن به سرور بفرستی (به همراه یوزر و پسورد و اطلاعاتی که سرور برای لاگین لازم داره)

بعد session id و اطلاعات کوکی رو که در response دریافت کردی و توی درخواست های بعدی به سرور ارسال کنی. تا سرور بفهمه که شما لاگین کرده بودی.

موفق باشی.

aria2006
سه شنبه 19 اردیبهشت 1391, 13:50 عصر
gsearch عزیز
با تشکر فرآوان از پاسخ شما در صورت امکان نمونه کد مربوطه را نیز قرار دهید.
با سپاس فرآوان

gsearch
سه شنبه 19 اردیبهشت 1391, 22:54 عصر
این موضوع خیلی وابسته به سایت مورد نظره.
خوب من یه حالت ساده رو درنظر می گیرم و توضیح میدم.

شما در ابتدا باید صفحه لاگین سایت رو بررسی کنید و اطلاعاتی که توی 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();
}

بازهم می گم که بسته به سایت مورد نظرت، ممکنه نیاز به انجام ریزه کاری های دیگه ای باشه.
موفق باشی.