Taula de continguts:

Arranjament d'un lloc web Ajax amb un formulari d'inici de sessió asíncron: 6 passos (amb imatges)
Arranjament d'un lloc web Ajax amb un formulari d'inici de sessió asíncron: 6 passos (amb imatges)

Vídeo: Arranjament d'un lloc web Ajax amb un formulari d'inici de sessió asíncron: 6 passos (amb imatges)

Vídeo: Arranjament d'un lloc web Ajax amb un formulari d'inici de sessió asíncron: 6 passos (amb imatges)
Vídeo: Section 10 2024, Desembre
Anonim
Arranjament d’un lloc web Ajax amb un formulari d’inici de sessió asíncron
Arranjament d’un lloc web Ajax amb un formulari d’inici de sessió asíncron

El problema: les eines Spidering no permeten l’autenticació d’inici de sessió AJAX.

Aquesta instrucció us mostrarà com iniciar la sessió mitjançant un formulari AJAX mitjançant Python i un mòdul anomenat Mechanize. Les aranyes són programes d’automatització de webs que cada vegada són més populars per a la recopilació de dades en línia. S'arrosseguen per la xarxa reunint materials preciosos per alimentar les empreses web més poderoses de tot el món. Altres s’arrosseguen i recopilen conjunts específics de dades per millorar la presa de decisions o dedueixen el que hi ha actualment o troben les rutes de viatge més barates. Les aranyes (rastrejadors web, robots web o rascadors de pantalla) són ideals per convertir HTML goop en una aparença de dades intel·ligents, però tenim un problema quan es tracta de pàgines web activades amb AJAX que tenen sessions habilitades per a JavaScript i cookies que no es poden navegar amb el normal conjunt d'eines d'aranya. En aquesta instrucció accedirem a la nostra pròpia pàgina de membre a pubmatic.com. Aquests passos us mostraran un mètode a seguir, però la vostra pàgina serà diferent. Diverteix-te!

Pas 1: reuniu materials

Reuneix materials
Reuneix materials

Haureu de començar a complementar els vostres recursos de programació. Necessitareu els programes següents. Utilitzeu les seves guies per ajudar-vos a instal·lar-los … Instal·leu Firebug És un complement de Firefox Instal·leu Python Aneu a: python.org Aneu a: python.org Instal·leu el mòdul Mecanitzeu Obteniu Mecanitzeu Obteniu Mecanitzat Altres eines útils de Spidering: BeautifulSoup

Pas 2: cerqueu les capçaleres necessàries per crear una sessió

Una aranya ben elaborada accedirà a una pàgina web com si es tractés d’un navegador controlat per un ésser humà que manté amagades les pistes sobre el seu veritable origen. Part de la interacció entre navegadors i servidors es produeix mitjançant sol·licituds GET i POST que podeu trobar a les capçaleres (aquesta informació poques vegades es mostra en un navegador, però és molt important). Podeu veure aquesta informació prement Ctrl I (a Firefox) per obrir la finestra d'informació de la pàgina. Per disfressar-vos d’un navegador de manera moderada, us heu d’identificar amb les mateixes credencials. Si proveu d’iniciar sessió a pubmatic amb el javascript desactivat al vostre navegador, no arribareu molt lluny, ja que les redireccions es fan mitjançant javascript. Per tant, tenint en compte que la majoria dels navegadors spider no tenen intèrprets javascript, haurem d’obtenir l’inici de sessió mitjançant una ruta alternativa. Comencem per obtenir la informació de capçalera que s’envia des del navegador quan feu clic a Envia. Si es tractés d’un inici de sessió ordinari del navegador, utilitzaríeu Mechanize per emplenar el formulari i fer clic a Envia. Els formularis d’inici de sessió normals estan encapsulats dins d’una etiqueta … i Mechanize podrà enviar-ho i examinar la pàgina següent sense problemes. Com que no tenim una etiqueta de formulari completada, javascript gestiona la funció d'enviament. Comprovem la funció submitForm de pubmatic. Per fer-ho, primer obriu la pàgina web a firefox i activeu firebug fent clic al firefly a l'extrem inferior dret. A continuació, feu clic a la pestanya de seqüència d'ordres, copieu tot el codi que apareix i enganxeu-lo al vostre programari d'edició de text preferit. A continuació, podeu suprimir tot el codi, excepte la funció submitForm. Comença amb la funció "submitForm (theform) {" i tot el que hi ha entre aquesta i les funcions que tanquen el parèntesi arrissat "}". En analitzar aquesta funció molt primitivament, ens adonem que passa una certa autenticació que torna una variable anomenada xmldoc que s'està analitzant com a xml. Aquesta és una característica clau d'AJAX: ha enquestat el servidor i ha recuperat algun document XML que conté un arbre d'informació. El node session_id conté l’identificador de sessió si l’autenticació s’ha realitzat correctament. Podeu saber-ho mirant aquest bit de codi: "if (session_id! = Null) {// inici de sessió correcte". Ara volem evitar que aquest tros de javascript ens porti a qualsevol lloc per poder veure què es publica al servidor durant l'autenticació. Per fer-ho comentem qualsevol redirecció de finestra que tingui aquest aspecte: "window.location = …". Per comentar-ho, afegiu-hi dues barres incloses: "//window.location…" això impedeix l'execució del codi. Podeu descarregar el fitxer Javascript que hi ha a continuació i que ja té aquestes modificacions. Copieu i enganxeu aquest bit de javascript editat a la finestra dreta de la consola i feu clic a Executa. Això anul·la la funció javascript que ja hi ha a la pàgina amb la nostra nova versió. Ara, quan empleneu les vostres credencials i feu clic a Envia, hauríeu de veure que la informació de capçalera POST i GET omple la consola, però no anireu a cap lloc. com sigui possible, copieu i enganxeu aquesta informació al bloc de notes.

Pas 3: prepareu el codi

Abans d'afegir les noves capçaleres que hem trobat, creem un model de codi Python d'inici de sessió Mecanitzat. Ho fem per dos motius: primer, per tant, tenim un component que funciona per afegir coses noves i, segon, per veure com normalment inicieu la sessió a una pàgina web que no sigui AJAX-y. Obriu el bloc de notes o equivalent i copieu i enganxeu el seguint. Quan hàgiu acabat, deseu-lo com a fitxernom.py en algun lloc on pugueu trobar. instància del navegador mitjançant la trucada a la funció Browser (); br = Browser () # Configureu el navegador perquè ignori les sol·licituds spiders.txt # Feu-ho amb cura, si a la pàgina web no li agraden les aranyes, pot ser que estiguin molestos en trobar-vos allà..set_handle_robots (fals) # Obre la pàgina a la qual voleu iniciar sessió tobr.open ("https://pubmatic.com/04_betasignin.jsp") #Perquè conec el nom del formulari, simplement puc seleccionar el formulari amb el nombr.select_form ("login") # Usant els noms dels elements del formulari introdueixo els noms dels elements del formularibr ['email'] = "[email protected]" br ['password'] = "Asquid22" # br.submit () envia el formulari i treu la pàgina resultant; creeu una nova instància del navegador.

Pas 4: envieu els senyals correctes

Envieu els senyals correctes
Envieu els senyals correctes

Mechanize té una funció senzilla per afegir capçaleres a les capçaleres POST, això ens permetrà aparèixer al mateix navegador que vau utilitzar per accedir a la pàgina la primera vegada. Obriu el fitxer amb les capçaleres que heu trobat amb Firebug i editeu aquest fitxer de text perquè coincideixi. Substituïu tot el que aparegui entre les cometes per l'element adequat de la llista de capçaleres: 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 =" ca-us, ca; q = 0,5 "ACCEPT_ENCODING =" gzip, deflate "ACCEPT_CHARSET =" ISO-8859-1, utf-8; q = 0,7, *; q = 0,7 "KEEP_ALIVE =" 300 " CONNECTION = "keep-alive" CONTENT_TYPE = "application / x-www-form-urlencoded" REFERER = "https://pubmatic.com/04_betasignin.jsp"CONTENT_LENGTH =" 60 "COOKIE =" utma = 103266945.1970108054.1210113004.121210120871212; KADUSERCOOKIE = EA2C3249-E822-456E-847A-1FF0D4085A85; utmz = 103266945.1210113004.1.1.utmccn = (directe) | utmcsr = (directe) | utmcmd = (cap); JSESSIONID = 60F194BE2C3A18 no-cache "CACHE_CONTROL =" no-cache "Això crea un conjunt de variables que podeu utilitzar per afegir-nos a la capçalera ing aquest codi: br.add_header = [("Host", HOST)] br.add_headers = [("User-agent", USER_AGENT)] br.add_headers = [("Acceptar", ACCEPTAR)] br.add_header = [("Accept-Language", ACCEPT_LANGUAGE)] br.add_headers = [("Accept-Coding", 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 = [(" Referent ", REFERER)] br.add_header = [("Longitud del contingut", CONTENT_LENGTH)] br.add_headers = [("Cookie", COOKIE)] br.add_headers = [("Pragma", PRAGMA)] br.add_headers = [("Control de memòria cau", CACHE_CONTROL)] Ara, quan anomenem la funció d'obertura de pàgina, les capçaleres també s'enviaran al servidor. br.open ("https://pubmatic.com/04_betasignin.jsp")

Pas 5: Cookies mecanitzades

Cookies mecanitzades
Cookies mecanitzades

Aquest pas es deu a que mecanitzar automatitza la gestió de cookies, però és important saber què passa:

Quan s’envia el formulari, teniu les capçaleres adequades com si les envieu amb la funció javascript. Aleshores, el servidor autentica aquesta informació i genera un identificador de sessió i la desa en una galeta si el nom d’usuari i la contrasenya són correctes. La bona notícia és que Mechanize menja i regurgita automàticament les galetes, de manera que no cal que us preocupeu per enviar i rebre les galetes. Per tant, un cop creeu un identificador de sessió que funcioni, podeu entrar a la secció només per a membres del lloc web.

Pas 6: clau del cor

Ara que hem adquirit un identificador de sessió i que Mechanize l’ha desat a les seves cookies, podem seguir el javascript per veure on hem d’anar. Mirant a l'interior de "if (session_id! = Null) {// inici de sessió correcte" per veure on anar amb èxit. Mirant el codi de reubicació de la finestra: "if (adurlbase.search (/pubmatic.com/)! = -1) {window.location =" https://pubmatic.com/05_homeloggedin.jsp "+"? V = "+ Math.random () * 10000; " veiem que hem d’anar a un lloc web situat a https://pubmatic.com/05_homeloggedin.jsp?v=algun número aleatori. Així doncs, només hem de crear un número aleatori fals per introduir i crear una nova instància del navegador per llegir la pàgina acabada d’obrir: response2 = br.open ("https://pubmatic.com/05_homeloggedin.jsp?v=2703") I això hauria de ser sigui. El vostre codi ja està complet, fent servir les capçaleres adequades i mecanitzant el gestor de cookies, ara podem accedir a les entranyes de pubmatic. Obriu el terminal, carregueu el paquet python que hi ha a continuació i inicieu la sessió. Per fer-ho, escriviu python2.5 i, a continuació, la ruta del fitxer al fitxer.py.

Recomanat: