Wysyłanie dodatkowych ciastek CURL

0

Witam, mam problem z wysłaniem dodatkowych ciastek, tzn tak, mam kod który loguje się na stronę, normalnie otrzymuje ciastka i używa ich to kolejnych zapytań, aczkolwiek kolejne zapytania już głębiej w kodzie, wymagają wysyłania kilku parametrów w ciastkach, chodzi o dodanie kilku parametrów do aktualnych ciastek. Kod wygląda tak:

$cookie = 'var1='.urlencode($config['log']);   // ta zmienna zawiera więcej niż jeden parametrów lecz to jest nieistotne
curl_setopt($ch, CURLOPT_COOKIE, $cookie); 
curl_setopt($ch, CURLOPT_URL, 'https://locaIp.adress/');
curl_setopt($ch, CURLOPT_POSTFIELDS, array('var1' => $config['log'],); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 
$echo = curl_exec($ch); 

Lecz CURLOPT_COOKIE nie działa, po prostu nie wysyła tych ciastek, próbowałem kilku rozwiązań
np.

$echo = preg_match('/^Set-Cookie: ('$cookie');/m', curl_exec($ch), $m);

Na zagranicznym forum wyczytałem aby po prostu dodać wartości w pliku cookie.txt poprzez funkcje
CURLOPT_COOKIEFILE
CURLOPT_COOKIEJAR
aczkolwiek to rozwiązanie 1.nie działa 2.nie przekonuje mnie, wolałbym dodawać i wysyłać zapośrednictwem zmiennych.

Pozdrawiam.

0

Tak jakbym to że zagramanicą masz lepsze odpowiedzi, czy na pewno zrobiłeś tak, i czy jesteś pewien że JS na tej stronie nie modyfikuje tych ciastek?

curl_setopt($ch, CURLOPT_COOKIEFILE, dirname(__FILE__) . '/cookies.txt');//odczyt
curl_setopt($ch, CURLOPT_COOKIEJAR, dirname(__FILE__) . '/cookies.txt');//zapis
0

Dopisanie ciastek do słoika (jar) jest w zasadzie jedyną opcją, która jeszcze ma jako taki sens. cURL dla PHP jest ubogie, a przy ciastkach to już szczególnie. Być może ktoś napisał lepszą niż cURL bibliotekę, nigdy nie szukałem, może warto poszukać?

0

Tak, użyłem takich funkcji, W jaki sposób prawidłowo dodać moje zmienne do formatu cookie tworzonego przez Curla?

# Netscape HTTP Cookie File
# http://curl.haxx.se/docs/http-cookies.html
# This file was generated by libcurl! Edit at your own risk.

Page adress	FALSE	/	FALSE	0	PHPSESSID	uh382b23h08d2
#HttpOnly_Page adress	FALSE	/	TRUE	7453453	dcd	OHR3IWHOW3IRW3ROIW3RJOIW3RJRW3IOJWR3OIJWR3OIJWR3JDWAWDWADAWDWADWADWADAWDADWAWDVDSA
#HttpOnly_Page adress	FALSE	/	TRUE	0	cc_chat	OADOIJAWONDAKDALWKNDALW

Te cookie tworzone przez Curla są odmienne od tych przeglądarkowych, czy z zapytania,
jak i gdzie dodac wartości np.
variable1=value1; variable2=value2; variable3=value3

Dodanie na koncu pod ";" poprzedniej wartości nie działało.

Wolałbym zostać przy Curlu jednak.

0
# Netscape HTTP Cookie File
# http://curl.haxx.se/docs/http-cookies.html

Weź sobie załaduj cookies do zmiennej walnij var_dump() i zobacz jak wyglądają, zrób sobie na taki sam wzór i wrzuć z powrotem... i zobacz czy działa.
Zacznij też działać coś sam a nie podali mi coś, ja to wżuciłem ale nie działa to napisze jeszcze.

0

Niezbyt wiem w jaki sposób wykorzystać funkcje var_dump, moje pytanie brzmiało jak ręcznie w tym pliku cookies dodać własne parametry aby sprawdzić to, manual curla czytałem, ich funkcja gotowa nie działa. działałem sam 2 dni, a parametry w ciastkach nadal nie wychodzą z Curla, generalnie nigdy nie używałem curla ani ciastek dlatego pytam.

0

w tym linku na początku pliku z ciastkami masz opis tego formatu z tego co pamiętam. poczytaj

0

Dziękuje za odpowiedzi, aczkolwiek nie widze tam nigdzie odpowiedzi na moje pytanie, mógłbym prosić o jakiś przykład dopisania tych wartosci do ciastek, lub edycji stricte z kodu? Pozdrawiam.

0

Masz podany sytanx, to chyba nie problem dostawić do pliku trochę tekstu oddzielonego bodajże znakiem tabulacji? ;) Wystarczy odrobina Twojej inicjatywy.
A gotowców szukaj na phpclasses.org, albo najlepiej poszukaj sobie tam zamiennika biblioteki cURL.

0

Po dodaniu tych wartosci ręcznie, wg manuala

<ort>127.0.0.1 FALSE / TRUE 0 variable value
127.0.0.1 FALSE / TRUE 0 variable value</ort>
Nie działa,
Zastanawia mnie także fakt, jeżeli skasuje cookie.txt to skrypt go nie tworzy, on się pojawia dopiero po jakimś czasie, mimo że skrypt działa(logowanie), nawet jeżeli skasuje zapisywanie cookie, i zostawię tylko ładowanie cookie z pliku i wpisze tam np "doawkodawk" to i tak skrypt działa, czegoś tutaj nie rozumiem?
To powinno raczej od razu po zalogowaniu stworzyć plik z ciastkami i potem go używać, a tak nie jest

0

mogłby ktoś pomóc ?

$headers = array('Accept-Language: pl-PL,pl;q=0.8,en-US;q=0.6,en;q=0.4', 'Accept-Charset: ISO-8859-2,utf-8;q=0.7,*;q=0.7', 'Set-Cookie: cookieMan_amount=20; cookieMan_payid=6; httpOnly');
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);

Taki sposób też nie działa.

0

Używając nagłówka Set-Cookie każesz ustawić ciastko. Set-Cookie to nagłówek wysyłany przez serwer HTTP, za pomocą którego, mówi przeglądarce użytkownika, aby ta ustawiła sobie ciastko.

Jeśli dobrze zrozumiałem wątek, chcesz PRZESŁAĆ ciastko do SERWERA www. Aby to zrobić, musisz wysłać nagłówek Cookie: , a nie Cookie-Set:

Ponadto, najpierw przetestuj wszystko ręcznie - używając aplikacji cURL z linii poleceń. Możesz tam zarówno przesyłać ręcznie podane ciastka (parametrem -b) lub ustawić cookie jar'a (parametrem -c).
Jeśli uda Ci się wszystko zrobić poprawnie ręcznie, z linii poleceń, przeniesienie tego do PHP nie powinno stanowić problemu. Łatwiej zazwyczaj debugować, gdy widzisz wyraźnie każdy krok i możesz go zweryfikować.

0

a ja Ci mówię - znajdź sobie inną bibliotekę, albo dopisz do txt, też się z tym męczyłem i z doświadczenia dobrze Ci radzę, sam widzisz, że do tej pory straciłeś dwa dni na kombinowanie innymi drogrami ;)

0

próbowałem także wysyłać jako "Cookie: " niestety także z niepowodzeniem, Próbowałem także dopisać ręcznie cookie tak jak opisane jest to tutaj http://www.cookiecentral.com/faq/#3.5 lecz zaobserwowałem coś dziwnego co opisałem w ostatnim poście na stronie 1
Wolałbym zostać przy curlu gdyż cały kod mam w curlu i średnio chciałbym go przepisywać, Jakieś rady?

# Netscape HTTP Cookie File
# http://curl.haxx.se/docs/http-cookies.html
# This file was generated by libcurl! Edit at your own risk.

#HttpOnly_ADRESS	FALSE	/	TRUE	543634223	dcd	ND1SUBO3BEI2SBUI2B3SIU3BUI2B3IUS3NN2UI3NiubuiiuBUIBIUIN2XB1UI12BXIU12BUIB12IUBXIU212OMXXNEIOOI2NOX1NO12N
ADRESS	FALSE	/	FALSE	0	PHPSESSID	hd9weh239h239489
ADRESS FALSE / TRUE 0 variable value 
ADRESS FALSE / TRUE 0 variable value

Tak wyglądały zmodyfikowane ciastka , następnie ładowałem je do COOKIEFILE i także nie działało.

0

Przeczytałeś dokumentację? Co to w ogóle jest? Skopiowałeś nic nie znaczący przykład skądśtam, razem z "FALSE / TRUE" (gdzie powinieneś był wybrać jedną z wartości)? Tu wszystko od początku do końca jest źle. Wbij sobie na stronę generującą ciastka i analogią sobie wyedytuj. A to z kolei wyskoczyło mi w Google, może Ci rozjaśni: http://blog.omnux.com/index.php/2008/03/25/cookiestxt-file-format/

0

Przecież jest dobrze wg tej stronki, nie jest to skopiowany przykład, cookie jest pobrane ze strony a ja dopisałem dwie wartości , pierwszy parametr False, a drugi true dlatego że połączenie jest szyfrowane.

1 użytkowników online, w tym zalogowanych: 0, gości: 1