2015-01-11 10 views
6

Sto cercando di ottenere my_cookie.txt con il cookie di Facebook in modo da poterlo riutilizzare con CURL per altre pagine di Facebook.Utilizzo di CURL e PHP per ottenere un cookie facebook al login

Ecco il mio codice PHP ... Quando provo questo ... vedo la pagina di accesso di Facebook ma mi dà un errore dicendo che i miei cookie nel mio browser devono essere abilitati ... MA sono abilitati.

$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; 

Qui è l'errore che vedo

enter image description here

Qualsiasi idea di cosa sto facendo male?

+5

Non dovresti provare a grattare le pagine di Facebook, è contro i loro TOS. Se vuoi fare qualcosa su Facebook, usa la loro API. – CBroe

risposta

1

provare ad aggiungere queste righe:

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

Da: PHP Curl And Cookies

+0

Ho già avuto l'ultimo 2, ho provato ad aggiungere il primo e mi ha dato lo stesso risultato – user3011784

+0

Quindi potrebbe essere possibile che Facebook usi i cookie javascript invece dei cookie lato server, se così fosse sarebbe più difficile da implementare. Prova a eseguire il debug e trova da quale parte stai ricevendo i cookie – manuelbcd

+0

ok, grazie lo farò. – user3011784

0

Hey hai provato a impostare il file il permesso di my_cookies.txt-644 permesso? Inoltre, avrai bisogno di tutte e tre le linee sopra.

$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

devi anche assicurarti di avere assi per quel cookie. chmod 777 my_cookies.txt –

0

Alcuni dei biscotti chiamati datr necessità di istituire con javascript o login non funzionano. Quindi ho preso questo cookie dal mio browser e ho aggiunto questa stringa al file cookie e ho effettuato l'accesso con successo!

4

Prima di tutto è contro i TOS di Facebook (meglio usare api).

L'accesso non è solo per colpire la pagina di accesso. Devi prima esplorare la home page (usando l'arricciatura in questo caso) e memorizzare il cookie in jar. Quindi durante il login usa il cookie con la tua richiesta di accesso. Potrebbe essere necessario trovare il token o qualcosa del genere dalla home page (se ne usano).

Così i passaggi sono per qualsiasi sito che si vuole fare una richiesta di accesso:

1) Percorso home page con ricciolo. Conserva i cookie usando il barattolo. E non dimenticare di chiudere il ricciolo.

2) Se nella pagina sono presenti token o parametri nascosti, analizzarli dall'html.

3) Inizializzare un nuovo ricciolo, preparare il parametro post con i parametri utente/passaggio + nascosto. Non dimenticare di aggiungere un barattolo di biscotti.