pobieranie cookies

0

witam
próbuję pobrać pliki cookies z serwisu poprzez curl
zapisuję je lokalnie do pliku i potem czytam ten plik

problem mam z cookies ładowanymi dynamicznie np z javascript czy google analytics

ma ktoś pomysł jak pobrać i takie cookies?

chętnie zapłacę parę zł jak ktoś ma działające rozwiązanie

0

musisz napisać cały wielki parser javascriptu w php - czyli wielką część przeglądarki internetowej. w skrócie zapewne: nie da się. możesz próbować ściągać silnik V8 (parser javascriptu wykorzystywany przez Google Chrome np.) i zmuszać to do współpracy z php, ale zapewne doświadczonemu zajęłoby to długie tygodnie

edit: jeżeli celujesz w pojedynczą stronę - możesz ręcznie analizować kod js - ale jak to ma działać z automatu na wszystkich stronach to mogę Cię tylko pobłogosławić

0

o kurde, to aż tak trudne?
a chociaż Google Analytics? gdzie są stałe nazwy ciasteczek? _umta itd?

0

akurat skrypty google analytics pewnie beda pakowanie, obfuskowane i ciezkie do zrozumienia

ale moze inaczej: co probujesz osiagnac (nie w kodzie, tylko słowami)? bo ty moze po prostu od "d" strony sie za to bierzesz i naświetlimy Ci lepszą metodę?

0

klient wymyslil automat, ktory ma sprawdzac czy na stronie jego wewnetrznych klientow sa cookies i wysylac do nich maila, ze sa
no i pobieram sobie cookies z cURL ale nie pobiera mi np GA

dlatego napisalem, ze chetnie sie podziele $ jak ktos ma gotowe rozwiazanie

0

No to możesz wyszukiwać w źródle link do GA - GA zawsze zapisze ciasteczko, więc od razu jest to znak, że ciasteczka są wykorzystywane. Ale full automatu nie zrobisz, nie w php - mógłbyś np. napisać rozszerzenie do jakiejś przeglądarki - które odwiedza listę adresów, po władowaniu strony sprawdza istnienie ciastek (tutaj z kolei dostaniesz ciastka nieoznaczone jako httpOnly więc dobrze to połączyć ze sprawdzaniem w php), jeżeli są ciastka - w jakiś sposób przesyła do Ciebie tę informację. I potem korzystasz z tego w tej formie, że odpalasz przeglądarkę i swój dodatek i sprawdzasz. Gorzej jak chcesz mieć to zautomatyzowane i postawić np. na shared hostingu. Wtedy raczej takie rozwiązanie należy do kategorii "nie do zrobienia" (ofc za kilka tys ktos Ci zrobi).

0

hm no jakoś się na pewno da, podesłali mi linka że na stronie eciastka.com.pl można to sprawdzić i oni chcą taki system jak tam, ale do użytku własnego, a po sprawdzeniu puścić maila do klienta jeżeli wykryło u niego ciastko

0

No spoko, tylko to i tak nie działa :D
http://i.imgur.com/Emk29T6.jpg
http://i.imgur.com/M3lW55i.jpg

No i to firma jakaś - MOGLI faktycznie napisać coś na silniku V8 do sprawdzania, ale tego nie zrobili - bazują tylko na jakimś sprawdzaczu znanych im skryptów.

Robienie tego z automatu, kiedy sprawdzenie strony zajmuje 3 sekundy to niepotrzebna inwestycja, przerost formy nad treścią i strzelanie z armaty do motyli - pokaż klientowi tego posta ;)

0

no niestety, taka odpowiedź jest nieakceptowalna :)

to nie o to chodzi, że coś ma sens lub go nie ma, lub lepiej ręcznie coś wpisywać

chcą automat, to trzeba pokombinować jak go stworzyć
wyobrażasz sobie typka, który ma do ręcznego wklepania i sprawdzenia 1000 domen?

0

Życzę Ci szczerze powodzenia robić to jako automat w php ;)
Nawet robiąc to innymi metodami - strona może przesyłać ciastka np. tylko po określnej akcji (przejście na podstronę, albo przy pomocy javascriptu kliknięcie czegoś) - praktycznie niemożliwym jest zrobienie skutecznego automatu.

0

Możesz parsować kod strony, wyciągać cały js oraz linkowane pliki js, oraz pliki js linkowane przez pliki js itp. i szukać ciągu document.cookie, albo - bezpieczniej - .cookie. Już samo wyszukanie kodu js będzie trudne, a znalezienie proponowanego ciągu nie gwarantuje, że strona faktycznie stawia ciastko, z kolei brak tego ciągu nie oznacza, że strona nie stawia, bo przecież ciacho może ustawiać serwer. Brak/obecność ciągu .cookie jest tylko sugestią.
Jest drugie rozwiązanie, o którym wspomniał dzek69 - musisz skorzystać z silnika przeglądarki (samo V8 to za mało) obsługującego js, otworzyć w nim stronę i sprawdzić, czy jakieś ciasteczko zostało utworzone. Nadal nie daje to stuprocentowej gwarancji, bo przecież ciacho może się ustawiać po jakiejś akcji użytkownika.

Moim zdaniem to co najmniej trudne zadanie.

0

czyli krótko mówiąc mam problem...

swoją drogą, ciekawe jak to zrobili ci od eciastka.com.pl

nie jest idealnie, ale akceptowalnie ;/

0

Postaw sobie VMkę z przeglądarką (np. VirtualBox ma ogromne API), w środku VM wywołaj przez API polecenie ’chrome http://example.com/’ (czy jaką tam przeglądarkę chcesz) , zaczekaj aż się strona załaduje i sprawdź ciastka. GA uchwycisz ze skutecznością 99%.

0

nie jest idealnie, ale akceptowalnie ;/

Nie zgodzę się, skoro NAJZWYKLEJSZEGO w zasadzie wywołania ciastka jakie można było zrobić nie złapało. Dla mnie to bazuje na znanej sobie liście skryptów i tyle. Znajdziemy linka do GA? To piszemy, że są ciastka. Itd.

0

dziękuję wszystkim za odpowiedzi

i pozdrawiam serdecznie :)

0

Jeżeli jesteś ciekaw jak działa/działała eciastka.com.pl
http://blog.aurelius.pl/jak-turkuc-udlawil-sie-marchewka-czyli-krasc-tez-trzeba-umiec/ :P

A co do strony to VMka i jakaś przeglądarka. Tak jest chyba na http://www.ciasteczka.info choć sam nie mam pojęcia jak potem z przeglądarki wyciągnąć ciastka :-/

0
marek_php napisał(a):

Podejrzewam, że to spam, z drugiej strony - ciasteczka.info działa zdecydowanie lepiej i nie wykłada się na banalnym przykładzie. Jeżeli spam - to szkoda, że autor nie podzielił się rozwiązaniem.
Spam i to jeszcze z groźbami do dostałem od ecistka.com.pl i szukając o nich informacji trafiłem na ciasteczka.info - póki co najlepsze narzędzie tego typu jakie widziałem, może by tak napisac do autora, może coś zdradzi :D
A co do rozwiązania problemu to ja mam postawioną WVkę z którą mogę się komunikować po konsoli. Skrypt z CRONa co jakiś czas zczytuje mi requesty stron do sprawdzenia i z konsoli odpala mi na VMce Firefoxa ale tutaj mam problem, bo nie wiem jak z Firefoxa zapisać do pliku informacje o cookies. Na początku liczyłem na Greasemonkey ale ten nie ma API do zapisywania plików. Ma ktoś jakiś pomysł? Gdyby udało się to zrobić to dalej z górki bo na VMce można odpalić jakiś PHP który wyślę wyniki na jakiś serwer i pozamiatane :D

0

Może skrypt do greasemonkey, który jak już strona się załaduje - przeczyta cookies i najzwyczajniej w świecie prześle te dane ajaxem?
Czyli: wbijam na stronę (powiedzmy ciastka.pl), robię pytanie czy na stronie xxx.pl są ciastka - serwer zapisuje jakiś uid zapytania, odpala firefoxa na vmce, podając też ten uid do niego (np. jako ekstra parametr GET), firefox załaduje stronę, odczeka chwilę, sprawdzi ciastka i wyśle je ajaxem do serwera ciastka.pl podając uid, wtedy ja będąc na ciastka.pl doczekuję się wyniku całej operacji.

edit: jakie groźby od eciastka.com.pl ?

0
dzek69 napisał(a):

edit: jakie groźby od eciastka.com.pl ?

Taki spam od nich dostałem:

Witam,

W związku ze zmianą prawa telekomunikacyjnego Jesteś zobowiązany umieścić informację o cookies(ciasteczkach) na swojej stronie internetowej.

UKE nakłada kary do 3% przychodu za rok ubiegły zgodnie z art. 173
Prawa Telekomunikacyjnego za brak polityki cookies.

Sprawdź BEZPŁATNIE czy twoja strona wymaga zmian - czyli wprowadzenia
informacji o wysyłaniu plików cookies pod adresem www.eciastka.com.pl
lub wyślij nam swój adres www zrobimy to za Ciebie.

  • tj, masz na stronie na pewno ciasteczka, zapłać nam inaczej UKE nałoży na Ciebie karę - tak to brzmi :P

A co do pomysłu z AJAX-em to... dzięki wielkie, działa :-) !!! Tylko... jeszcze jeden problem :/ Na http://www.ciasteczka.info strona wykrywa też ciasteczka umieszczone z innych domen (np. Gemiusa jeśli są jego statystyki podpięte) i nie wiem jak się dobrać do tych ciasteczek z poziomu GM :-/ Cholera, jak oni to zrobili :-/

0

Hm. No tak.

Widzę dwie opcje:

  1. odnaleźć gdzie FF trzyma ciastka. Wyzerować to przed każdym żądaniem (ważne, żeby żądania się nie nakładały na siebie, tj dopóki jedno nie skończy - drugie musi czekać). Po żądaniu dobrać się do tego pliku i go parsować (jeżeli nie jest jakieś szyfrowane).

  2. nie pisać skryptu do GM, napisać cały dodatek do FF jak to narzędzie - masz wtedy większą kontrolę nad dostępem do poszczególnych rzeczy, z tego wyciągasz wszystkie ciastka i możesz je zwracać już wg uznania.

0

marek_php sam też się zastanawiałem :P myślałem, że prościej to zrealizowali

0

Firefox trzyma ciasteczka w SQLLite więc pobranie ich jest całkiem proste ale to jak wspomniałeś wymaga kolejkowania. A i tak w rozwiązaniu z VM na wynik musze czekac dobre 3-4 minuty a teraz to będzie trwać jeszcze dłużej. Żeby to działało trzeba:

  • poczkeać na request (tutaj ma opóźnienie do 60 sekund bo co tyle je odczytuje, nie da się szybciej CRONem :/),
  • wyczyścić profil FF (kilka sekund),
  • odpalić FF (na VM trwa to nawet 2-3 minuty),
  • pełne załądowanie strony (30 sekund - 2 minuty),
  • wysłać event o załadowaniu (kilka sekund),
  • odpalić skrypt ładujący ciastka z SQLLite (pewnie kilka sekund),
  • wysłać zebrane ciasteczka na serwer (kolejne kilka sekund)
  • odebranie (do 60 sekund - CRON).

I teraz wystarczy, że 4 osoby wyślą request w dostepie kilku sekund i 4-ta będzie musiała czekać na wyniki nawet 20 minut co jest całkowicie nie akceptowalne - na tamtej stronie musieli to rozwiązać jakoś inaczej albo mają farmę serwerów :-/ Poddaje się :(

0

IMHO lepiej mieć VM z zapisem różnicowym i zerować ją co zapytanie - efekty ew. włamania na VM będą mniejsze. Sprawa warta uwagi, bo exploitów na przeglądarki jest masa.

0
  • poczkeać na request (tutaj ma opóźnienie do 60 sekund bo co tyle je odczytuje, nie da się szybciej CRONem ),

to możesz czymś zastąpić. możesz uruchomić sam prostą aplikację w php [oczywiscie mozna inne metody, to najprostszy przyklad], która w nieskonczonej petli bedzie miala sleep(1) i sprawdzenie czy jest nowe zadanie. potem uruchomić odpowiednie polecenie.
nie wiem też czy musisz zamykać firefoxa tak za każdym razem.

to już duży zysk czasu

wersja z pisaniem własnego dodatku (nie skryptu GM) byłaby jeszcze szybsza.

0

@dzek69: Gdyby po robocie przywrócić VMkę do snapshota na którym wszystko już było gotowe do pracy i uruchomione to byłoby i szybciej i bezpieczniej.

0
Demonical Monk napisał(a):

@dzek69: Gdyby po robocie przywrócić VMkę do snapshota na którym wszystko już było gotowe do pracy i uruchomione to byłoby i szybciej i bezpieczniej.

Tylko, że przywrócenie VMki ze snapshota trwa dość długo a sama instalacji VM-ki ze środowiskiem graficznym wymaga dedyka o bardzo mocnych parametrach (czytaj - drogo). To da się jakoś zrobić bez VM-ki bo nie możliwe by na http://www.ciasteczka.info działało to tak szybko z VM-ką :-/ Na tej stronie wyniki są po 2-6 sekundach a niewiele krócej trwa załadowanie samej strony na VM-ce (a gdzie odebranie requesta, wysłanie wyników, wyczyszczenie ciasteczek etc.). Eh... porwałem się z motyką na słońce :-(

0

@dzek69 Uh, tak sobie czytam ten temat na forum i czekam aż ktoś wpadnie na rozwiązanie ;-) Tego serwisu nikt nie robił nam na zlecenie, zrobiły go 3 osoby w pół następnego dnia po wejściu w życie ustawy o ciasteczkach na kolanie i na szybko (łącznie z tym mechanizmem od ciastek który co niektórzy jak widzę próbują stworzyć od tygodnia :P). Ja, grafik i szef który pisał teksty (stad ta wzmianka o PHP którą usunąłem - szef nie jest programistą). Natomiast target="blank" i javascript w href to moje niedopatrzenie czyli tego samego geniusza ;) który stworzył ten mechanizm którego nikt tutaj skopiować nie potrafi :P Rozwiązaniem chętnie się podzielę ale nie teraz :-)

0

Jeśli zajęło to wam tak krótko, to zgaduję, że używacie prostego mechanizmu takiego jak opisany tutaj: http://stackoverflow.com/questions/895786/how-to-get-the-cookies-from-a-php-curl-into-a-variable - bo nie wierzę, że w pół dnia obczailiście jak sprawdzić ciastka stawiane przez js.

0
ŁF napisał(a):

Jeśli zajęło to wam tak krótko, to zgaduję, że używacie prostego mechanizmu takiego jak opisany tutaj: http://stackoverflow.com/questions/895786/how-to-get-the-cookies-from-a-php-curl-into-a-variable - bo nie wierzę, że w pół dnia obczailiście jak sprawdzić ciastka stawiane przez js.

Źle zgadujesz. Stworzenie tego mechanizmu w obecnej postaci zajęło mi jak powiedziałem pół dnia i nie musiałem nic obczajać bo po prostu od początku wiedziałem jak to zrobić. Takich głupich zabaw z curl bym się nawet nie podejmował bo to tylko strata czasu.

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