我试图通过curl登录facebook,

时间:2010-08-06 18:10:19

标签: php facebook curl cookies

我已经以这种方式成功登录到Facebook,但是当你点击Facebook中的任何内容时它似乎无法保持Facebook登录,它会将你重定向到登录页面。

我考虑过这个+认为这是因为curl使用的是cookie +而不是浏览器,因此当你点击时你没有经过身份验证。

有没有办法设置curl导出到浏览器的cookie文件?

我希望我可以简单地打开php文件+它会卷曲登录我然后将我重定向到我的Facebook页面,感谢这里的帮助是代码:

<?php
  // script name: login_to_facebook.php
  // coder: Sony AK Knowledge Center - www.sony-ak.com

  // your facebook credentials
  $username = "xxxxx";
  $password = "xxxxx";

  // access to facebook home page (to get the cookies)
  $curl = curl_init();
  curl_setopt($curl, CURLOPT_URL, "http://www.facebook.com");
  curl_setopt($curl, CURLOPT_FOLLOWLOCATION, 1);
  curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
  curl_setopt($curl, CURLOPT_ENCODING, "");
  curl_setopt($curl, CURLOPT_COOKIEJAR, getcwd() . '/cookies_facebook.cookie');
  curl_setopt($curl, CURLOPT_USERAGENT, "Mozilla/5.0 (Windows; U; Windows NT 6.0; en-US; rv:1.9.2) Gecko/20100115 Firefox/3.6 (.NET CLR 3.5.30729)");
  $curlData = curl_exec($curl);
  curl_close($curl);

  // do get some parameters for login to facebook
  $charsetTest = substr($curlData, strpos($curlData, "name=\"charset_test\""));
  $charsetTest = substr($charsetTest, strpos($charsetTest, "value=") + 7);
  $charsetTest = substr($charsetTest, 0, strpos($charsetTest, "\""));

  $locale = substr($curlData, strpos($curlData, "name=\"locale\""));
  $locale = substr($locale, strpos($locale, "value=") + 7);
  $locale = substr($locale, 0, strpos($locale, "\""));

  $lsd = substr($curlData, strpos($curlData, "name=\"locale\""));
  $lsd = substr($lsd, strpos($lsd, "value=") + 7);
  $lsd = substr($lsd, 0, strpos($lsd, "\""));

  // do login to facebook
  $curl = curl_init();
  curl_setopt($curl, CURLOPT_URL, "https://login.facebook.com/login.php?login_attempt=1");
  curl_setopt($curl, CURLOPT_FOLLOWLOCATION, 1);
  curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
  curl_setopt($curl, CURLOPT_POST, 1);
  curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
  curl_setopt($curl, CURLOPT_POSTFIELDS, "charset_test=" . $charsetTest . "&locale=" . $locale . "&non_com_login=&email=" . $username . "&pass=" . $password . "&charset_test=" . $charsetTest . "&lsd=" . $lsd);
  curl_setopt($curl, CURLOPT_ENCODING, "");
  curl_setopt($curl, CURLOPT_COOKIEFILE, getcwd() . '/cookies_facebook.cookie');
  curl_setopt($curl, CURLOPT_COOKIEJAR, getcwd() . '/cookies_facebook.cookie');
  curl_setopt($curl, CURLOPT_USERAGENT, "Mozilla/5.0 (Windows; U; Windows NT 6.0; en-US; rv:1.9.2) Gecko/20100115 Firefox/3.6 (.NET CLR 3.5.30729)");
  $curlData = curl_exec($curl);
  curl_close($curl);

  echo $curlData;
?>

1 个答案:

答案 0 :(得分:1)

您正在谈论为您无法控制的域设置Cookie,这是不可能的。