Sisukord:
- Samm: koguge materjalid
- Samm: leidke seansi loomiseks vajalikud päised
- Samm: valmistage kood ette
- Samm: saatke õiged signaalid
- Samm: mehhaniseeritud küpsised
- 6. samm: võti südamesse
Video: Ajaxi veebisaidi ämblikustamine asünkroonse sisselogimisvormiga: 6 sammu (piltidega)
2024 Autor: John Day | [email protected]. Viimati modifitseeritud: 2024-01-30 08:50
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
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
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
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:
Veebisaidi juhitav jõulupuu (igaüks saab seda juhtida): 19 sammu (piltidega)
Veebisaidi juhitav jõulupuu (igaüks saab seda kontrollida): Kas soovite teada, kuidas veebisaidi juhitav jõulupuu välja näeb? Siin on video, mis näitab minu jõulupuu projekti. Otseülekanne on praeguseks lõppenud, kuid tegin toimuva jäädvustamiseks video: Sel aastal detsembri keskel
Põhi veebisaidi loomine Notepadi abil: 4 sammu
Kuidas teha põhiveebisaiti Notepadi abil: kas keegi on mõelnud, "kuidas teha põhilisest kirjutamisprogrammist veebisait?" "Noh, ilmselgelt mitte konkreetselt … Igatahes, siin näitan teile, kuidas teha BASIC veebisait, mis kasutab ainult märkmikku
Tasuta veebisaidi hankimine (TLD, hostimine, SSL): 16 sammu
Tasuta veebisaidi hankimine (TLD, hostimine, SSL): veebisaitidest on saamas suur asi. Varem olid suurtel ettevõtetel, nagu Microsoft, Google jt, oma veebisaidid. Võib -olla tegid seda ka mõned blogijad ja väiksemad ettevõtted. Kuid nüüd, eriti selle COVID-19 pandeemia ajal (jah, ma kirjutan seda aastal 2020)
Led heleduse juhtimine Raspberry Pi ja kohandatud veebisaidi abil: 5 sammu
Ledi heleduse juhtimine Raspberry Pi ja kohandatud veebisaidi abil: Kasutades oma PH -ga koos ap piche apache -serverit, leidsin viisi, kuidas juhtida LED -i heledust, kasutades liugurit kohandatud veebilehega, mis on juurdepääsetav mis tahes seadmega, mis on ühendatud teiega sama võrguga . Seda saab teha mitmel viisil
Veebisaidi/WiFi juhitav LED -riba Raspberry Pi -ga: 9 sammu (piltidega)
Veebisaidi/WiFi -ga juhitav LED -riba koos Raspberry Pi -ga: Taust: Olen teismeline ning olen viimastel aastatel kavandanud ja programmeerinud väikeseid elektroonikaprojekte ning osalenud robootikavõistlustel. Töötasin hiljuti oma laua seadistuse uuendamise kallal ja otsustasin, et see on tore lisand