Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP][CURL]Logownaie wykryte jako atak
Forum PHP.pl > Forum > Przedszkole
siurek22
Witam chce sie zalogowac na moje konto na erepublik.com w celu pobrania czesci informacji... Pewnie ktos powie ze jest od tego api ale ja chce pobrac wartosc pensji moich pracownikow a tego tam niema. Dobra to wyglada to tak uzywam ponizszego kodu i po jego uzyciu otrzymuje komunikat "CSRF attack detected.", chce sie tylko zalogowac token pobieram wiec dlaczego dostaje taki komunikat?

Kod
<?php
function token($content)
 {
     preg_match("@<input type=\"hidden\" id=\"_token\" name=\"_token\" value=\"(.*?)\" \/>@i", $content, $w);
     return $w[1];
 }
$hand = curl_init();

//pobieranie tokena
curl_setopt($hand, CURLOPT_URL, 'http://www.erepublik.com/en/login');
curl_setopt($hand, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($hand, CURLOPT_USERAGENT, "Mozilla/5.0 (compatible; MSIE 8.0; Windows NT 5.1)");
$p=curl_exec($hand);
$token = token($p);

//logowanie
curl_setopt($hand, CURLOPT_URL, 'http://www.erepublik.com/en/login');
curl_setopt($hand, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($hand, CURLOPT_POST, 1);
curl_setopt($hand, CURLOPT_POSTFIELDS, "_token={$token}&citizen_name=login&citizen_password=haslo&commit=Login");
curl_setopt($hand, CURLOPT_USERAGENT, "Mozilla/5.0 (compatible; MSIE 8.0; Windows NT 5.1)");
$p=curl_exec($hand);
echo htmlspecialchars($p);
 
curl_close($hand);

?>
pgrzelka
może za szybko wykonujesz czynności i skrypt to wykrywa i uznaje Cię za bota?
siurek22
dalem sleep(5) i nic niedalo, ten sam komunikat. jezeli komus sie niechce rejestrowac to podaje konto testowe login i haslo: atmeras
qwerty12
Jako nagłówek Referer musisz przed próbą zalogowania ustawić http://www.erepublik.com/en - wtedy loguje się bez problemu smile.gif
dwuklik
hm... odświerzam temat z przed 2 lat. również staram się zalodować z PHP. pewnie się wycwanili, bo pomimo ustawienia referrera, dalej wyłapują mnie jako atak. komuś udało się obejść?
by_ikar
Musisz wykonać 2 czynności. Wejść na stronę i pobrać token:

  1. <input type="hidden" value="a128a753d494e1bebf69bb3fa7e1d4e" name="_token" id="_token">


A następnie zalogować się, dodając dodatkowy parametr _token, z wcześniej pobraną zawartością. Z tym że przy każdym wejściu poprzez curl na stronę, nie musisz nawet trzymać tego samego ciasteczka, bo z tego co zauważyłem to token nie jest jakoś ustalany na podstawie sesji, a raczej na podstawie adresu IP, oraz user agenta przeglądarki, tak więc trzymaj wszędzie tego samego user agenta.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.