Cuprins:

Crearea unui site web Ajax cu un formular de conectare asincron: 6 pași (cu imagini)
Crearea unui site web Ajax cu un formular de conectare asincron: 6 pași (cu imagini)

Video: Crearea unui site web Ajax cu un formular de conectare asincron: 6 pași (cu imagini)

Video: Crearea unui site web Ajax cu un formular de conectare asincron: 6 pași (cu imagini)
Video: Cum Faci un Magazin Online Rapid si Usor 2023 2024, Noiembrie
Anonim
Crearea unui site web Ajax cu un formular de conectare asincron
Crearea unui site web Ajax cu un formular de conectare asincron

Problema: instrumentele Spidering nu permit autentificarea AJAX.

Acest instructable vă va arăta cum să vă conectați printr-un formular AJAX folosind Python și un modul numit Mechanize. Păianjenii sunt programe de automatizare web care devin din ce în ce mai populare pentru oamenii de a colecta date online. Se strecoară pe web adunând materiale prețioase pentru a alimenta cele mai puternice companii web din jur. Alții se târăsc în jurul lor și adună seturi specifice de date pentru a îmbunătăți luarea deciziilor sau pentru a deduce ceea ce „se află” în prezent sau pentru a găsi cele mai ieftine rute de călătorie. Paianjenii (crawlerele web, roboții web sau screper-urile de ecran) sunt minunate pentru a transforma HTML goop într-o aparență de date inteligente, dar avem o problemă când vine vorba de paginile web activate AJAX care au sesiuni JavaScript și cookie activate, care nu sunt navigabile în mod normal set de instrumente de păianjen. În acest instructable vom accesa propria noastră pagină de membru la pubmatic.com. Acești pași vă vor arăta o metodă de urmat, dar pagina dvs. va fi diferită. A se distra!

Pasul 1: Strângeți materiale

Adunați materiale
Adunați materiale

Va trebui să începeți să vă suplimentați resursele de programare. Veți avea nevoie de următoarele programe. Utilizați ghidurile lor pentru a vă ajuta să instalați aceste … Instalați Firebug Este un addon Firefox Instalați Python Accesați: python.org Accesați: python.org Instalați modulul Mechanize Obțineți mecanizarea Obțineți mecanizarea Alte instrumente utile de Spidering: BeautifulSoup

Pasul 2: Găsiți anteturile necesare pentru a crea o sesiune

Un păianjen bine creat va accesa o pagină web ca și cum ar fi un browser controlat de o ființă umană, păstrând ascunse indicii despre adevărata sa origine. O parte din interacțiunea dintre browsere și servere are loc prin solicitări GET și POST pe care le puteți găsi în anteturi (aceste informații sunt rar afișate pe un browser, dar sunt foarte importante). Puteți vizualiza aceste informații apăsând Ctrl I (în Firefox) pentru a deschide fereastra cu informații despre pagină. Pentru a vă deghiza ca un browser ușor, trebuie să vă identificați folosind aceleași acreditări. Dacă ați încerca să vă conectați la pubmatic cu javascript dezactivat în browserul dvs., nu veți ajunge prea departe, deoarece redirecționările se fac prin javascript. Deci, având în vedere că majoritatea browserelor spider nu au interpreti javascript, va trebui să trecem prin autentificare printr-o rută alternativă. Să începem prin a primi informațiile despre antet trimise din browser când faceți clic pe trimitere. Dacă aceasta ar fi o autentificare obișnuită în browser, ați folosi Mechanize pentru a completa formularul și ați face clic pe trimitere. Formularele de autentificare normale sunt încapsulate într-o etichetă … și Mechanize ar putea să trimită acest lucru și să sondeze pagina următoare fără probleme. Deoarece nu avem o etichetă de formular completată, funcția de trimitere este gestionată de javascript. Să verificăm funcția submitForm a pubmaticului. Pentru a face acest lucru, deschideți mai întâi pagina web în firefox și activați firebug făcând clic pe licuriciul din colțul din dreapta jos. Apoi faceți clic pe fila script, copiați tot codul care apare și lipiți-l în software-ul dvs. preferat de editare a textului. Apoi puteți șterge tot codul, cu excepția funcției submitForm. Începe cu funcția "submitForm (theform) {" și tot ce se află între aceasta și funcția care închide paranteză "}". Analizând această funcție foarte primitiv, observăm că unele autentificări se întâmplă aducând înapoi o variabilă numită xmldoc care este analizată ca xml. Aceasta este o caracteristică esențială a AJAX, a chestionat serverul și a adus înapoi un document XML care conține un arbore de informații. Nodul session_id conține session_id-ul dacă autentificarea a reușit, puteți spune acest lucru uitându-vă la acest bit de cod: "if (session_id! = Null) {// autentificare reușită". Acum vrem să împiedicăm acest bit de javascript să ne ducă oriunde, astfel încât să putem vedea ce este postat pe server în timpul autentificării. Pentru a face acest lucru, comentăm orice redirecționare de fereastră care arată astfel: "window.location = …". Pentru a comenta acest lucru, adăugați bare oblice în fața lor astfel: „//window.location…” acest lucru împiedică executarea codului. Puteți descărca fișierul Javascript de mai jos, care are aceste modificări deja făcute. Copiați și lipiți acest bit editat de javascript în fereastra consolei din partea dreaptă și faceți clic pe Executare. Aceasta înlocuiește funcția javascript deja în pagină cu noua noastră versiune. Acum, când vă completați acreditările și faceți clic pe trimitere, ar trebui să vedeți informațiile antet POST și GET umplând consola, dar nu veți merge oriunde. Informațiile POST sunt informațiile transmise către server de funcțiile AJAX, doriți să fiți la fel așa posibil, copiați și lipiți aceste informații în blocnotesul.

Pasul 3: Pregătiți codul

Înainte de a adăuga noile antete pe care le-am găsit, să creăm un șablon de cod Python de autentificare Mechanize. Facem acest lucru din două motive, în primul rând, astfel încât să avem o componentă care funcționează pentru a adăuga lucruri noi și în al doilea rând, astfel încât să vedeți cum v-ați conecta în mod normal la o pagină web non AJAX-y. Deschideți blocnotesul sau echivalentul și copiați și lipiți ca urmare a. Când ați terminat, salvați-l ca youfilename.py undeva pe care îl puteți găsi. #! / Usr / bin / python # - * - coding: utf-8 - * - # Începeți cu importurile modulului dvs.: instanță de browser prin apelul funcției Browser (); br = Browser () # Setați browserul astfel încât să ignore cererile spiders.txt # Faceți acest lucru cu atenție, dacă paginii web nu îi plac păianjenii, ar putea fi supărați să vă găsească acolo.set_handle_robots (Fals) #Deschideți pagina pe care doriți să vă conectați labr.open ("https://pubmatic.com/04_betasignin.jsp") #Deoarece știu numele formularului, pot selecta formularul cu numelebr.select_form ("login") # Folosind numele elementelor formularului, introduc numele elementelor formularului br ['email'] = "[email protected]" br ['password'] = "Asquid22" # br.submit () trimite formularul și extrage pagina rezultată, creați o nouă instanță de browser.

Pasul 4: trimiteți semnale corecte

Trimiteți semnalele corecte
Trimiteți semnalele corecte

Mechanize are o funcție ușoară de a adăuga anteturi la antetele POST, aceasta ne va permite să aparem în același browser pe care l-ați folosit pentru a accesa pagina prima dată. Deschideți fișierul cu antetele pe care le-ați găsit folosind Firebug și editați acest fișier text pentru a se potrivi. Înlocuiți tot din ghilimele cu elementul corespunzător din lista de antete: 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, 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 = "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 = (direct) | utmcsr = (direct) | utmcmd = (none); JSESSIONID = 60F194BE3C18 no-cache "CACHE_CONTROL =" no-cache "Aceasta creează un set de variabile pe care le puteți utiliza apoi pentru a le adăuga la antet ing acest cod: 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 = [("Lungimea conținutului", CONTENT_LENGTH)] br.add_headers = [("Cookie", COOKIE)] br.add_headers = [("Pragma", PRAGMA)] br.add_headers = [("Cache-Control", CACHE_CONTROL)] Acum, când apelăm funcția de deschidere a paginii, anteturile vor fi trimise și către server. br.open („https://pubmatic.com/04_betasignin.jsp”)

Pasul 5: Cookie-uri mecanizate

Cookie-uri mecanizate
Cookie-uri mecanizate

Acest pas se datorează faptului că mecanizarea automatizează gestionarea cookie-urilor, dar este important să știți ce se întâmplă:

Când formularul este trimis, aveți anteturile potrivite ca și cum ați fi trimis utilizând funcția javascript. Apoi serverul autentifică aceste informații și generează un ID de sesiune și îl salvează într-un cookie dacă numele de utilizator și parola sunt corecte. Vestea bună este că Mechanize mănâncă și regurgitează automat cookie-urile, astfel încât nu trebuie să vă faceți griji cu privire la trimiterea și primirea cookie-ului. Deci, odată ce creați un ID de sesiune care funcționează, puteți intra în secțiunea numai pentru membri a site-ului web.

Pasul 6: Cheia inimii

Acum că am obținut un ID de sesiune și Mechanize l-a salvat în cookie-urile sale, putem urmări javascriptul pentru a vedea unde trebuie să mergem. Privind în interiorul „if (session_id! = Null) {// autentificare reușită” pentru a vedea unde să mergeți la succes. Privind codul de relocare a ferestrei: "if (adurlbase.search (/pubmatic.com/)! = -1) {window.location =" https://pubmatic.com/05_homeloggedin.jsp "+"? V = "+ Math.random () * 10000; " vedem că trebuie să mergem la un site web situat la https://pubmatic.com/05_homeloggedin.jsp?v=un număr aleatoriu. Deci, să creăm un număr aleatoriu fals pentru a introduce și a crea o nouă instanță de browser pentru a citi pagina proaspăt deschisă: response2 = br.open ("https://pubmatic.com/05_homeloggedin.jsp?v=2703") Și asta ar trebui fie ea. Codul dvs. este acum complet, folosind anteturile adecvate și mecanizăm gestionarea cookie-urilor, putem accesa acum interiorul pubmatic. Deschideți terminalul, încărcați pachetul Python de mai jos și conectați-vă. Pentru a face acest lucru, tastați python2.5 și apoi calea fișierului către fișierul.py.

Recomandat: