![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 372 Pomógł: 1 Dołączył: 13.06.2008 Ostrzeżenie: (0%) ![]() ![]() |
Cześć,
Mam duży problem z poberaniem sesji przez curl. Mam 2 requesty pierwszy zbiera sesję, drugi wykonuje zapytanie w post (który wymaga sesji). Problem w tym, że ten pierwszy nie pobiera mi poprawnie sesji. Gdy odpalam stronę przez curl, w headerze strony wyrzuca mi atrybut np."Set-Cookie: JSESSIONID=07tP-hXzHurc-bL9bpOvVzmK; Path=/; HttpOnly", później gdy wrzucam go jako sesję w drugim curlu to strona wyrzuca mi "<partial-response>". Po każdym odświeżeniu strony JSESSIONID zmienia wartość. W momencie jednak, gdy kopiuje sesję z przeglądarki wszysko śmiga. Starałem się dopisywać atrybuty jak leci i dalej nic. Jak sprawić, żeby strona poprawnie utworzyła sesję? Pierwszy curl wyglada tak: Kod $chh = curlinit(); curlsetopt($chh, CURLOPT_URL, $strona); curl_setopt($chh, CURLOPT_FOLLOWLOCATION, true); curl_setopt($chh, CURLOPT_COOKIEJAR, $tmpfname); curl_setopt($chh, CURLOPT_COOKIEFILE, $tmpfname); curl_setopt($chh, CURLOPT_SSL_VERIFYHOST, false); curl_setopt($chh, CURLOPT_SSL_VERIFYPEER, false); curl_setopt($chh, CURLOPT_RETURNTRANSFER, 1); curl_setopt($chh, CURLOPT_VERBOSE, 1); curl_setopt($chh, CURLOPT_COOKIESESSION, 1); curl_setopt($chh, CURLOPT_HEADER, 1); $header_size = curl_getinfo($chh, CURLINFO_HEADER_SIZE); $header = substr($response, 0, $header_size); $exp = explode("Set-Cookie:", $header); $sesja = explode("; Path=/; HttpOnly", $exp[1]); Dodam jeszcze, że strona w firefoxie wyrzuca mi np: Kod Cookie: __utma=179393144.1468963194.1462999507.1462999507.1462999507.1; _ga=GA1.3.1468963194.1462999507; JSESSIONID=UhpC5Rq4mETGZxq4wPXBgAJf Natomiast tak jak wyżej, w curlu ten atrubut to nie Cookie: tylko Set-Cookie: Ten post edytował Watt 9.02.2017, 21:38:58 |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 1 240 Pomógł: 278 Dołączył: 11.03.2008 Ostrzeżenie: (0%) ![]() ![]() |
Od google analytics na pewno nie bo to javascript dodaje te ciastka.
Masz też ustawione: curl_setopt($chh, CURLOPT_COOKIESESSION, 1); co jest chyba błędem w Twoim przypadku: Cytat Pass a long set to 1 to mark this as a new cookie "session". It will force libcurl to ignore all cookies it is about to load that are "session cookies" from the previous session. By default, libcurl always stores and loads all cookies, independent if they are session cookies or not. Session cookies are cookies without expiry date and they are meant to be alive and existing for this "session" only.
|
|
|
![]() ![]() |
![]() |
Aktualny czas: 9.10.2025 - 15:06 |