Satura rādītājs:

Zirnekļošana Ajax vietnē ar asinhronu pieteikšanās veidlapu: 6 soļi (ar attēliem)
Zirnekļošana Ajax vietnē ar asinhronu pieteikšanās veidlapu: 6 soļi (ar attēliem)

Video: Zirnekļošana Ajax vietnē ar asinhronu pieteikšanās veidlapu: 6 soļi (ar attēliem)

Video: Zirnekļošana Ajax vietnē ar asinhronu pieteikšanās veidlapu: 6 soļi (ar attēliem)
Video: AJAX – шорты CS50 2024, Decembris
Anonim
Zirnekļošana Ajax vietnē ar asinhronas pieteikšanās veidlapu
Zirnekļošana Ajax vietnē ar asinhronas pieteikšanās veidlapu

Problēma: zirnekļošanas rīki neatļauj AJAX pieteikšanās autentifikāciju.

Šī pamācība parādīs, kā pieteikties, izmantojot AJAX veidlapu, izmantojot Python un moduli ar nosaukumu Mechanize. Zirnekļi ir tīmekļa automatizācijas programmas, kas kļūst arvien populārāks veids, kā cilvēki apkopo datus tiešsaistē. Viņi rāpo pa tīmekli, vācot dārgus materiālus, lai veicinātu visspēcīgāko tīmekļa kompāniju darbību. Citi rāpo apkārt un apkopo konkrētus datu kopumus, lai uzlabotu lēmumu pieņemšanu, vai secinātu, kas pašlaik atrodas, vai arī atrastu lētākos ceļojumu maršrutus. Zirnekļi (tīmekļa rāpuļprogrammas, tīmeklīši vai ekrānu skrāpji) ir lieliski piemēroti, lai HTML goop pārvērstu par inteliģentu datu līdzību, taču mums ir problēma, runājot par AJAX iespējotām tīmekļa lapām, kurās ir JavaScript un sīkfailu iespējotas sesijas, kuras nav navigējamas ar parasto zirnekļošanas rīku komplekts. Šajā pamācībā mēs piekļūsim savai dalībnieku lapai vietnē pubmatic.com. Šīs darbības parādīs metodi, kas jāievēro, taču jūsu lapa būs atšķirīga. Izklaidējieties!

1. darbība: apkopojiet materiālus

Savākt materiālus
Savākt materiālus

Jums jāsāk papildināt savus programmēšanas resursus. Jums būs nepieciešamas šādas programmas. Izmantojiet viņu rokasgrāmatas, lai palīdzētu jums instalēt šīs … Instalēt FirebugTas ir Firefox papildinājums Instalējiet PythonGo to: python.orgPārejiet uz: python.orgInstalējiet Mechanize ModuleGet MechanizeGet MechanizeCiti noderīgi zirnekļošanas rīki: BeautifulSoup

2. darbība. Atrodiet galvenes, kas nepieciešamas, lai izveidotu sesiju

Labi izstrādāts zirneklis piekļūs tīmekļa lapai tā, it kā tas būtu pārlūkprogramma, ko kontrolē cilvēks, un tiek slēptas norādes par tās patieso izcelsmi. Daļa mijiedarbības starp pārlūkprogrammām un serveriem notiek, izmantojot GET un POST pieprasījumus, kurus varat atrast galvenēs (šī informācija pārlūkprogrammā tiek parādīta reti, taču tā ir ļoti svarīga). Šo informāciju varat apskatīt, nospiežot taustiņu Ctrl I (pārlūkprogrammā Firefox), lai atvērtu logu Lapas informācija. Lai slēptu sevi kā vieglas uzvedības pārlūku, jums ir jāidentificējas, izmantojot tos pašus akreditācijas datus. Ja mēģinātu pieteikties publikācijās, pārlūkprogrammā atspējojot javascript, jūs netiktu tālu, jo novirzīšana tiek veikta, izmantojot javascript. Tātad, ņemot vērā, ka lielākajai daļai zirnekļu pārlūkprogrammu nav JavaScript tulku, mums būs jāizmanto pieteikšanās, izmantojot alternatīvu maršrutu. Sāksim ar to, ka noklikšķinot uz Iesniegt, no pārlūkprogrammas tiek nosūtīta galvenes informācija. Ja tas būtu parasts pārlūkprogrammas pieteikšanās, veidlapas aizpildīšanai izmantojiet Mechanize un noklikšķiniet uz Iesniegt. Parastās pieteikšanās veidlapas ir ievietotas… tagā, un Mechanize bez problēmām varētu to iesniegt un aptaujāt nākamo lapu. Tā kā mums nav aizpildītas veidlapas taga, iesniegšanas funkciju apstrādā javascript. Pārbaudīsim pubmatic funkciju SubmitForm. Lai to izdarītu, vispirms atveriet tīmekļa vietni pārlūkprogrammā Firefox un ieslēdziet firebug, noklikšķinot uz firefly apakšējā labajā stūrī. Pēc tam noklikšķiniet uz cilnes skripts, nokopējiet visu parādīto kodu un ielīmējiet to savā iecienītākajā programmatūras teksta rediģēšanas bitā. Pēc tam jūs varat izdzēst visu kodu, izņemot funkciju submittedForm. Tas sākas ar funkciju "submittedForm (theform) {" un viss, kas atrodas starp šo un funkcijām, kas aizver cirtainu kronšteinu "}". Analizējot šo funkciju ļoti primitīvi, mēs pamanām, ka notiek kāda autentifikācija, atgriežot mainīgo ar nosaukumu xmldoc, kas tiek parsēts kā xml. Šī ir AJAX galvenā iezīme, tā ir aptaujājusi serveri un atgriezusi kādu XML dokumentu, kas satur informācijas koku. Mezgls session_id satur sesijas ID, ja autentifikācija bija veiksmīga, to var pateikt, apskatot šo koda bitu: "if (session_id! = Null) {// login veiksmīga". Tagad mēs vēlamies nepieļaut, ka šis javascript fragments mūs aizved jebkur, lai autentifikācijas laikā mēs varētu redzēt, kas tiek ievietots serverī. Lai to izdarītu, mēs komentējam visus logu novirzīšanas gadījumus, kas izskatās šādi: "window.location =…". Lai to komentētu, pirms tiem pievienojiet dubultās slīpsvītras: "//window.location…", tas neļauj izpildīt kodu. Jūs varat lejupielādēt zemāk esošo Javascript failu, kurā šie labojumi jau ir veikti. Kopējiet un ielīmējiet šo rediģēto javascript fragmentu konsoles logos labajā pusē un noklikšķiniet uz Palaist. Ar mūsu jauno versiju tas ignorē JavaScript funkciju, kas jau atrodas lapā. Tagad, aizpildot savus akreditācijas datus un noklikšķinot uz Iesniegt, jums vajadzētu redzēt, ka POST un GET galvenes informācija aizpilda konsoli, bet jūs nekur nedosieties. POST informācija ir informācija, kas serverī tiek ielādēta ar AJAX funkcijām, jūs vēlaties būt tikpat daudz pēc iespējas līdzīgāk, kopējiet un ielīmējiet šo informāciju piezīmju grāmatiņā.

3. darbība: sagatavojiet kodu

Pirms pievienojam atrastās jaunās galvenes, izveidosim veidni Veidot pieteikšanās python kodu. Mēs to darām divu iemeslu dēļ, pirmkārt, tāpēc mums ir komponents, kas darbojas, lai pievienotu jaunas lietas, un, otrkārt, lai jūs redzētu, kā parasti pierakstāties tīmekļa vietnē, kas nav AJAX-y. Atveriet piezīmju grāmatiņu vai līdzvērtīgu un kopējiet un ielīmējiet sekojošs. Kad esat pabeidzis, saglabājiet to kā youfilename.py kaut kur.#!/Usr/bin/python#-*-kodēšana: utf-8-*-#Sāciet ar savu moduļu importēšanu: no mehanizētas importēšanas Pārlūkprogramma#Izveidojiet savu pārlūkprogrammas gadījums, izmantojot funkcijas Browser () zvanu; br = Browser ()#Iestatiet pārlūkprogrammu tā, lai tā ignorētu zirnekļus..set_handle_robots (Nepareizi) #Atveriet lapu, kurā vēlaties pieteikties, lai tobr.open ("https://pubmatic.com/04_betasignin.jsp") #Tā kā es zinu veidlapas nosaukumu, es varu vienkārši izvēlēties formu pēc nosaukuma br.select_form ("login")#Izmantojot veidlapas elementu nosaukumus, es ievadu formas elementu nosaukumusbr ['email'] = "[email protected]" br ['password'] = "Asquid22"#br.submit () izsūta veidlapu un izvelk iegūto lapu, jūs izveidojat jaunu pārlūkprogrammas instanci

4. darbība: nosūtiet pareizos signālus

Sūtiet pareizos signālus
Sūtiet pareizos signālus

Mechanize ir vienkārša funkcija, lai pievienotu galvenes galvenēm POST, tas ļaus mums parādīties tajā pašā pārlūkprogrammā, kuru izmantojāt, lai pirmo reizi piekļūtu lapai. Atveriet failu ar galvenēm, kuras atradāt, izmantojot Firebug, un rediģējiet šo teksta failu, lai tas atbilstu. Aizstājiet visu pēdiņās ar atbilstošu vienumu no galvenes saraksta: 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 =" lv, lv; q = 0,5 "ACCEPT_ENCODING =" gzip, deflate "ACCEPT_CHARSET =" ISO-8859-1, utf-8; q = 0.7, *; q = 0.7 "KEEP_ALIVE =" 300 " CONNECTION = "saglabāt dzīvību" 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 = (tiešs) | utmcsr = (tiešs) | utmcmd = (nav); JSESSIONID = 60F194BC2C2C2C2 no-cache "CACHE_CONTROL =" no-cache "Tādējādi tiek izveidota mainīgo kopa, ko pēc tam varat izmantot, lai pievienotu galvenei ievadot šo kodu: 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 = [(" Savienojums ", SAVIENOJUMS)] br.add_header = [(" Content-Type ", CONTENT_TYPE)] br.add_header = [(" Referer ", REFERER)] br.add_header = [("Content-Length", CONTENT_LENGTH)] br.add_headers = [("Cookie", COOKIE)] br.add_headers = [("Pragma", PRAGMA)] br.add_headers = [("Cache-Control", CACHE_CONTROL)] Tagad, kad mēs saucam par lapas atvēršanas funkciju, galvenes tiks nosūtītas arī uz serveri. br.open ("https://pubmatic.com/04_betasignin.jsp")

5. darbība: mehanizētās sīkdatnes

Mehāniskie sīkfaili
Mehāniskie sīkfaili

Šis solis ir tāpēc, ka mehanizācija automatizē sīkfailu apstrādi, taču ir svarīgi zināt, kas notiek:

Kad veidlapa ir iesniegta, jums ir pareizās galvenes, it kā jūs iesūtītu, izmantojot JavaScript funkciju. Pēc tam serveris autentificē šo informāciju un ģenerē sesijas ID un saglabā to sīkfailā, ja lietotājvārds un parole ir pareizi. Labā ziņa ir tā, ka Mechanize automātiski apēd un noregulē sīkfailus, tāpēc jums nav jāuztraucas par sīkdatnes nosūtīšanu un saņemšanu. Tātad, tiklīdz esat izveidojis funkcionējošu sesijas ID, varat ievadīt vietnes tikai dalībnieku sadaļu.

6. solis: Sirds atslēga

Tagad, kad esam ieguvuši sesijas ID un Mechanize to saglabājuši sīkfailos, mēs varam sekot javascript, lai redzētu, kur mums jādodas. Skatoties iekšā "ja (sesijas_id! = Null) {// pieteikšanās ir veiksmīga", lai redzētu, kur gūt panākumus. Skatoties uz loga pārvietošanas kodu: "if (adurlbase.search (/pubmatic.com/)! = -1) {window.location =" https://pubmatic.com/05_homeloggedin.jsp " +"? V = " + Matemātikas gadījuma rakstura ()*10000; " mēs redzam, ka mums jādodas uz vietni, kas atrodas vietnē https://pubmatic.com/05_homeloggedin.jsp?v=kāds nejaušs skaitlis. Tāpēc vienkārši izveidosim viltus izlases numuru, lai ievadītu, un izveidosim jaunu pārlūkprogrammas instanci, lai izlasītu tikko atvērto lapu: response2 = br.open ("https://pubmatic.com/05_homeloggedin.jsp?v=2703") Un tam vajadzētu lai tā būtu. Jūsu kods tagad ir pabeigts, izmantojot atbilstošas galvenes un mehanizējot sīkfailu apstrādātāju, mēs tagad varam piekļūt pubmatic iekšienei. Atveriet termināli, ielādējiet zemāk esošo python pakotni un piesakieties. Lai to izdarītu, ierakstiet python2.5 un pēc tam failu ceļu uz.py failu.

Ieteicams: