Tartalomjegyzék:

Az Ajax webhely pókhálózása aszinkron bejelentkezési űrlappal: 6 lépés (képekkel)
Az Ajax webhely pókhálózása aszinkron bejelentkezési űrlappal: 6 lépés (képekkel)

Videó: Az Ajax webhely pókhálózása aszinkron bejelentkezési űrlappal: 6 lépés (képekkel)

Videó: Az Ajax webhely pókhálózása aszinkron bejelentkezési űrlappal: 6 lépés (képekkel)
Videó: AJAX-PHP | Webfejlesztés 2024, November
Anonim
Az Ajax webhely pókerezése aszinkron bejelentkezési űrlappal
Az Ajax webhely pókerezése aszinkron bejelentkezési űrlappal

A probléma: A pókhálózási eszközök nem teszik lehetővé az AJAX bejelentkezési hitelesítést.

Ez az utasítás megmutatja, hogyan lehet bejelentkezni AJAX űrlapon keresztül Python és a Mechanize nevű modul használatával. A pókok olyan webes automatizálási programok, amelyek egyre népszerűbbek az emberek online adatgyűjtési módjában. Kúsznak a weben, és értékes anyagokat gyűjtenek, hogy támogassák a környék legerősebb webcégeit. Mások mászkálnak, és bizonyos adathalmazokat gyűjtenek a döntéshozatal javítása érdekében, vagy arra következtetnek, hogy mi van jelenleg, vagy megtalálják a legolcsóbb utazási útvonalakat. A pókok (webrobotok, webbotok vagy képernyőkaparók) kiválóan alkalmasak arra, hogy a HTML goop -ot intelligens adatok látszatává alakítsák, de problémánk van az AJAX -kompatibilis weboldalakkal kapcsolatban, amelyek JavaScript- és cookie -engedélyezett munkameneteket tartalmaznak, és amelyek nem navigálhatók a normál adatokkal pókháló eszközkészlet. Ebben az utasításban a pubmatic.com webhelyen fogjuk elérni saját tagoldalunkat. Ezek a lépések megmutatják a követendő módszert, de az oldala más lesz. Érezd jól magad!

Lépés: Gyűjtse össze az anyagokat

Gyűjtsön anyagokat
Gyűjtsön anyagokat

El kell kezdenie a programozási erőforrások kiegészítését. A következő programokra lesz szüksége. Használja útmutatóikat a telepítéshez… A Firebug telepítése Ez egy Firefox -kiegészítő

2. lépés: Keresse meg a munkamenet létrehozásához szükséges fejléceket

Egy jól kidolgozott pók úgy fog hozzáférni a weboldalhoz, mintha egy böngésző lenne, amelyet egy ember irányít, és rejtve marad a valódi eredetére vonatkozó nyomokról. A böngészők és a kiszolgálók közötti interakció egy része a fejlécben található GET és POST kéréseken keresztül történik (ez az információ ritkán jelenik meg egy böngészőben, de nagyon fontos). Ezeket az információkat megtekintheti a Ctrl I billentyű lenyomásával (Firefoxban) az Oldalinformáció ablak megnyitásához. Ha enyhe modorú böngészőnek szeretné álcázni magát, azonos azonosítóval kell azonosítania magát. Ha megpróbál bejelentkezni a pubmatic -ba, és a böngészőjében le van tiltva a javascript, akkor nem juthat messzire, mivel az átirányítások javascripten keresztül történnek. Ha figyelembe vesszük, hogy a legtöbb pókböngésző nem rendelkezik javascript -értelmezőkkel, akkor a bejelentkezéshez egy alternatív útvonalon kell hozzáférnünk. Kezdjük azzal, hogy a fejléc adatait elküldjük a böngészőből, amikor a Küldés gombra kattint. Ha ez egy szokásos böngésző bejelentkezés, akkor a Mechanize segítségével töltse ki az űrlapot, és kattintson a Küldés gombra. A normál bejelentkezési űrlapok egy… címkébe vannak beágyazva, és a Mechanize gond nélkül el tudja küldeni ezt, és lekérdezheti a következő oldalt. Mivel nincs kitöltött űrlapcímkénk, a beküldési funkciót a javascript kezeli. Ellenőrizzük a pubmatic sendForm függvényét. Ehhez először nyissa meg a weboldalt a Firefoxban, és kapcsolja be a firebugot a jobb alsó sarokban található szentjánosbogárra kattintva. Ezután kattintson a szkript fülre, másolja ki az összes megjelenő kódot, és illessze be a kedvenc szövegszerkesztő szoftverébe. Ezután törölheti az összes kódot, kivéve a submittedForm függvényt. Ez a "submittedForm (theform) {" függvénnyel kezdődik, és minden, ami e között van, és a függvények zárják a gömbölyű zárójelet "}". Ennek a funkciónak a nagyon primitív elemzésekor észrevesszük, hogy bizonyos hitelesítés során visszajön az xmldoc nevű változó, amelyet xml -ként elemeznek. Ez az AJAX egyik legfontosabb jellemzője, amely lekérdezte a szervert, és visszahozott néhány XML dokumentumot, amely információfát tartalmaz. A session_id csomópont tartalmazza a session_id azonosítót, ha a hitelesítés sikeres volt, ezt a következő kódrészletből megnézheti: "if (session_id! = Null) {// bejelentkezés sikeres". Most szeretnénk megakadályozni, hogy ez a javascript -bit bárhová elvigyen minket, hogy láthassuk, mit tesznek közzé a szerverre a hitelesítés során. Ehhez megjegyzéseket fűzünk az ablak átirányításokhoz, amelyek így néznek ki: "window.location =…". Ha megjegyzést szeretne tenni, adjon kettős perjeleket eléjük, így: "//window.location…" ez megakadályozza a kód futtatását. Letöltheti az alábbi Javascript -fájlt, amelyen már végrehajtották ezeket a módosításokat. Másolja és illessze be ezt a szerkesztett javascript -fájlt a konzol ablakába, majd kattintson a Futtatás gombra. Ez felülírja a javascript függvényt az oldalon az új verzióval. Most, amikor kitölti hitelesítő adatait, és rákattint a Küldés gombra, látnia kell, hogy a POST és a GET fejléc információ kitölti a konzolt, de nem megy sehová. A POST információ az AJAX funkciók által a szerverre küldött információ, annyi szeretne lenni mint ez lehetséges, másolja és illessze be ezeket az információkat a jegyzettömbbe.

3. lépés: Készítse elő a kódot

Mielőtt hozzáadnánk a talált új fejléceket, hozzunk létre egy sablonos bejelentkezési bejelentkezési python kódot. Ezt két okból tesszük, először is, tehát van egy összetevőnk, amely új tartalmak hozzáadására szolgál, másodszor pedig, hogy lássa, hogyan szeretne általában bejelentkezni egy nem AJAX-y weboldalra. Nyissa meg a jegyzettömböt vagy azzal egyenértékű fájlt, és másolja be következő. Ha elkészült, mentse el valahova, ahol megtalálhatja a böngészőpéldány a Browser () függvényhíváson keresztül; br = Browser ()#Állítsa be a böngészőt, hogy az figyelmen kívül hagyja a spiders.txt kéréseket#Ezt óvatosan tegye meg, ha a weboldal nem szereti a pókokat, akkor idegesek lehetnek, hogy megtalálják.set_handle_robots (Hamis) #Nyissa meg a bejelentkezni kívánt oldalt tobr.open ("https://pubmatic.com/04_betasignin.jsp") #Mivel ismerem az űrlap nevét, egyszerűen kiválaszthatom az űrlapot a namebr.select_form név alapján ("login")#Az űrlap elemeinek nevét használva beírom az űrlap elemeinek nevét br ['email'] = "[email protected]" br ['password'] = "Asquid22"#br.submit () elküldi az űrlapot, és lehúzza a kapott oldalt, új böngészőpéldányt hoz létre#az alábbi válasz tartalmazza a kapott pageresponse = br.submit ()#Ezzel kinyomtatja a kapott weboldal törzsét#print response.read ()

4. lépés: Küldje el a megfelelő jeleket

Küldje el a megfelelő jeleket
Küldje el a megfelelő jeleket

A Mechanize egyszerű funkcióval fejléceket adhat hozzá a POST fejlécekhez, ezáltal lehetővé válik számunkra, hogy ugyanazon a böngészőn jelenjünk meg, amelyet először használt az oldal eléréséhez. Nyissa meg a fájlt a Firebug használatával talált fejlécekkel, és szerkessze ezt a szöveges fájlt. Cserélje ki az idézőjelekben szereplő összes elemet a fejléc-lista megfelelő elemére: 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 =" hu-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-életben" 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 = (közvetlen) | utmcsr = (közvetlen) | utmcmd = (nincs); JSESSIONID = 60F194BE2 no-cache "CACHE_CONTROL =" no-cache "Ez létrehoz egy változóhalmazt, amellyel hozzáfűzheti a fejléchez ezt a kódot: 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 = [("Content-Length", CONTENT_LENGTH)] br.add_headers = [("Cookie", COOKIE)] br.add_headers = [("Pragma", PRAGMA)] br.add_headers = [("Cache-Control", CACHE_CONTROL)] Most, amikor az oldalmegnyitás funkciót hívjuk, a fejlécek a szerverre is el lesznek küldve. br.open ("https://pubmatic.com/04_betasignin.jsp")

5. lépés: Gépesített cookie -k

Gépesített sütik
Gépesített sütik

Ez a lépés azért van, mert a gépesítés automatizálja a cookie -k kezelését, de fontos tudni, hogy mi történik:

Az űrlap elküldésekor a megfelelő fejlécekkel rendelkezik, mintha a javascript funkcióval küldte volna be. A szerver ezután hitelesíti ezeket az információkat, és létrehoz egy munkamenet -azonosítót, és elmenti egy cookie -ba, ha a felhasználónév és a jelszó helyes. A jó hír az, hogy a Mechanize automatikusan megeszi és visszafejti a cookie -kat, így nem kell aggódnia a cookie küldése és fogadása miatt. Tehát ha létrehoz egy működő munkamenet -azonosítót, akkor beléphet a webhely csak tagoknak szóló részébe.

6. lépés: Kulcs a szívhez

Most, hogy megszereztük a munkamenet -azonosítót, és a Mechanize a sütikbe mentette, követhetjük a javascriptet, hogy lássuk, hová kell mennünk. Az "if (session_id! = Null) {// bejelentkezés sikeres" belenézve megnézheti, hogy merre kell továbbmenni. Az ablak áthelyezési kódját nézve: "if (adurlbase.search (/pubmatic.com/)! = -1) {window.location =" https://pubmatic.com/05_homeloggedin.jsp " +"? V = " + Math.random ()*10000; " látjuk, hogy el kell mennünk egy olyan webhelyre, amely a https://pubmatic.com/05_homeloggedin.jsp?v=valami véletlen szám alatt található. Tehát hozzunk létre egy hamis véletlenszerű számot a belépéshez, és hozzunk létre egy új böngészőpéldányt a frissen megnyitott oldal olvasásához: response2 = br.open ("https://pubmatic.com/05_homeloggedin.jsp?v=2703") És ennek legyen. A kódja kész, a megfelelő fejlécek és a cookie -kezelő gépesítése révén most elérhetjük a pubmatic belső elemeit. Nyissa meg a terminált, töltse be az alábbi python csomagot, és jelentkezzen be. Ehhez írja be a python2.5, majd a.py fájl elérési útját.

Ajánlott: