2015-01-11 37 views
6

Tôi đang cố gắng lấy my_cookie.txt bằng cookie facebook để tôi có thể sử dụng lại nó với CURL cho các trang facebook khác.Sử dụng CURL và PHP để lấy cookie facebook khi đăng nhập

Đây là mã PHP của tôi ... Khi tôi thử điều này ... tôi thấy trang đăng nhập facebook nhưng nó cho tôi một lỗi nói rằng cookie của tôi trong trình duyệt của tôi phải được kích hoạt ... NHƯNG chúng được kích hoạt.

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

Đây là lỗi tôi thấy

enter image description here

Bất kỳ ý tưởng những gì tôi đang làm sai?

+5

Bạn không nên thử và đánh lừa các trang Facebook, điều đó ngược lại với TOS của họ. Nếu bạn muốn làm điều gì đó trên Facebook, hãy sử dụng API của họ. – CBroe

Trả lời

1

thử thêm những dòng này:

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

Từ: PHP Curl And Cookies

+0

Tôi đã có 2 người cuối cùng, tôi đã thử thêm lần đầu tiên và nó đã cho tôi kết quả tương tự – user3011784

+0

Sau đó, có thể là Facebook sử dụng cookie javascript thay vì cookie phía máy chủ, nếu như vậy sẽ khó thực hiện hơn. Cố gắng gỡ lỗi và tìm từ bên nào bạn nhận được cookie – manuelbcd

+0

ok, cảm ơn bạn tôi sẽ làm điều đó. – user3011784

0

Hey Bạn đã cố gắng thiết lập sự cho phép tập tin của my_cookies.txt-644 phép? Ngoài ra, bạn sẽ cần tất cả ba dòng trên.

$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

bạn cũng cần phải chắc chắn rằng bạn có aces để cookie đó. chmod 777 my_cookies.txt –

0

Một số cookie có tên datr cần thiết lập javascript hoặc đăng nhập không hoạt động. Vì vậy, tôi đã nhận được cookie này từ trình duyệt của mình và thêm chuỗi này vào tệp cookie và đã đăng nhập thành công!

4

Trước hết là chống lại TOS của facebook (sử dụng api tốt hơn).

Thông tin đăng nhập không chỉ là nhấn vào trang đăng nhập. Bạn phải duyệt trang chủ đầu tiên (sử dụng curl trong trường hợp này) và lưu trữ cookie trong jar. Sau đó, trong quá trình đăng nhập, hãy sử dụng cookie với yêu cầu đăng nhập của bạn. Bạn có thể cần phải tìm các mã thông báo hoặc một cái gì đó như thế từ trang chủ (nếu họ sử dụng bất kỳ).

Vì vậy, các bước thực hiện đối với bất kỳ trang web mà bạn muốn thực hiện một yêu cầu đăng nhập:

1) Duyệt trang chủ sử dụng curl. Lưu trữ cookie bằng cách sử dụng jar. Và đừng quên đóng curl lại.

2) Nếu trang có bất kỳ mã thông báo hoặc thông số ẩn nào thì phân tích cú pháp đó từ html.

3) Khởi tạo một curl mới, chuẩn bị thông số bài đăng với thông số người dùng/pass + ẩn. Đừng quên để thêm jar cookie.

Các vấn đề liên quan