كيفية تسجيل الدخول برمجيا إلى موقع على شبكة الإنترنت لشاشة Screenscape؟

StackOverflow https://stackoverflow.com/questions/975426

  •  13-09-2019
  •  | 
  •  

سؤال

أحتاج إلى بعض المعلومات من موقع إلكتروني ليس لي، من أجل الحصول على هذه المعلومات، أحتاج إلى تسجيل الدخول إلى الموقع الإلكتروني لجمع المعلومات، يحدث هذا من خلال نموذج HTML. كيف يمكنني أن أفعل هذا الشاشة المصادقة في C #؟

معلومات اضافية:

  • المصادقة القائمة على ملف تعريف الارتباط.
  • آخر الإجراء اللازم.
هل كانت مفيدة؟

المحلول

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

قد تبدو وكأنها:

HttpWebRequest http = WebRequest.Create(url) as HttpWebRequest;
http.KeepAlive = true;
http.Method = "POST";
http.ContentType = "application/x-www-form-urlencoded";
string postData="FormNameForUserId=" + strUserId + "&FormNameForPassword=" + strPassword;
byte[] dataBytes = UTF8Encoding.UTF8.GetBytes(postData);
http.ContentLength = dataBytes.Length;
using (Stream postStream = http.GetRequestStream())
{
    postStream.Write(dataBytes, 0, dataBytes.Length);
}
HttpWebResponse httpResponse = http.GetResponse() as HttpWebResponse;
// Probably want to inspect the http.Headers here first
http = WebRequest.Create(url2) as HttpWebRequest;
http.CookieContainer = new CookieContainer();
http.CookieContainer.Add(httpResponse.Cookies);
HttpWebResponse httpResponse2 = http.GetResponse() as HttpWebResponse;

يمكن.

نصائح أخرى

يمكنك استخدام متصفح الإنترنت مراقبة. فقط قم بإطعام عنوان URL للموقع، ثم استخدم DOM لتعيين اسم المستخدم وكلمة المرور في الحقول المناسبة، وإرسال نقرة في النهاية إلى الزر "إرسال". بهذه الطريقة لا تهتم بأي شيء سوى حقول المدخلات وزر إرسالها. لا يوجد معالجة ملفات تعريف الارتباط، لا تحليل HTML الخام، لا استنشاق HTTP - كل ما يتم بواسطة التحكم في المتصفح.

إذا ذهبت بهذه الطريقة، فبعض الاقتراحات الأخرى:

  1. يمكنك منع التحكم من تحميل الإضافات مثل الفلاش - يمكن أن يوفر لك بعض الوقت.
  2. بمجرد تسجيل الدخول، يمكنك الحصول على أي معلومات تحتاجها من DOM - لا حاجة لتحليل HTML RAW.
  3. إذا كنت ترغب في جعل الأداة أكثر قابلية للتحكم في حالة تغيير الموقع في المستقبل، فيمكنك استبدال معالجة DOM الصريحة بحقن JavaScript. يمكن الحصول على JS من مورد خارجي، وبمجرد دعاها يمكن أن تفعل المجالات السكانية والإرسال.

لبعض الحالات، httpResponse.Cookies سوف تكون فارغة. استخدم ال CookieContainer في حين أن.

CookieContainer cc = new CookieContainer();

HttpWebRequest http = WebRequest.Create(url) as HttpWebRequest;
http.KeepAlive = true;
http.Method = "POST";
http.ContentType = "application/x-www-form-urlencoded";

http.CookieContainer = cc;

string postData="FormNameForUserId=" + strUserId + "&FormNameForPassword=" + strPassword;
byte[] dataBytes = UTF8Encoding.UTF8.GetBytes(postData);
http.ContentLength = dataBytes.Length;
using (Stream postStream = http.GetRequestStream())
{
    postStream.Write(dataBytes, 0, dataBytes.Length);
}
HttpWebResponse httpResponse = http.GetResponse() as HttpWebResponse;
// Probably want to inspect the http.Headers here first
http = WebRequest.Create(url2) as HttpWebRequest;

http.CookieContainer = cc;

HttpWebResponse httpResponse2 = http.GetResponse() as HttpWebResponse;

كإضافة إلى الإجابة Dlambin من الضروري

http.AllowAutoRedirect=false;

غير ذلك

HttpWebResponse httpResponse = http.GetResponse() as HttpWebResponse;

سيقوم بتقديم طلب آخر إلى عنوان URL الأولي ولن تتمكن من استرداد URL2.

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

http://www.netomatix.com/httppostdata.aspx.

http://geekswithblogs.net/rakker/archive/2006/04/21/76044.aspx.

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