2015-01-11 9 views
6

Próbuję pobrać plik my_cookie.txt z ciasteczkiem na Facebooku, aby móc go ponownie użyć z CURL na inne strony Facebooka.Używanie CURL i PHP do pobrania cookie Facebooka po zalogowaniu

Oto mój kod PHP ... Kiedy próbuję tego ... widzę stronę logowania na Facebooku, ale daje mi to błąd mówiąc, że moje pliki cookie w mojej przeglądarce muszą być włączone ... ALE są włączone.

$email = 'my email'; 
$password = 'mypassword'; 
$ch = curl_init(); 
    curl_setopt($ch, CURLOPT_URL, 'https://login.facebook.com/login.php'); 
    curl_setopt($ch, CURLOPT_POSTFIELDS,'email='.urlencode($email).'&pass='.urlencode($password)); 
    curl_setopt($ch, CURLOPT_POST, 1); 
    curl_setopt($ch, CURLOPT_HEADER, 0); 
    curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1); 
    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); 
    curl_setopt($ch, CURLOPT_COOKIEJAR, "my_cookies.txt"); 
    curl_setopt($ch, CURLOPT_COOKIEFILE, "my_cookies.txt"); 
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 
    curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.3) Gecko/20070309 Firefox/2.0.0.3"); 
$page =  curl_exec($ch); 

echo $page; 

Oto błąd widzę

enter image description here

jakiś pomysł co robię źle?

+5

Nie powinieneś próbować zdrapywać stron Facebooka, jest to sprzeczne z ich TOS. Jeśli chcesz coś zrobić na Facebooku, użyj ich API. – CBroe

Odpowiedz

1

spróbuj dodać te linie:

curl_setopt($ch, CURLOPT_COOKIESESSION, true); 
curl_setopt($ch, CURLOPT_COOKIEJAR, uniquefilename); 
curl_setopt($ch, CURLOPT_COOKIEFILE, uniquefilename); 

Od: PHP Curl And Cookies

+0

Miałem już 2 ostatnie, próbowałem dodać pierwsze i dało mi ten sam wynik. – user3011784

+0

Wtedy może być możliwe, że Facebook używa plików cookie javascript zamiast plików cookie po stronie serwera, jeśli tak, byłoby to trudniejsze do wdrożenia. Spróbuj debugować i znajdź od której strony otrzymujesz ciasteczka. – manuelbcd

+0

OK, dziękuję, zrobię to. – user3011784

0

Hej ty próbował ustawić uprawnienia plików my_cookies.txt do 644 pozwolenia? Ponadto będziesz potrzebował wszystkich trzech linii powyżej.

$cookie_file = "my_cookies.txt"; 
curl_setopt($ch, CURLOPT_COOKIESESSION, true); 
curl_setopt($ch, CURLOPT_COOKIEFILE, $cookie_file); 
curl_setopt($ch, CURLOPT_COOKIEJAR, $cookie_file); 
+0

musisz również upewnić się, że masz asy do tego ciasteczka. chmod 777 my_cookies.txt –

0

Niektóre ciasteczka o nazwie datr potrzeba utworzenia z javascript lub logowanie nie działa. Dostałem to ciasteczko z mojej przeglądarki i dodałem ten ciąg do pliku cookie i pomyślnie się zalogowałem!

4

Przede wszystkim jest to sprzeczne z TOS na Facebooku (lepsze wykorzystanie api).

Logowanie nie polega tylko na trafieniu na stronę logowania. Najpierw przeglądaj stronę główną (w tym przypadku użyj curl) i przechowuj plik cookie w słoiku. Następnie podczas logowania użyj pliku cookie z prośbą o zalogowanie. Może być konieczne znalezienie tokena lub czegoś podobnego na stronie głównej (jeśli używają dowolnego).

Więc kroki są dla każdej witryny, którą chcesz złożyć zamówienie login:

1) Zwiedzaj stronę główną za pomocą curl. Przechowuj ciasteczka za pomocą słoika I nie zapomnij zamknąć loków.

2) Jeśli strona ma dowolny parametr tokenu lub ukryty, przeanalizuj go w html.

3) Zainicjuj nowe zawijanie, przygotuj parametr post z parametrem user/pass + ukryte parametry. Nie zapomnij dodać słoika z plikami cookie.