فهرست مطالب:

عنکبوت کردن وب سایت Ajax با فرم ورود ناهمزمان: 6 مرحله (همراه با تصاویر)
عنکبوت کردن وب سایت Ajax با فرم ورود ناهمزمان: 6 مرحله (همراه با تصاویر)

تصویری: عنکبوت کردن وب سایت Ajax با فرم ورود ناهمزمان: 6 مرحله (همراه با تصاویر)

تصویری: عنکبوت کردن وب سایت Ajax با فرم ورود ناهمزمان: 6 مرحله (همراه با تصاویر)
تصویری: قلعه افسانه ای متروک قرن 1700 ~ صاحب آن در یک تصادف رانندگی درگذشت! 2024, نوامبر
Anonim
عنکبوت کردن وب سایت Ajax با فرم ورود ناهمزمان
عنکبوت کردن وب سایت Ajax با فرم ورود ناهمزمان

مشکل: ابزارهای عنکبوتی اجازه احراز هویت ورود به AJAX را نمی دهند.

این دستورالعمل به شما نشان می دهد که چگونه از طریق فرم AJAX با استفاده از پایتون و ماژولی به نام Mechanize وارد شوید. عنکبوت ها برنامه های اتوماسیون وب هستند که روشی فزاینده برای مردم برای جمع آوری داده ها به صورت آنلاین تبدیل شده است. آنها در اطراف وب جمع می شوند و مواد گرانبها را جمع آوری می کنند تا به قدرتمندترین شرکت های وب در اطراف دامن بزنند. دیگران به اطراف می چرخند و مجموعه خاصی از داده ها را جمع آوری می کنند تا تصمیم گیری را بهبود بخشند ، یا آنچه در حال حاضر در آن وجود دارد را استنباط کنند ، یا ارزان ترین مسیرهای سفر را پیدا کنند. عنکبوت ها (خزنده های وب ، وب بات ها یا اسکرپرهای صفحه) برای تبدیل goop HTML به برخی از داده های هوشمند بسیار عالی هستند ، اما وقتی صحبت از صفحات وب AJAX فعال می شود که دارای جاوا اسکریپت و جلسات فعال سازی کوکی هستند که با حالت عادی قابل ناوبری نیستند ، مشکل داریم. مجموعه ای از ابزارهای عنکبوتی در این دستورالعمل به صفحه اعضای خود در pubmatic.com دسترسی خواهیم داشت. این مراحل روشی را برای دنبال کردن به شما نشان می دهد ، اما صفحه شما متفاوت خواهد بود. خوش بگذره!

مرحله 1: جمع آوری مواد

مواد را جمع آوری کنید
مواد را جمع آوری کنید

شما باید منابع برنامه نویسی خود را تکمیل کنید. شما به برنامه های زیر نیاز خواهید داشت. از راهنمای آنها برای کمک به نصب این موارد استفاده کنید … نصب Firebug این یک افزونه Firefox است نصب Python رفتن به: python.org برو به: python.org نصب Module Mechanize دریافت MechanizeGet Mechanize سایر ابزارهای مفید Spidering: BeautifulSoup

مرحله 2: سرفصل های لازم برای ایجاد یک جلسه را بیابید

یک عنکبوت خوب طراحی شده به صفحه ای دسترسی پیدا می کند که گویی مرورگری است که توسط یک انسان کنترل می شود و سرنخ های اصلی آن را مخفی نگه می دارد. بخشی از تعامل بین مرورگرها و سرورها از طریق درخواست های GET و POST انجام می شود که می توانید در سرصفحه ها پیدا کنید (این اطلاعات به ندرت در مرورگر نمایش داده می شود ، اما بسیار مهم است). می توانید برخی از این اطلاعات را با فشار دادن Ctrl I (در فایرفاکس) مشاهده کنید تا پنجره صفحه اطلاعات باز شود. برای مبدل شدن به عنوان یک مرورگر با رفتار ملایم ، باید خود را با استفاده از همان اعتبارنامه شناسایی کنید. اگر سعی کرده اید با استفاده از جاوا اسکریپت غیرفعال در مرورگر خود وارد pubmatic شوید ، از آنجا که تغییر مسیرها از طریق جاوا اسکریپت انجام می شود ، فاصله چندانی نخواهید داشت. بنابراین با توجه به اینکه اکثر مرورگرهای عنکبوتی مترجم جاوا اسکریپت ندارند ، باید از طریق یک روتر جایگزین وارد سیستم شویم. بیایید با دریافت اطلاعات سرصفحه از مرورگر هنگام ارسال روی ارسال ، شروع کنیم. اگر این یک ورود معمولی به مرورگر بود ، از Mechanize برای پر کردن فرم و کلیک بر روی ارسال استفاده کنید. فرمهای ورود معمولی در یک برچسب… محصور شده اند و Mechanize قادر است این را ارسال کرده و صفحه بعدی را بدون مشکل نظرسنجی کند. از آنجا که ما یک برچسب فرم کامل نداریم ، تابع ارسال توسط javascript انجام می شود. بیایید تابع submitForm pubmatic را بررسی کنیم. برای انجام این کار ، ابتدا صفحه وب را در firefox باز کنید و firebug را با کلیک روی کرم شب تاب در گوشه سمت راست پایین روشن کنید. سپس روی برگه اسکریپت کلیک کنید ، کل کد ظاهر شده را کپی کرده و در نرم افزار ویرایش متن مورد علاقه خود بچسبانید. سپس می توانید تمام کد را به جز تابع submitForm حذف کنید. این کار با تابع "submitForm (theform) {" و همه چیز بین این و توابع بسته شدن براکت حلقوی "}" شروع می شود. با تجزیه و تحلیل این تابع به صورت اولیه ، متوجه می شویم که احراز هویت متغیری به نام xmldoc که به عنوان xml تجزیه می شود ، باز می گرداند. این یکی از ویژگی های کلیدی AJAX است که از سرور نظرسنجی کرده و برخی از سندهای XML را که حاوی درخت اطلاعات هستند ، بازگردانده است. اگر احراز هویت موفقیت آمیز باشد ، گره session_id حاوی session_id است ، با مشاهده این بیت کد می توانید این را بگویید: "if (session_id! = null) {// ورود با موفقیت انجام شد". اکنون می خواهیم مانع از انتقال این جاوا اسکریپت به جایی شویم تا بتوانیم ببینیم چه چیزی در هنگام احراز هویت به سرور ارسال می شود. برای انجام این کار ، ما هر تغییر مسیر پنجره ای را که شبیه این است ، کامنت می کنیم: "window.location =…". برای اظهارنظر در این مورد ، دو خط کوچک مانند قبل از آنها اضافه کنید: "//window.location…" این از اجرای کد جلوگیری می کند. می توانید فایل جاوا اسکریپت زیر را که این ویرایش ها قبلاً انجام شده است بارگیری کنید. این بیت ویرایش شده جاوا اسکریپت را در سمت راست پنجره های کنسول کپی و جایگذاری کرده و روی اجرا کلیک کنید. این عملکرد javascript موجود در صفحه را با نسخه جدید ما لغو می کند. حالا وقتی اعتبارنامه خود را پر می کنید و روی ارسال کلیک می کنید ، باید اطلاعات سرصفحه POST و GET را مشاهده کنید که کنسول را پر کرده اند ، اما جایی نخواهید رفت. اطلاعات POST اطلاعاتی است که توسط توابع AJAX به سرور شلیک می شود ، شما می خواهید به همان اندازه تا آنجا که ممکن است ، این اطلاعات را کپی کرده و در یک دفترچه یادداشت بچسبانید.

مرحله 3: کد را آماده کنید

قبل از افزودن سرصفحه های جدید که پیدا کرده ایم ، بیایید یک قالب الگوی قالب بندی مکانیزم ورود به سیستم پایتون ایجاد کنیم. ما این کار را به دو دلیل انجام می دهیم ، اول بنابراین ما یک م componentلفه داریم که برای افزودن موارد جدید به کار می افتد و دوم ، بنابراین شما می بینید که چگونه معمولاً به یک صفحه وب غیر AJAX-y وارد می شوید. دفترچه یادداشت یا معادل آن را باز کنید ، و آن را کپی و جایگذاری کنید ذیل. پس از اتمام کار ، آن را به عنوان youfilename ذخیره کنید. py را در جایی که می توانید پیدا کنید ذخیره کنید. نمونه مرورگر از طریق فراخوانی تابع Browser () ؛ br = Browser ()#مرورگر را طوری تنظیم کنید که عنکبوت ها را نادیده بگیرد. درخواست های متن.set_handle_robots (False) #صفحه ای را که می خواهید وارد شوید باز کنید tobr.open ("https://pubmatic.com/04_betasignin.jsp") #چون نام فرم را می دانم ، می توانم به سادگی فرم را با نامbrbr انتخاب کنم. ("ورود")#با استفاده از نام عناصر فرم ، نام عناصر فرم را وارد می کنم brbr ['email'] = "[email protected]" br ['password'] = "Asquid22"#br.submit () فرم را ارسال می کند و صفحه حاصله را می کشد ، شما یک نمونه جدید از مرورگر ایجاد می کنید

مرحله 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/plain؛ q = 0.8، image/png، */ *؛ q = 0.5 "ACCEPT_LANGUAGE =" en-us، fa؛ q = 0.5 "ACCEPT_ENCODING =" gzip، deflate "ACCEPT_CHARSET =" ISO-8859-1، utf-8؛ q = 0.7، *؛ q = 0.7 "KEEP_ALIVE =" 300 " اتصال = "حفظ اتصال" CONTENT_TYPE = "نرم افزار / X-وو-فرم-urlencoded" مرجع = "https://pubmatic.com/04_betasignin.jsp"CONTENT_LENGTH =" 60 "کوکی =" utma = 103266945.1970108054.1210113004.1212104087.1212791201.20 ؛ KADUSERCOOKIE = EA2C3249-E822-456E-847A-1FF0D4085A85؛ utmz = 103266945.1210113004.1.1.utmccn = (مستقیم) | utmcsr = (مستقیم) | utmcmd = (هیچکدام) no-cache "CACHE_CONTROL =" no-cache "این مجموعه ای از متغیرها را ایجاد می کند که می توانید از آنها برای افزودن به سرصفحه ما استفاده کنید وارد کردن این کد: br.add_header = [("میزبان" ، 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")

مرحله 5: کوکی های مکانیزه

کوکی های مکانیزه
کوکی های مکانیزه

این مرحله به این دلیل است که مکانیزه کردن کارکرد کوکی ها را به صورت خودکار انجام می دهد ، اما مهم است که بدانید چه اتفاقی می افتد:

هنگامی که فرم ارسال می شود ، هدرهای مناسبی دارید مانند اینکه با استفاده از تابع javascript ارسال کرده اید. سپس سرور این اطلاعات را احراز هویت می کند و شناسه جلسه تولید می کند و در صورت درست بودن نام کاربری و رمز عبور ، آنها را در کوکی ذخیره می کند. خبر خوب این است که Mechanize به طور خودکار کوکی ها را می خورد و دوباره می گرداند ، بنابراین لازم نیست نگران ارسال و دریافت کوکی باشید. بنابراین هنگامی که یک شناسه جلسه ایجاد کردید که کار می کند ، می توانید بخش اعضاء وب سایت را فقط وارد کنید.

مرحله 6: کلید قلب

اکنون که یک شناسه جلسه دریافت کرده ایم و Mechanize آن را در کوکی های خود ذخیره کرده است ، می توانیم جاوا اسکریپت را دنبال کنیم تا ببینیم کجا باید برویم. با نگاه کردن به داخل "if (session_id! = null) {// ورود موفقیت آمیز" برای دیدن موفقیت به کجا بروید. نگاه کردن به کد جابجایی پنجره: "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= برخی از شماره های تصادفی قرار دارد. بنابراین بیایید فقط یک شماره تصادفی جعلی برای ورود ایجاد کنیم و یک نمونه مرورگر جدید برای خواندن صفحه تازه باز شده ایجاد کنیم: respond2 = br.open ("https://pubmatic.com/05_homeloggedin.jsp؟v=2703") و این باید باشد اکنون کد شما کامل است ، با استفاده از سرصفحه های مناسب و مکانیزه سازی کنترل کننده کوکی ، اکنون می توانیم به قسمت داخلی pubmatic دسترسی پیدا کنیم. ترمینال را باز کرده ، بسته پایتون زیر را بارگذاری کرده و از سیستم خارج شوید. برای انجام این کار python2.5 و سپس مسیر فایل به فایل.py را تایپ کنید.

توصیه شده: