Sisukord:

Ajaxi veebisaidi ämblikustamine asünkroonse sisselogimisvormiga: 6 sammu (piltidega)
Ajaxi veebisaidi ämblikustamine asünkroonse sisselogimisvormiga: 6 sammu (piltidega)

Video: Ajaxi veebisaidi ämblikustamine asünkroonse sisselogimisvormiga: 6 sammu (piltidega)

Video: Ajaxi veebisaidi ämblikustamine asünkroonse sisselogimisvormiga: 6 sammu (piltidega)
Video: Как использовать AJAX для повышения производительности веб-сайта 2024, November
Anonim
Ajaxi veebisaidi ämblikustamine asünkroonse sisselogimisvormiga
Ajaxi veebisaidi ämblikustamine asünkroonse sisselogimisvormiga

Probleem: ämblikutööriistad ei luba AJAX -i sisselogimise autentimist.

See juhend näitab teile, kuidas sisse logida AJAX -i vormi kaudu, kasutades Pythoni ja moodulit nimega Mechanize. Ämblikud on veebi automatiseerimise programmid, mis on muutumas üha populaarsemaks inimeste veebis andmete kogumise viisiks. Nad hiilivad veebis ringi, kogudes väärtuslikke materjale, et toita kõige võimsamaid veebiettevõtteid. Teised indekseerivad ringi ja koguvad konkreetseid andmekogumeid, et parandada otsuste tegemist või järeldada, mis on praegu "sees" või leida odavaimaid reisimarsruute. Ämblikud (veebirobotid, veebid või ekraani kaabitsad) sobivad suurepäraselt HTML -i muutmiseks intelligentsete andmete sarnaseks, kuid meil on probleem AJAX -i toega veebisaitidel, millel on JavaScripti ja küpsistega lubatud seansid, mis ei ole tavalistega navigeeritavad ämblikutööriistade komplekt. Selles juhendis pääseme juurde meie enda liikmelehele aadressil pubmatic.com. Need sammud näitavad teile meetodit, mida järgida, kuid teie leht on erinev. Lõbutse hästi!

Samm: koguge materjalid

Koguge materjale
Koguge materjale

Peate alustama oma programmeerimisressursside täiendamist. Te vajate järgmisi programme. Kasutage nende juhendeid nende installimisel … Installige FirebugSee on Firefoxi lisandmoodulPaigaldage PythonGo aadressile: python.orgKülastage: python.orgPaigaldage mehhaniseerimise moodulGet MechanizeGet MechanizeMuud kasulikud ämblikutööriistad: BeautifulSoup

Samm: leidke seansi loomiseks vajalikud päised

Hästi meisterdatud ämblik pääseb veebilehele nii, nagu oleks see brauser, mida juhib inimene, hoides vihjeid selle tõelise päritolu kohta. Osa brauserite ja serverite suhtlusest toimub GET- ja POST -päringute kaudu, mille leiate päistest (seda teavet kuvatakse brauseris harva, kuid see on väga oluline). Saate seda teavet vaadata, vajutades klahvikombinatsiooni Ctrl I (Firefoxis), et avada leheinfo aken. Kerge käitumisega brauseriks maskeerimiseks peate end samade mandaatide abil identifitseerima. Kui proovisite oma brauseris JavaScriptiga keelatud pubmatici sisse logida, ei jõuaksite kaugele, kuna ümbersuunamised tehakse javascripti kaudu. Seega, kui arvestada, et enamikul ämblikbrauseritel pole JavaScripti tõlke, peame sisselogimisega hakkama saama alternatiivse marsruudi kaudu. Alustuseks saadame päise teabe brauserist, kui klõpsate käsul Esita. Kui see oleks tavaline brauseri sisselogimine, kasutaksite vormi täitmiseks mehhaniseerimist ja klõpsake nuppu Esita. Tavalised sisselogimisvormid on ümbritsetud… sildiga ja Mechanize saaks selle probleemideta esitada ja järgmisel lehel küsitleda. Kuna meil pole täidetud vormimärgendit, tegeleb saatmisfunktsiooniga javascript. Kontrollime pubmaticu funktsiooni SubmitForm. Selleks avage esmalt veebileht Firefoxis ja lülitage firebug sisse, klõpsates paremas alanurgas oleval Firefly -l. Seejärel klõpsake skripti vahekaarti, kopeerige kogu kuvatav kood ja kleepige see oma lemmikteksti redigeerimise tarkvarasse. Seejärel saate kustutada kogu koodi, välja arvatud funktsioon submittedForm. See algab funktsiooniga "submittedForm (theform) {" ja kõik selle ja funktsioonide vaheline sulgemine "}". Selle funktsiooni väga primitiivsel analüüsimisel märkame, et mõni autentimine toob tagasi muutuja nimega xmldoc, mida parsitakse kui xml. See on AJAXi põhifunktsioon, mis on küsitlenud serverit ja toonud tagasi mõne XML -dokumendi, mis sisaldab teabepuud. Sõlme session_id sisaldab seansi ID, kui autentimine õnnestus, saate seda teada, vaadates seda koodibitti: "if (session_id! = Null) {// sisselogimine õnnestus". Nüüd tahame takistada, et see javascripti tükk viiks meid kuhugi, et saaksime näha, mida autentimise ajal serverisse postitatakse. Selleks kommenteerime kõik akende ümbersuunamised, mis näevad välja sellised: "window.location =…". Selle kommenteerimiseks lisage nende ette topeltkriipsud: "//window.location…", see takistab koodi käivitamist. Allpool saate alla laadida Javascripti faili, kus need muudatused on juba tehtud. Kopeerige ja kleepige see redigeeritud javascripti osa konsooli akendesse paremal küljel ja klõpsake nuppu Käivita. See alistab meie uue versiooniga JavaScripti funktsiooni juba lehel. Nüüd, kui täidate oma mandaati ja klõpsate nuppu Esita, peaksite nägema, et POST ja GET päise teave täidavad konsooli, kuid te ei lähe kuhugi. POST -teave on AJAX -funktsioonide serverisse salvestatud teave, mida soovite olla sama palju kopeerige ja kleepige see teave märkmikusse.

Samm: valmistage kood ette

Enne leitud päiste lisamist loome mallipõhise sisselogimispüütoni koodi malli. Me teeme seda kahel põhjusel, esiteks, nii et meil on komponent, mis lisab uusi asju ja teiseks, et näeksite, kuidas tavaliselt sisse logite mitte-AJAX-y veebisaidile. Avage märkmik või samaväärne ja kopeerige ja kleepige järgnev. Kui olete lõpetanud, salvestage see kuskile, kus see on, failinime.py. brauseri eksemplari funktsiooni Browser () kaudu; br = Browser ()#Seadistage brauser nii, et see ignoreeriks ämblikke.txt päringuid#Tehke seda hoolikalt, kui veebilehele ämblikud ei meeldi, võivad nad teid üles leida.set_handle_robots (vale) #Avage leht, kuhu soovite sisse logida, et to.br.open ("https://pubmatic.com/04_betasignin.jsp") #Kuna ma tean vormi nime, saan selle lihtsalt nime järgi nimega br.select_form valida ("login")#Vormielementide nimede abil sisestan vormi elementide nimedbr ['email'] = "[email protected]" br ['password'] = "Asquid22"#br.submit () saadab vormi välja ja tõmbab tulemuseks oleva lehe, loote uue brauseri eksemplari

Samm: saatke õiged signaalid

Saada õiged signaalid
Saada õiged signaalid

Mechanize'il on lihtne funktsioon päiste lisamiseks päistele POST, mis võimaldab meil ilmuda samale brauserile, mida kasutasite lehe esmakordsel avamisel. Avage Firebugi abil leitud päistega fail ja muutke see tekstifail sobivaks. Asendage kõik jutumärkides päiste loendist pärit õige üksusega: 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 = "tekst/xml, rakendus/xml, rakendus/xhtml+xml, tekst/html; q = 0,9, tekst/tavaline; q = 0,8, pilt/png, */ *; q = 0,5 "ACCEPT_LANGUAGE =" et-us, et; q = 0,5 "ACCEPT_ENCODING =" gzip, deflate "ACCEPT_CHARSET =" ISO-8859-1, utf-8; q = 0,7, *; q = 0,7 "KEEP_ALIVE =" 300 " CONNECTION = "hoida elus" CONTENT_TYPE = "application/x-www-form-urlencoded" REFERER = "https://pubmatic.com/04_betasignin.jsp"CONTENT_LENGTH =" 60 "COOKIE =" utma = 103266945.1970108054.1210101010.12; KADUSERCOOKIE = EA2C3249-E822-456E-847A-1FF0D4085A85; utmz = 103266945.1210113004.1.1.utmccn = (otsene) | utmcsr = (otsene) | utmcmd = (pole); JSESSIONID = 60F194BE2C2102C2C2 no-cache "CACHE_CONTROL =" no-cache "See loob muutujate komplekti, mida saate seejärel kasutada päisesse lisamiseks selle koodi sisestamine: 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 = [(" Refereer ", REFERER)] br.add_header = [("Sisu-pikkus", CONTENT_LENGTH)] br.add_headers = [("Küpsis", KÜPSIS)] br.add_headers = [("Pragma", PRAGMA)] br.add_headers = [("Vahemälu kontroll", CACHE_CONTROL)] Nüüd, kui me nimetame lehe avamise funktsiooni, saadetakse päised ka serverisse. br.open ("https://pubmatic.com/04_betasignin.jsp")

Samm: mehhaniseeritud küpsised

Mehhaniseeritud küpsised
Mehhaniseeritud küpsised

See samm on tingitud sellest, et mehhaniseerimine automatiseerib küpsiste käitlemise, kuid on oluline teada, mis toimub:

Vormi esitamisel on teil õiged päised, nagu oleksite esitanud JavaScripti funktsiooni kasutades. Seejärel autentib server selle teabe ja genereerib seansi ID ning salvestab selle küpsisesse, kui kasutajanimi ja parool on õiged. Hea uudis on see, et Mechanize sööb ja taastab küpsised automaatselt, nii et te ei pea muretsema küpsise saatmise ja vastuvõtmise pärast. Nii et kui olete loonud toimiva seansi ID, saate sisestada veebisaidi ainult liikmete sektsiooni.

6. samm: võti südamesse

Nüüd, kui oleme omandanud seansi ID ja Mechanize selle küpsistesse salvestanud, saame JavaScripti järgi jälgida, kuhu peame minema. Vaadates "if (session_id! = Null) {// sisselogimine õnnestus" sisse, et näha, kuhu edukalt minna. Vaadates akna ümberpaigutamiskoodi: "if (adurlbase.search (/pubmatic.com/)! = -1) {window.location =" https://pubmatic.com/05_homeloggedin.jsp " +"? V = " + Matemaatika. Juhus ()*10000; " näeme, et peame minema veebisaidile, mis asub aadressil https://pubmatic.com/05_homeloggedin.jsp?v=some juhuslik arv. Nii et loome lihtsalt võltsitud juhusliku numbri ja loome uue brauseri eksemplari värskelt avatud lehe lugemiseks: response2 = br.open ("https://pubmatic.com/05_homeloggedin.jsp?v=2703") Ja see peaks olgu. Teie kood on nüüd valmis, kasutades õigeid päiseid ja mehhaniseerides küpsiste käitlejat, pääseme nüüd pubmatici sisekülgedele. Avage terminal, laadige allpool olev pythoni pakett ja logige sisse. Selleks tippige python2.5 ja seejärel failitee.py faili.

Soovitan: