جدول المحتويات:

Spidering موقع Ajax باستخدام نموذج تسجيل دخول غير متزامن: 6 خطوات (بالصور)
Spidering موقع Ajax باستخدام نموذج تسجيل دخول غير متزامن: 6 خطوات (بالصور)

فيديو: Spidering موقع Ajax باستخدام نموذج تسجيل دخول غير متزامن: 6 خطوات (بالصور)

فيديو: Spidering موقع Ajax باستخدام نموذج تسجيل دخول غير متزامن: 6 خطوات (بالصور)
فيديو: رجل حقن نفسه بدم عنكبوت على أمل ان يصبح سبايدرمان لكن حصله غير المتوقع Earth vs.Spider 2024, شهر نوفمبر
Anonim
Spidering موقع Ajax باستخدام نموذج تسجيل دخول غير متزامن
Spidering موقع Ajax باستخدام نموذج تسجيل دخول غير متزامن

المشكلة: أدوات العنكبوت لا تسمح بمصادقة تسجيل الدخول إلى AJAX.

سيوضح لك هذا التوجيه كيفية تسجيل الدخول من خلال نموذج AJAX باستخدام Python ووحدة تسمى Mechanize. العناكب هي برامج أتمتة الويب التي أصبحت وسيلة شائعة بشكل متزايد للناس لجمع البيانات عبر الإنترنت. إنهم يتسللون عبر الويب لجمع المواد الثمينة لتغذية أقوى شركات الويب حولها. يقوم الآخرون بالزحف وجمع مجموعات محددة من البيانات لتحسين عملية اتخاذ القرار ، أو استنتاج ما هو موجود حاليًا ، أو العثور على أرخص طرق السفر. تعد العناكب (برامج زحف الويب ، أو برامج الروبوت ، أو برامج كشط الشاشة) رائعة لتحويل HTML goop إلى بعض مظاهر البيانات الذكية ، ولكن لدينا مشكلة عندما يتعلق الأمر بصفحات الويب التي تم تمكين AJAX والتي تحتوي على جلسات تم تمكين JavaScript وملفات تعريف الارتباط بها والتي لا يمكن التنقل فيها بالطريقة العادية مجموعة من أدوات العنكبوت. في هذا الدليل ، سنصل إلى صفحة الأعضاء الخاصة بنا على pubmatic.com. ستوضح لك هذه الخطوات طريقة لاتباعها ، لكن صفحتك ستكون مختلفة. استمتع!

الخطوة 1: اجمع المواد

اجمع المواد
اجمع المواد

سوف تحتاج إلى البدء في استكمال موارد البرمجة الخاصة بك. سوف تحتاج البرامج التالية. استخدم أدلةهم لمساعدتك في تثبيت هذه … تثبيت Firebug إنه ملحق Firefox قم بتثبيت Python انتقل إلى: python.org قم بتثبيت الوحدة النمطية احصل على Mechanize احصل على Mechanize أدوات العنكبوت المفيدة الأخرى: BeautifulSoup

الخطوة 2: ابحث عن الرؤوس اللازمة لإنشاء جلسة

سيصل العنكبوت المصمم جيدًا إلى صفحة ويب كما لو كان متصفحًا يتحكم فيه إنسان ويحفظ أدلة على أن أصله الحقيقي مخفي. يحدث جزء من التفاعل بين المتصفحات والخوادم من خلال طلبات GET و POST التي يمكنك العثور عليها في العناوين (نادرًا ما يتم عرض هذه المعلومات في المتصفح ، ولكنها مهمة جدًا). يمكنك عرض بعض هذه المعلومات بالضغط على Ctrl I (في متصفح Firefox) لفتح نافذة معلومات الصفحة. لإخفاء نفسك كمتصفح معتدل ، يجب عليك تحديد نفسك باستخدام نفس بيانات الاعتماد. إذا حاولت تسجيل الدخول إلى pubmatic مع تعطيل جافا سكريبت في متصفحك ، فلن تذهب بعيدًا نظرًا لأن عمليات إعادة التوجيه تتم من خلال جافا سكريبت. لذا مع الأخذ في الاعتبار أن معظم متصفحات العنكبوت لا تحتوي على مترجمين جافا سكريبت ، فسيتعين علينا الحصول على تسجيل الدخول من خلال مسار بديل. لنبدأ بالحصول على معلومات الرأس المرسلة من المتصفح عند النقر فوق إرسال. إذا كان هذا تسجيل دخول عادي إلى المتصفح ، فستستخدم Mechanize لملء النموذج والنقر فوق إرسال. يتم تغليف نماذج تسجيل الدخول العادية داخل علامة… ويمكن لـ Mechanize إرسالها والاستطلاع على الصفحة التالية دون مشاكل. نظرًا لعدم وجود علامة نموذج مكتملة ، يتم التعامل مع وظيفة الإرسال بواسطة جافا سكريبت. دعنا نتحقق من دالة SubmitForm الخاصة بالعامة. للقيام بذلك ، افتح صفحة الويب في Firefox أولاً وقم بتشغيل Firebug بالنقر فوق اليراع في الزاوية اليمنى السفلية. ثم انقر فوق علامة تبويب البرنامج النصي ، وانسخ كل الكود الذي يظهر والصقه في جزء تحرير النص المفضل لديك. يمكنك بعد ذلك حذف جميع التعليمات البرمجية باستثناء وظيفة SubmitForm. يبدأ بالدالة "submitForm (theform) {" وكل شيء يقع بين هذا وبين الدوال التي تغلق القوس المتعرج "}". عند تحليل هذه الوظيفة بشكل بدائي للغاية ، لاحظنا أن بعض المصادقة تحدث مع إعادة متغير يسمى xmldoc يتم تحليله كـ xml. هذه هي الميزة الرئيسية لـ AJAX ، فقد استطلعت آراء الخادم وأعادت بعض مستندات XML التي تحتوي على شجرة معلومات. تحتوي العقدة session_id على session_id إذا كانت المصادقة ناجحة ، يمكنك معرفة ذلك بالنظر إلى هذا الجزء من الكود: "if (session_id! = null) {// login Success". نريد الآن منع جزء جافا سكريبت هذا من نقلنا إلى أي مكان حتى نتمكن من رؤية ما يتم نشره على الخادم أثناء المصادقة. للقيام بذلك ، نقوم بالتعليق خارج أي عمليات إعادة توجيه للنافذة تبدو كالتالي: "window.location =…". للتعليق على هذا ، أضف شرطة مائلة مزدوجة قبلها مثل: "//window.location…" وهذا يمنع تشغيل الكود. يمكنك تنزيل ملف Javascript أدناه الذي تم إجراء هذه التعديلات عليه بالفعل. انسخ هذا الجزء المحرر من جافا سكريبت والصقه في نوافذ وحدة التحكم على الجانب الأيمن وانقر فوق تشغيل. هذا يلغي وظيفة جافا سكريبت الموجودة بالفعل في الصفحة بإصدارنا الجديد. الآن عندما تقوم بملء بيانات الاعتماد الخاصة بك والنقر فوق إرسال ، يجب أن ترى معلومات رأس POST و GET تملأ وحدة التحكم ، لكنك لن تذهب إلى أي مكان. معلومات POST هي المعلومات التي تم التقاطها إلى الخادم بواسطة وظائف AJAX ، فأنت تريد أن تكون بنفس القدر مثل هذا قدر الإمكان ، انسخ هذه المعلومات والصقها في المفكرة.

الخطوة الثالثة: قم بإعداد الكود

قبل أن نضيف الرؤوس الجديدة التي وجدناها ، فلنقم بإنشاء رمز بيثون لتسجيل الدخول إلى ميكانيكي نموذجي. نقوم بذلك لسببين ، أولاً ، لدينا مكون يعمل على إضافة أشياء جديدة إلى ، وثانيًا حتى ترى كيف يمكنك عادةً تسجيل الدخول إلى صفحة ويب بخلاف AJAX-y. افتح المفكرة أو ما يعادلها ، وانسخ والصق ملف التالية. عند الانتهاء ، احفظه كـ youfilename.py في مكان ما يمكنك أن تجده. #! / usr / bin / python # - * - الترميز: utf-8 - * - # ابدأ باستيراد الوحدة: من متصفح الاستيراد الآلي #Create your مثيل المستعرض من خلال استدعاء وظيفة Browser () ؛ br = Browser () # اضبط المتصفح بحيث يتجاهل طلبات spiders.txt # افعل ذلك بعناية ، إذا كانت صفحة الويب لا تحب العناكب ، فقد ينزعجون للعثور عليك هناك.set_handle_robots (False) # افتح الصفحة التي تريد تسجيل الدخول إليها tobr.open ("https://pubmatic.com/04_betasignin.jsp") # لأنني أعرف اسم النموذج ، يمكنني ببساطة تحديد النموذج من خلال namebr.select_form ("تسجيل الدخول") # باستخدام أسماء عناصر النموذج ، أدخل أسماء عناصر النموذجbr ['email'] = "[email protected]" br ['password'] = "Asquid22" # br.submit () يرسل النموذج ويسحب الصفحة الناتجة ، تقوم بإنشاء مثيل متصفح جديد # استجابة أدناه تحتوي على pageresponse الناتج = br.submit () # سيؤدي ذلك إلى طباعة نص صفحة الويب التي تم تلقيها # print response.read ()

الخطوة 4: أرسل الإشارات الصحيحة

أرسل الإشارات الصحيحة
أرسل الإشارات الصحيحة

يحتوي Mechanize على وظيفة سهلة لإضافة رؤوس إلى رؤوس POST ، وهذا سيمكننا من الظهور على نفس المتصفح الذي استخدمته للوصول إلى الصفحة في المرة الأولى. افتح الملف بالرؤوس التي وجدتها باستخدام Firebug وقم بتحرير هذا الملف النصي ليطابق. استبدل كل شيء في علامات الاقتباس بالعنصر المناسب من قائمة الرأس: USER_AGENT = "Mozilla / 5.0 (X11؛ U؛ Linux i686؛ tr-TR؛ rv: 1.8.1.9) Gecko / 20071102 Pardus / 2007 Firefox / 2.0.0.9" HOST = "pubmatic.com" ACCEPT = "text / xml، application / xml، application / xhtml + xml، text / html؛ q = 0.9، text / normal؛ q = 0.8، image / png، * / *؛ q = 0.5 "ACCEPT_LANGUAGE =" ar-us، en؛ q = 0.5 "ACCEPT_ENCODING =" gzip، deflate "ACCEPT_CHARSET =" ISO-8859-1، utf-8؛ q = 0.7، *؛ q = 0.7 "KEEP_ALIVE =" 300 " CONNECTION = "ابق على قيد الحياة" CONTENT_TYPE = "التطبيق / x-www-form-urlencoded" REFERER = "https://pubmatic.com/04_betasignin.jsp"CONTENT_LENGTH =" 60 "COOKIE =" utma = 103266945.1970108054.1210113004.1212104087.12 ؛ KADUSERCOOKIE = EA2C3249-E822-456E-847A-1FF0D4085A85؛ utmz = 103266945.1210113004.1.utmccn = (مباشر) | utmcsr = (مباشر) | utmcmd = (بلا) ؛ JSESSIONID = 60F194BE386 no-cache "CACHE_CONTROL =" no-cache "يؤدي ذلك إلى إنشاء مجموعة من المتغيرات التي يمكنك استخدامها بعد ذلك لإلحاقنا بالرأس ing هذا الكود: br.add_header = [("Host"، HOST)] br.add_headers = [("User-agent"، USER_AGENT)] br.add_headers = [("Accept"، ACCEPT)] br.add_header = [("Accept-Language"، ACCEPT_LANGUAGE)] br.add_headers = [("Accept-Encoding"، ACCEPT_ENCODING)] br.add_headers = [("Accept-Charset"، ACCEPT_CHARSET)] br.add_header = [("Keep-Alive "، KEEP_ALIVE)] br.add_headers = [(" Connection "، CONNECTION)] br.add_header = [(" Content-Type "، CONTENT_TYPE)] br.add_header = [(" Referer "، REFERER)] br.add_header = [("Content-Length"، CONTENT_LENGTH)] br.add_headers = [("Cookie"، COOKIE)] br.add_headers = [("Pragma"، PRAGMA)] br.add_headers = [("Cache-Control"، CACHE_CONTROL)] الآن عندما نسمي وظيفة فتح الصفحة ، سيتم إرسال الرؤوس إلى الخادم أيضًا. br.open ("https://pubmatic.com/04_betasignin.jsp")

الخطوة الخامسة: ملفات تعريف الارتباط الآلية

ملفات تعريف الارتباط الآلية
ملفات تعريف الارتباط الآلية

هذه الخطوة لأن الميكنة تعمل تلقائيًا على معالجة ملفات تعريف الارتباط ، ولكن من المهم معرفة ما يحدث:

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

الخطوة 6: مفتاح القلب

الآن بعد أن حصلنا على معرف جلسة وحفظه Mechanize في ملفات تعريف الارتباط الخاصة به ، يمكننا اتباع جافا سكريبت لمعرفة المكان الذي نحتاج إلى الذهاب إليه. ابحث داخل "if (session_id! = null) {// login Success" لمعرفة أين تتجه بنجاح. بالنظر إلى رمز إعادة تحديد موقع النافذة: "if (adurlbase.search (/pubmatic.com/)! = -1) {window.location =" https://pubmatic.com/05_homeloggedin.jsp "+"؟ v = "+ Math.random () * 10000 ؛ " نرى أننا بحاجة للذهاب إلى موقع ويب موجود على https://pubmatic.com/05_homeloggedin.jsp؟v= بعض الأرقام العشوائية. لذلك دعونا ننشئ رقمًا عشوائيًا مزيفًا للدخول وإنشاء نسخة متصفح جديدة لقراءة الصفحة المفتوحة حديثًا: response2 = br.open ("https://pubmatic.com/05_homeloggedin.jsp؟v=2703") وهذا يجب أن كن عليه. اكتمل الرمز الخاص بك الآن ، باستخدام الرؤوس المناسبة ومعالج ملفات تعريف الارتباط آليًا ، يمكننا الآن الوصول إلى الأجزاء الداخلية من pubmatic. افتح Terminal ، وقم بتحميل حزمة python أدناه وقم بتسجيل الدخول بعيدًا. للقيام بهذا النوع ، اكتب python2.5 ثم مسار الملف إلى ملف.py.

موصى به: