سؤال

هذا السؤال هو متابعة لسؤالي السؤال السابق حول الحصول على HTML من صفحة ASPX.قررت أن أحاول استخدام كائن webclient، ولكن المشكلة هي أنني أحصل على HTML لصفحة تسجيل الدخول لأن تسجيل الدخول مطلوب.لقد حاولت "تسجيل الدخول" باستخدام كائن webclient:

WebClient ww = new WebClient();

 ww.DownloadString("Login.aspx?UserName=&Password=");

 string html = ww.DownloadString("Internal.aspx");

لكن ما زلت أحصل على صفحة تسجيل الدخول طوال الوقت.أعلم أن معلومات اسم المستخدم لا يتم تخزينها في ملف تعريف الارتباط.لا بد أنني أفعل شيئًا خاطئًا أو أتجاهل جزءًا مهمًا.هل يعرف أحد ماذا يمكن أن يكون؟

هل كانت مفيدة؟

المحلول

ما عليك سوى تمرير معلمات تسجيل الدخول الصالحة إلى عنوان URI محدد.ينبغي أن تساعدك.

إذا لم يكن لديك معلومات تسجيل الدخول، فلا يجب أن تحاول التحايل عليها.

public static string HttpPost( string URI, string Parameters )
      {
         System.Net.WebRequest req = System.Net.WebRequest.Create( URI );
         req.ContentType = "application/x-www-form-urlencoded";
         req.Method = "POST";
         byte[] bytes = System.Text.Encoding.ASCII.GetBytes( Parameters );
         req.ContentLength = bytes.Length;
         System.IO.Stream os = req.GetRequestStream();
         os.Write( bytes, 0, bytes.Length );
         os.Close();
         System.Net.WebResponse resp = req.GetResponse();
         if ( resp == null ) return null;
         System.IO.StreamReader sr = new System.IO.StreamReader( resp.GetResponseStream() );
         return sr.ReadToEnd().Trim();
      }

نصائح أخرى

حاول تعيين خاصية بيانات الاعتماد لكائن WebClient

WebClient ww = new WebClient();
ww.Credentials = CredentialCache.DefaultCredentials;
ww.DownloadString("Login.aspx?UserName=&Password=");
string html = ww.DownloadString("Internal.aspx");

حسنًا، هل فتح الصفحة في متصفح باستخدام "Login.aspx?UserName=&Password=" يعمل بشكل طبيعي؟
قد لا تسمح بعض الصفحات بتسجيل الدخول باستخدام البيانات المقدمة في عنوان URL، ويجب إدخالها في نموذج تسجيل الدخول الموجود بالصفحة ثم إرسالها.

السبب الآخر الوحيد الذي يمكنني التفكير فيه بعد ذلك هو أن صفحة الويب تمنعها عمدًا من تسجيل الدخول.إذا كان لديك حق الوصول إلى الرمز، فقم بإلقاء نظرة على نظام تسجيل الدخول المستخدم لمعرفة ما إذا كان هناك أي شيء مصمم لمنع عمليات تسجيل الدخول هذه.

يستخدم العابث لرؤية طلبات HTTP والاستجابات التي تحدث عند القيام بذلك يدويًا من خلال المتصفح.

@فاير لانسر:لقد طرحت على نفسي نفس السؤال أثناء اختباراتي، لذا تأكدت من أنه يعمل من خلال المتصفح.

نظرًا لأن صفحة aspx التي كنت أحاول الحصول عليها كانت موجودة في مشروعي الخاص، فيمكنني استخدام طريقة Server.Execute.مزيد من التفاصيل في إجابتي لسؤالي الأصلي

استخدم فايرفوكس مع LiveHttpHeaders توصيل في.
سيسمح لك هذا بتسجيل الدخول عبر متصفح فعلي ورؤية ما يتم إرساله إلى الخادم بالضبط.سؤالي الأول هو التحقق من أنه لا يتوقع POST من النموذج.يرسل عنوان URL النموذجي الذي تقوم بتحميله المعلومات عبر سلسلة استعلام GET.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top