ใช้ CURL และ PHP เพื่อรับคุกกี้ Facebook เมื่อเข้าสู่ระบบ

ฉันกำลังพยายามรับ my_cookie.txt ด้วยคุกกี้ของ Facebook ดังนั้นฉันจึงสามารถนำมันกลับมาใช้ใหม่กับ CURL สำหรับหน้า Facebook อื่น ๆ ได้

นี่คือโค้ด PHP ของฉัน... เมื่อฉันลองสิ่งนี้... ฉันเห็นหน้าเข้าสู่ระบบ Facebook แต่มันทำให้ฉันมีข้อผิดพลาดแจ้งว่าคุกกี้ของฉันในเบราว์เซอร์ของฉันต้องเปิดใช้งาน... แต่พวกมันเปิดใช้งานอยู่

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

นี่คือข้อผิดพลาดที่ฉันเห็น

ป้อนคำอธิบายรูปภาพที่นี่

มีความคิดอะไรบ้างที่ฉันทำอะไรผิด?


person user3011784    schedule 11.01.2015    source แหล่งที่มา
comment
คุณไม่ควรพยายามขูดหน้า Facebook เนื่องจากขัดต่อ TOS ของพวกเขา หากคุณต้องการทำอะไรบน Facebook ให้ใช้ API ของพวกเขา   -  person CBroe    schedule 12.01.2015


คำตอบ (4)


ก่อนอื่นมันขัดกับ TOS ของ facebook (ควรใช้ api ดีกว่า)

การเข้าสู่ระบบไม่ได้เกี่ยวกับการกดปุ่มหน้าเข้าสู่ระบบเท่านั้น คุณต้องเรียกดูหน้าแรกก่อน (ในกรณีนี้คือใช้ curl) และจัดเก็บคุกกี้ไว้ในโถ จากนั้นในระหว่างการเข้าสู่ระบบให้ใช้คุกกี้พร้อมกับคำขอเข้าสู่ระบบของคุณ คุณอาจต้องค้นหาโทเค็นหรืออะไรทำนองนั้นจากหน้าแรก (ถ้ามี)

ดังนั้นขั้นตอนสำหรับไซต์ใดๆ ที่คุณต้องการขอเข้าสู่ระบบ:

1) เรียกดูหน้าแรกโดยใช้ Curl เก็บคุกกี้โดยใช้โถ และอย่าลืมปิดลอนผมด้วย

2) หากเพจมีโทเค็นหรือพารามิเตอร์ที่ซ่อนอยู่ ให้แยกวิเคราะห์สิ่งนั้นจาก html

3) เริ่มต้นขดใหม่ เตรียมพารามิเตอร์โพสต์ด้วยพารามิเตอร์ผู้ใช้/พาส + ที่ซ่อนอยู่ อย่าลืมใส่โถคุกกี้ด้วย

person Sabuj Hassan    schedule 27.06.2016

ลองเพิ่มบรรทัดเหล่านี้:

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

จาก: PHP Curl และคุกกี้

person manuelbcd    schedule 11.01.2015
comment
ฉันมี 2 อันสุดท้ายแล้ว ฉันลองเพิ่มอันแรกและมันก็ให้ผลลัพธ์เดียวกัน - person user3011784; 12.01.2015
comment
อาจเป็นไปได้ที่ Facebook ใช้คุกกี้จาวาสคริปต์แทนคุกกี้ฝั่งเซิร์ฟเวอร์ หากเป็นเช่นนั้น การดำเนินการจะยากขึ้น พยายามแก้ไขข้อบกพร่องและค้นหาว่าคุณได้รับคุกกี้จากด้านใด - person manuelbcd; 12.01.2015

คุณได้ลองตั้งค่าการอนุญาตไฟล์จาก my_cookies.txt เป็น 644 แล้วหรือยัง? นอกจากนี้คุณจะต้องมีทั้งสามบรรทัดด้านบน

$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);
person berong91    schedule 25.06.2016
comment
คุณต้องแน่ใจว่าคุณมีเอซสำหรับคุกกี้นั้นด้วย chmod 777 my_cookies.txt - person Cobuz Alexandru; 27.06.2016

คุกกี้บางตัวชื่อ datr จำเป็นต้องตั้งค่าด้วยจาวาสคริปต์ มิฉะนั้นการเข้าสู่ระบบจะไม่ทำงาน ดังนั้นฉันจึงได้รับคุกกี้นี้จากเบราว์เซอร์ของฉัน และเพิ่มสตริงนี้ลงในไฟล์คุกกี้ และลงชื่อเข้าใช้ได้สำเร็จ!

person Alex    schedule 25.06.2016