Autorizare pe site cu ajutorul curl php - totul despre dezvoltarea web pe

Pentru a începe, înscrieți-vă pe site pentru a avea o parolă de test-parola pentru a intra pe site.

Autorizare pe site cu ajutorul curl php - totul despre dezvoltarea web pe

"Înăuntru", de asemenea, nu observă nimic

Autorizare pe site cu ajutorul curl php - totul despre dezvoltarea web pe

Vedem că formularul trimite următorii parametri







Să încercăm să rezolvăm problema pe frunte și să trimitem aceste date într-o matrice simplă. Luăm imediat în considerare faptul că datele sunt trimise pe url-ul SSL protejat, utilizând protocolul https. Acest lucru trebuie luat în considerare la trimiterea datelor către cUrl. Nu vă voi spune cum funcționează SSL în cadrul acestui articol, voi spune doar că certificatele schimbate între cele două părți nu spun în sine nimic despre proprietarul său. Ele sunt necesare doar pentru a transmite cheia publică pe ambele părți și pentru a cripta canalul de comunicații. Ie putem verifica disponibilitatea SSL și conectăm certificatul la cUrl, dar acest lucru ne va aduce beneficii, serverul nu poate ști dacă folosim un certificat sau folosim un canal neprotejat.

Și din nou trecut. Rețineți că formularul în plus față de parola standard de conectare, trimite 3 încă câmpuri dinamice. Datele din ele sunt întotdeauna diferite și sunt generate atunci când pagina este actualizată. Deci, trebuie să descărcați pagina, să copiați aceste date și să le autentificați deja. Pentru a face acest lucru, un pic "rafinați" codul, încheind datele de interogare de la serverul cUrl'om într-o funcție separată. Toată diferența dintre solicitarea de a primi din post este că atunci când cererea de post trimite datele CURLOPT_POSTFIELDS







Încercăm să scoatem valorile câmpurilor variabile

Se pare că câmpul de autentificare: j_id_id254.x și câmpul de autentificare: j_id_id254.y sunt create și completate cu scriptul js. Să încercăm să-i lăsăm așa cum erau

scrieți inițial către parserul js sau parcurgeți algoritmii cu mânerele, vă asigur că acest lucru nu este atât de dificil cum pare, am făcut acest lucru de mai multe ori. De exemplu, puteți rula site-ul în browser și uita-te în inspectorul despachetat js, care va facilita foarte mult sarcina de a genera cheia

Mai întâi, uitați-vă la inspectorul din fila rețea / rețea care solicită să dispară la trimiterea formularului, ce câmpuri există. Dacă există câmpuri asemănătoare cu cele dinamice, căutați unde site-ul le generează / primește, le poate solicita de la server, poate genera el însuși inteligent. În js căutăm codul care trimite cererea - în el căutăm locul în care parametrul de viclenie este inserat în interogare, căutăm codul, de unde a venit acest parametru, indiferent dacă este luat din formular sau trimis cu cookie-uri. un nor de opțiuni. cel mai probabil totul este mai simplu și există unele crsf variabile de la hider, dar poate fi, de asemenea, jarred, cazurile sunt diferite)

Conform principiului expresii regulate în cazul în care acest sezon regulat, în care există o etichetă formular cu id = „logout“ cu steaguri Usi - în cazul în care U - opri lacomia, e - ignora spațiul liber, ignorând caz i-

și anume dacă luați login / pass din cod și mergeți sub browser, conduceți în căutarea articolului, nu numai că rezultatele vor fi diferite, astfel încât și mesajul despre necesitatea de a se înregistra pentru a obține datele reale cade.

Îmi rup capul a doua zi = /

funcția isAuth ($ date)

curl_setopt ($ ch, CURLOPT_URL, $ url); // trimite la

curl_setopt ($ ch, CURLOPT_HEADER, 0); // anteturi goale

curl_setopt ($ ch, CURLOPT_RETURNTRANSFER, 1); // returnați ce a returnat serverul

curl_setopt ($ ch, CURLOPT_FOLLOWLOCATION, 1); // urmați redirecționările

curl_setopt ($ ch, CURLOPT_CONNECTTIMEOUT, 30); // timeout4

curl_setopt ($ ch, CURLOPT_SSL_VERIFYPEER, false);

curl_setopt ($ ch, CURLOPT_USERAGENT, 'Mozilla / 4.0 (compatibil; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322)');

curl_setopt ($ ch, CURLOPT_COOKIEFILE, dirname (__FILE __). / cookie.txt);

curl_setopt ($ ch, CURLOPT_POST, 1); // utilizați datele în postare

curl_setopt ($ ch, CURLOPT_POSTFIELDS, array (

curl_setopt ($ ch, CURLOPT_HEADER, 0); // anteturi goale

curl_setopt ($ ch, CURLOPT_RETURNTRANSFER, 1); // returnați ce a returnat serverul

curl_setopt ($ ch, CURLOPT_FOLLOWLOCATION, 1); // urmați redirecționările

curl_setopt ($ ch, CURLOPT_CONNECTTIMEOUT, 30); // timeout4

curl_setopt ($ ch, CURLOPT_SSL_VERIFYPEER, false);

curl_setopt ($ ch, CURLOPT_USERAGENT, 'Mozilla / 4.0 (compatibil; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322)');

curl_setopt ($ ch, CURLOPT_COOKIEFILE, dirname (__FILE __). / cookie.txt);







Trimiteți-le prietenilor: