Съдържание:

Премахване на уебсайт на Ajax с асинхронна форма за вход: 6 стъпки (със снимки)
Премахване на уебсайт на Ajax с асинхронна форма за вход: 6 стъпки (със снимки)

Видео: Премахване на уебсайт на Ajax с асинхронна форма за вход: 6 стъпки (със снимки)

Видео: Премахване на уебсайт на Ajax с асинхронна форма за вход: 6 стъпки (със снимки)
Видео: Light Your World (with Hue Bulbs) by Dan Bradley 2024, Декември
Anonim
Премахване на уебсайт на Ajax с асинхронен формуляр за вход
Премахване на уебсайт на Ajax с асинхронен формуляр за вход

Проблемът: Инструментите за паяк не позволяват удостоверяване при влизане в AJAX.

Тази инструкция ще ви покаже как да влезете чрез AJAX формуляр, използвайки Python и модул, наречен Mechanize. Паяците са програми за уеб автоматизация, които стават все по -популярен начин хората да събират данни онлайн. Те пълзят из мрежата, събирайки ценни материали, за да подхранват най -мощните уеб компании наоколо. Други пълзят наоколо и събират конкретни набори от данни, за да подобрят вземането на решения, или да направят извод какво е „в“в момента, или да намерят най -евтините маршрути за пътуване. Паяците (уеб роулери, уебботове или стъргалки на екрана) са чудесни за превръщането на HTML goop в някакво подобие на интелигентни данни, но имаме проблем, когато става въпрос за уеб страници с AJAX, които имат JavaScript и сесии с бисквитки, които не могат да се навигират с нормалните набор от инструменти за паяци. В тази инструкция ще имаме достъп до нашата собствена страница на pubmatic.com. Тези стъпки ще ви покажат метод, който да следвате, но страницата ви ще бъде различна. Забавлявай се!

Стъпка 1: Съберете материали

Съберете материали
Съберете материали

Ще трябва да започнете да допълвате вашите програмни ресурси. Ще ви трябват следните програми. Използвайте техните ръководства, за да ви помогнат да инсталирате тези … Инсталиране на FirebugТова е добавка за Firefox Инсталиране на Python Отидете на: python.org Отидете на: python.org Инсталирайте модула за механизацияВземете MechanizeВземете MechanizeДруги полезни инструменти за паяк: BeautifulSoup

Стъпка 2: Намерете заглавките, необходими за създаване на сесия

Добре изработеният паяк ще има достъп до уеб страница, сякаш това е браузър, контролиран от човешко същество, запазвайки улики за скрития истински произход. Част от взаимодействието между браузъри и сървъри се осъществява чрез GET и POST заявки, които можете да намерите в заглавките (тази информация рядко се показва в браузъра, но е много важна). Можете да видите част от тази информация, като натиснете Ctrl I (във firefox), за да отворите прозореца Информация за страницата. За да се маскирате като мек маниерен браузър, трябва да се идентифицирате, като използвате същите идентификационни данни. Ако се опитате да влезете в pubmatic с деактивиран JavaScript в браузъра си, няма да стигнете много далеч, тъй като пренасочванията се извършват чрез javascript. Така че, като се има предвид, че повечето браузъри -паяци нямат интерпретатори на javascript, ще трябва да влезем чрез влизане чрез алтернативен маршрут. Нека започнем с получаването на информацията за заглавката, изпратена от браузъра, когато щракнете върху изпрати. Ако това беше обикновен вход в браузъра, бихте използвали Mechanize, за да попълните формуляра и щракнете върху „Изпращане“. Нормалните формуляри за вход са капсулирани в… маркер и Mechanize би могъл да изпрати това и да огледа следващата страница без проблеми. Тъй като нямаме завършен маркер за формуляр, функцията за изпращане се обработва от javascript. Нека проверим функцията submitForm на pubmatic. За да направите това, първо отворете уеб страницата във firefox и включете firebug, като щракнете върху светулката в долния десен ъгъл. След това щракнете върху раздела скрипт, копирайте целия код, който се показва, и го поставете в любимия си софтуер за редактиране на текст. След това можете да изтриете целия код, с изключение на функцията submitForm. Започва с функция "submitForm (theform) {" и всичко между това и функциите, затварящи фигурна скоба "}". При анализирането на тази функция много примитивно забелязваме, че се случва известно удостоверяване, което връща променлива, наречена xmldoc, която се анализира като xml. Това е ключова характеристика на AJAX, че е анкетирала сървъра и е върнала XML документ, който съдържа дърво с информация. Възелът session_id съдържа идентификатор session_id, ако удостоверяването е било успешно, можете да разберете това, като погледнете този бит код: "if (session_id! = Null) {// влизането е успешно". Сега искаме да предотвратим този бит от javascript да ни отведе навсякъде, за да можем да видим какво се публикува на сървъра по време на удостоверяването. За да направим това, ние коментираме всички пренасочвания на прозорци, които изглеждат така: "window.location = …". За да коментирате това, добавете двойни наклонени черти преди тях така: "//window.location…" това предотвратява изпълнението на кода. Можете да изтеглите файла Javascript, под който вече са направени тези редакции. Копирайте и поставете този редактиран бит JavaScript в дясната страна на прозорците на конзолата и щракнете върху изпълнение. Това отменя функцията javascript, която вече е на страницата с новата ни версия. Сега, когато попълните вашите идентификационни данни и щракнете върху изпращане, трябва да видите POST и GET информация за заглавието запълва конзолата, но няма да отидете никъде. POST информацията е информацията, изстреляна към сървъра чрез функциите AJAX, искате да бъдете толкова като това е възможно, копирайте и поставете тази информация в бележника.

Стъпка 3: Подгответе кода

Преди да добавим новите заглавки, които открихме, нека създадем шаблонен механизъм за въвеждане на python код за вход. Правим това по две причини, първо, така че имаме компонент, който работи за добавяне на нови неща и второ, така че да видите как обикновено бихте влезли в уеб страница, която не е AJAX-y. Отворете бележника или еквивалент и копирайте и поставете следване. Когато сте готови, запишете го като youfilename.py някъде, където можете да намерите. екземпляр на браузъра чрез извикване на функцията Browser (); br = Browser ()#Настройте браузъра така, че да игнорира заявките spiders.txt#Направете това внимателно, ако уеб страницата не харесва паяци, те може да са разстроени, за да ви намерят там.set_handle_robots (False) #Отворете страницата, на която искате да влезете, tobr.open ("https://pubmatic.com/04_betasignin.jsp") #Понеже знам името на формуляра, мога просто да избера формуляра с иметоbr.select_form ("вход")#Използвайки имената на елементите на формуляра въвеждам имената на елементите на формуляраbr ['email'] = "[email protected]" br ['password'] = "Asquid22"#br.submit () изпраща формуляра и издърпва получената страница, създавате нов екземпляр на браузъра#отговор по -долу съдържа получената страницаresponse = 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 = "текст/xml, приложение/xml, приложение/xhtml+xml, текст/html; q = 0,9, текст/обикновен; q = 0,8, изображение/png, */ *; q = 0,5 "ACCEPT_LANGUAGE =" en-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 = "application/x-www-form-urlencoded" REFERER = "https://pubmatic.com/04_betasignin.jsp"CONTENT_LENGTH =" 60 "COOKIE =" utma = 103266945.1970108054.1210113004.121210201; KADUSERCOOKIE = EA2C3249-E822-456E-847A-1FF0D4085A85; utmz = 103266945.1210113004.1.1.utmccn = (директно) | utmcsr = (директно) | utmcmd = (няма); no-cache "CACHE_CONTROL =" no-cache "Това създава набор от променливи, които след това можете да използвате, за да ги добавите към заглавката us този код: br.add_header = [("Host", HOST)] br.add_headers = [("User-agent", USER_AGENT)] br.add_headers = [("Приемам", ACCEPT)] br.add_header = [("Приемане-език", ACCEPT_LANGUAGE)] br.add_headers = [("Приемане-кодиране", ACCEPT_ENCODING)] br.add_headers = [("Приемане-Charset", ACCEPT_CHARSET)] br.add_header = [("Keep-Alive ", KEEP_ALIVE)] br.add_headers = [(" Връзка ", CONNECTION)] br.add_header = [(" Тип съдържание ", CONTENT_TYPE)] br.add_header = [(" Препращач ", REFERER)] br.add_header = [("Content-Length", CONTENT_LENGTH)] br.add_headers = [("Cookie", COOKIE)] br.add_headers = [("Pragma", PRAGMA)] br.add_headers = [("Кеш-контрол", CACHE_CONTROL)] Сега, когато извикаме функцията за отваряне на страницата, заглавките ще бъдат изпратени и на сървъра. br.open ("https://pubmatic.com/04_betasignin.jsp")

Стъпка 5: Механизирани бисквитки

Механизирани бисквитки
Механизирани бисквитки

Тази стъпка е, защото механизирането автоматизира обработката на бисквитки, но е важно да знаете какво се случва:

Когато формулярът е изпратен, имате правилните заглавки, сякаш сте изпратили с помощта на функцията javascript. След това сървърът удостоверява тази информация и генерира идентификатор на сесия и го записва в бисквитка, ако потребителското име и паролата са правилни. Добрата новина е, че Mechanize автоматично изяжда и връща бисквитки, така че не е нужно да се притеснявате за изпращането и получаването на бисквитката. Така че след като създадете работещ идентификационен номер на сесия, можете да въведете секцията само за членовете на уебсайта.

Стъпка 6: Ключ към сърцето

Сега, след като сме придобили идентификационен номер на сесия и Mechanize го запазихме в своите бисквитки, можем да следваме javascript, за да видим къде трябва да отидем. Поглеждайки вътре в „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= някакво произволно число. Така че нека просто създадем фалшив случаен номер за въвеждане и създаване на нов екземпляр на браузъра, за да прочете току -що отворената страница: response2 = br.open ("https://pubmatic.com/05_homeloggedin.jsp?v=2703") И това трябва било то Вашият код вече е завършен, като използваме подходящите заглавки и механизиран манипулатор на бисквитки, вече можем да осъществим достъп до вътрешностите на pubmatic. Отворете терминала, заредете пакета python по -долу и влезте. За да направите това, въведете python2.5 и след това пътя на файла към.py файла.

Препоръчано: