INHOUDSOPGAWE:
- Stap 1: Versamel materiaal
- Stap 2: Soek die nodige opskrifte om 'n sessie te skep
- Stap 3: Berei die kode voor
- Stap 4: Stuur die regte seine
- Stap 5: Gemeganiseerde koekies
- Stap 6: Sleutel tot die hart
Video: Oorweeg 'n Ajax -webwerf met 'n asynchrone aanmeldingsvorm: 6 stappe (met foto's)
2024 Outeur: John Day | [email protected]. Laas verander: 2024-01-30 07:28
Die probleem: Gereedskap vir oorweging laat AJAX -aanmelding nie toe nie.
Hierdie instruksie sal u wys hoe u via 'n AJAX -vorm kan aanmeld met Python en 'n module genaamd Mechanize. Spinnekoppe is web -outomatiseringsprogramme wat 'n al hoe gewilder manier word vir mense om data aanlyn te versamel. Hulle kruip rond op die internet en versamel kosbare materiaal om die kragtigste webondernemings in die omgewing aan te wakker. Ander kruip rond en versamel spesifieke stelle data om besluitneming te verbeter, of af te lei wat tans in is, of om die goedkoopste reisroetes te vind. Spinnekoppe (webkruipers, webblaaie of skermskrapers) is ideaal om HTML -goop in 'n skyn van intelligente data te omskep, maar ons het 'n probleem met AJAX -geaktiveerde webblaaie met JavaScript- en koekies wat nie met die normale kan navigeer nie stel gereedskap vir oorweging. In hierdie instruksies kry ons toegang tot ons eie lidblad op pubmatic.com. Hierdie stappe sal u 'n metode wys om te volg, maar u bladsy sal anders wees. Hê pret!
Stap 1: Versamel materiaal
U moet u programmeringshulpbronne begin aanvul. U benodig die volgende programme. Gebruik hul gidse om u te help om hierdie te installeer … Installeer Firebug Dit is 'n Firefox -toevoeging Installeer PythonGo na: python.org Gaan na: python.org Installeer die Mechanize Module Kry MechanizeGet Mechanize Ander nuttige gereedskap vir oorweeg: BeautifulSoup
Stap 2: Soek die nodige opskrifte om 'n sessie te skep
'N Goed gemaakte spinnekop kry toegang tot 'n webblad asof dit 'n blaaier is wat deur 'n mens beheer word, en hou leidrade oor die ware oorsprong daarvan verborge. 'N Deel van die interaksie tussen blaaiers en bedieners vind plaas deur GET- en POST -versoeke wat u in die opskrifte kan vind (hierdie inligting word selde in 'n blaaier vertoon, maar is baie belangrik). U kan hierdie inligting sien deur op Ctrl I (in Firefox) te druk om die venster Bladsy -inligting oop te maak. Om jouself as 'n saggeaarde blaaier te vermom, moet jy jouself identifiseer deur dieselfde geloofsbriewe te gebruik. As gevolg van die feit dat die meeste spinnekopblaaiers nie javascript -tolke het nie, moet ons via 'n alternatiewe roete deur die aanmelding kom. Kom ons begin deur die kopinligting van die blaaier af te stuur wanneer u op stuur klik. As dit 'n gewone blaaier -aanmelding was, gebruik u Mechanize om die vorm in te vul en op stuur. Normale inskrywingsvorms is in 'n … tag ingesluit, en Mechanize kan dit sonder probleme op die volgende bladsy indien. Aangesien ons nie 'n voltooide vormplaatjie het nie, word die inhandigingsfunksie deur javascript hanteer. Kom ons kyk na die submitForm -funksie van pubmatic. Om dit te kan doen, moet u eers die webblad in Firefox oopmaak en vuurpyl aanskakel deur op die vuurvliegie in die regter onderste hoek te klik. Klik dan op die skrip -oortjie, kopieer al die kode wat verskyn en plak dit in u gunsteling sagteware vir teksversorging. U kan dan alle kode behalwe die funksie submitForm verwyder. Dit begin met die funksie "submitForm (theform) {" en alles tussen hierdie en die funksies wat krulhaak sluit "}". By die ontleding van hierdie funksie sien ons baie primitief dat 'n mate van verifikasie plaasvind wat 'n veranderlike xmldoc terugbring wat as xml ontleed word. Dit is 'n belangrike kenmerk van AJAX: dit het die bediener ondervra en 'n XML -dokument wat 'n boom met inligting bevat, teruggebring. Die node session_id bevat die session_id as die verifikasie suksesvol was. U kan dit agterkom deur na hierdie stukkie kode te kyk: "if (session_id! = Null) {// login suksesvol". Nou wil ons voorkom dat hierdie stukkie javascript ons na enige plek neem, sodat ons kan sien wat tydens die verifikasie op die bediener geplaas word. Om dit te kan doen, lewer ons kommentaar op alle venster -aansture wat so lyk: "window.location = …". Om 'n opmerking hieroor te lewer, moet u dubbele skuinsstrepe voor hulle voeg, soos: "//window.location …" dit verhoed dat die kode uitgevoer word. U kan die onderstaande Javascript -lêer aflaai waarin hierdie wysigings reeds aangebring is. Dit oorskry die javascript -funksie wat reeds op die bladsy is met ons nuwe weergawe. As u nou u geloofsbriewe invul en op stuur klik, moet u sien dat POST en GET header -inligting die konsole vul, maar u sal nêrens heen gaan nie. soos dit moontlik is, kopieer en plak die inligting in die notaboek.
Stap 3: Berei die kode voor
Voordat ons die nuwe opskrifte byvoeg, moet ons 'n templaat -meganiseer -aanmeld -python -kode skep. Ons doen dit om twee redes, eerstens, sodat ons 'n komponent het waarmee nuwe dinge bygevoeg kan word, en tweedens sodat u kan sien hoe u normaalweg sou aanmeld op 'n nie-AJAX-y-webblad. volgende. As u klaar is, stoor dit as youfilename.py iewers waar u dit kan vind.#!/Usr/bin/python#-*-kodering: utf-8-*-#Begin met u module-invoer: vanaf meganiseer invoerblaaier#Skep u blaaierinstansie deur die blaaier () funksie -oproep; br = Browser ()#Stel die blaaier so in dat dit die spiders.txt -versoeke ignoreer#Doen dit versigtig, as die webblad nie van spinnekoppe hou nie, kan hulle ontsteld wees om u daar te vind.set_handle_robots (Onwaar) #Maak die bladsy oop waarop u wil aanmeld ombr.open ("https://pubmatic.com/04_betasignin.jsp") #Omdat ek die vormnaam ken, kan ek die vorm eenvoudig kies deur die naam te kies. ("login")#Met die name van die vormelemente voer ek die name van die vorm in elementbr ['email'] = "[email protected]" br ['password'] = "Asquid22"#br.submit () stuur die vorm uit en trek die gevolglike bladsy, u skep 'n nuwe blaaier -instansie#reaksie hieronder bevat die gevolgde pageresponse = br.submit ()#Dit druk die liggaam van die ontvangde webblad af#print response.read ()
Stap 4: Stuur die regte seine
Mechanize het 'n maklike funksie om opskrifte by die headers POST te voeg; dit sal ons in staat stel om in dieselfde blaaier te verskyn as waarmee u die eerste keer toegang tot die bladsy verkry het. Maak die lêer oop met opskrifte wat u met Firebug gevind het en wysig hierdie tekslêer om by te pas. Vervang alles in die aanhalings met die regte item uit die koplys: 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, leegloop "ACCEPT_CHARSET =" ISO-8859-1, utf-8; q = 0.7, *; q = 0.7 "KEEP_ALIVE =" 300 " CONNECTION = "hou lewendig" CONTENT_TYPE = "application/x-www-form-urlencoded" REFERER = "https://pubmatic.com/04_betasignin.jsp"CONTENT_LENGTH =" 60 "COOKIE =" utma = 103266945.1970108054.12101130012.1210; KADUSERCOOKIE = EA2C3249-E822-456E-847A-1FF0D4085A85; utmz = 103266945.1210113004.1.1.utmccn = (direk) | utmcsr = (direk) | utmcmd = (geen); JSESSIONID = 60F194BE2A5D3.52C5C3T59C8C9C9C9C9C9C9C9C9C9C9C9C9C9C9C9C9C9C9C9C9C9C9C9C9C9C9C9C9C9C9C9C9C9C9C9C5C5C3C53 no-cache "CACHE_CONTROL =" no-cache "Dit skep 'n stel veranderlikes wat u dan kan gebruik om by die kop te voeg ons deur hierdie kode: br.add_header = [("Host", HOST)] br.add_headers = [("User-agent", USER_AGENT)] br.add_headers = [("Aanvaar", AANVAAR)] br.add_header = [("Aanvaar-taal", 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 = [(" Verwyser ", VERWYSER)] br.add_header = [("Inhoudlengte", CONTENT_LENGTH)] br.add_headers = [("Cookie", COOKIE)] br.add_headers = [("Pragma", PRAGMA)] br.add_headers = [("Cache-Control", CACHE_CONTROL)] As ons nou die bladsy oopmaak -funksie noem, word die opskrifte ook na die bediener gestuur. br.open ("https://pubmatic.com/04_betasignin.jsp")
Stap 5: Gemeganiseerde koekies
Hierdie stap is omdat meganisme die hantering van koekies outomatiseer, maar dit is belangrik om te weet wat gebeur:
As die vorm ingedien is, het u die regte opskrifte asof u dit met die javascript -funksie ingedien het. Die bediener verifieer dan hierdie inligting en genereer 'n sessie -ID en stoor dit in 'n koekie as die gebruikersnaam en wagwoord korrek is. Die goeie nuus is dat Mechanize outomaties koekies eet en terugstuur, sodat u nie hoef te bekommer oor die stuur en ontvang van die koekie nie. Dus, sodra u 'n sessie -ID geskep het wat werk, kan u slegs die afdeling vir lede van die webwerf betree.
Stap 6: Sleutel tot die hart
Noudat ons 'n sessie -ID verkry het en Mechanize dit in die koekies gestoor het, kan ons die javascript volg om te sien waarheen ons moet gaan. As u binne die "if (session_id! = Null) {// aanmelding suksesvol" kyk, om te sien waarheen u moet slaag. Kyk na die vensterverskuiwingskode: "if (adurlbase.search (/pubmatic.com/)! = -1) {window.location =" https://pubmatic.com/05_homeloggedin.jsp " +"? V = " + Math.random ()*10000; " ons sien dat ons na 'n webwerf moet gaan op https://pubmatic.com/05_homeloggedin.jsp?v= 'n paar ewekansige getalle. Laat ons dus net 'n valse ewekansige nommer skep om 'n nuwe blaaier te gebruik om die nuut geopende bladsy te lees: response2 = br.open ("https://pubmatic.com/05_homeloggedin.jsp?v=2703") En dit moet wees dit. U kode is nou voltooi, deur die regte opskrifte en die meganisme van die koekiehanteerder te gebruik, kan ons nou toegang tot die binnekant van pubmatic kry. Maak die terminale oop, laai die onderstaande python -pakket en meld aan. Om hierdie tipe python2.5 te doen, en dan die filepath na die.py -lêer.
Aanbeveel:
Neem wonderlike foto's met 'n iPhone: 9 stappe (met foto's)
Neem wonderlike foto's met 'n iPhone: die meeste van ons dra deesdae 'n slimfoon oral, daarom is dit belangrik om te weet hoe u u slimfoonkamera kan gebruik om fantastiese foto's te neem! Ek het net 'n paar jaar 'n slimfoon gehad, en ek hou daarvan om 'n ordentlike kamera te hê om dinge te dokumenteer wat ek
Howto: Raspberry PI 4 Headless (VNC) installeer met Rpi-imager en foto's: 7 stappe (met foto's)
Howto: Raspberry PI 4 Headless (VNC) installeer met Rpi-imager en foto's: ek is van plan om hierdie Rapsberry PI te gebruik in 'n klomp prettige projekte in my blog. Kyk gerus daarna. Ek wou weer my Raspberry PI gebruik, maar ek het nie 'n sleutelbord of muis op my nuwe plek gehad nie. Dit was 'n rukkie sedert ek 'n Framboos opgestel het
Draadlose afstandsbediening met 2,4 GHz NRF24L01 -module met Arduino - Nrf24l01 4 -kanaals / 6 -kanaals sender -ontvanger voor quadcopter - Rc Helikopter - Rc -vliegtuig met Arduino: 5 stappe (met foto's)
Draadlose afstandsbediening met 2,4 GHz NRF24L01 -module met Arduino | Nrf24l01 4 -kanaals / 6 -kanaals sender -ontvanger voor quadcopter | Rc Helikopter | Rc -vliegtuig met Arduino: om 'n Rc -motor te bestuur | Quadcopter | Drone | RC -vliegtuig | RC -boot, ons het altyd 'n ontvanger en sender nodig, veronderstel dat ons vir RC QUADCOPTER 'n 6 -kanaals sender en ontvanger nodig het en dat die tipe TX en RX te duur is, so ons maak een op ons
Hoe om 'n rekenaar met maklike stappe en foto's uitmekaar te haal: 13 stappe (met foto's)
Hoe om 'n rekenaar uitmekaar te haal met eenvoudige stappe en foto's: dit is 'n instruksie oor hoe om 'n rekenaar uitmekaar te haal. Die meeste basiese komponente is modulêr en kan maklik verwyder word. Dit is egter belangrik dat u daaroor georganiseerd is. Dit sal u verhinder om onderdele te verloor, en ook om die montering weer
PCB -ontwerp met eenvoudige en maklike stappe: 30 stappe (met foto's)
PCB -ontwerp met eenvoudige en maklike stappe: HELLO -VRIENDE Die baie handige en maklike handleiding vir diegene wat PCB -ontwerp wil leer, kan begin