【问题标题】:curl request to facebook redirects me to https://facebook.com/common/invalid_request.php对 facebook 的 curl 请求将我重定向到 https://facebook.com/common/invalid_request.php
【发布时间】:2023-03-22 22:50:01
【问题描述】:

这是我在 2015 年初做的一个类的函数代码的一部分。今天它不再工作了。我的代码中定义的变量,所以这不是问题......

既然我们已经清楚了,让我们进入正题:

问题:

  1. 不生成 cookie
  2. 在登录页面中,我得到一个带有“ 安全政策” ...
  3. 我被重定向到 https://facebook.com/common/invalid_request.php 当我登录时( 下面我会像记录日志一样解释)

糟糕的解决方案:

  1. 要生成 cookie,您所做的只是使用 Chrome 的扩展程序向您显示 cookies.txt,称为 Netscape 格式的 cookies,然后使用 facebook 复制该文件并登录,因为我不允许使用没有 Log 的 cookie 登录。
  2. 我无法修复它

        $ch = curl_init();
        curl_setopt($ch, CURLOPT_URL, 'https://www.facebook.com/');
        curl_setopt($ch, CURLOPT_POST, 0);
        curl_setopt($ch, CURLOPT_HEADER, 0);
        curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
        curl_setopt($ch, CURLOPT_COOKIEJAR, $this->CONFIG['cookie']);
        curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
        curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 2);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
        curl_setopt($ch, CURLOPT_USERAGENT, $this->CONFIG['useragent']);
        curl_setopt($ch, CURLOPT_REFERER, 'http://www.facebook.com');
        curl_exec($ch) or die(curl_error($ch));
        curl_close($ch);
        unset($ch);
    
    
        $ch = curl_init();
        curl_setopt($ch, CURLOPT_URL, 'https://www.facebook.com/login.php');
        curl_setopt($ch, CURLOPT_POSTFIELDS,'email='.urlencode($email).'&pass='.urlencode($pass).'&login=Login');
        curl_setopt($ch, CURLOPT_POST, 1);
        curl_setopt($ch, CURLOPT_HEADER, 0);
        curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
        curl_setopt($ch, CURLOPT_COOKIEJAR, $this->CONFIG['cookie']);
        curl_setopt($ch, CURLOPT_COOKIEFILE, $this->CONFIG['cookie']);
        curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
        curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 2);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
        curl_setopt($ch, CURLOPT_USERAGENT, $this->CONFIG['useragent']);
        curl_setopt($ch, CURLOPT_REFERER, 'http://www.facebook.com');
        $page = curl_exec($ch) or die(curl_error($ch));
        file_put_contents(getcwd().'/debug.html', $page);
        preg_match('/<body class="([^<]+)" dir="ltr">/', $page, $web);
        if(file_exists($this->CONFIG['token'])) unlink($this->CONFIG['token']);
    
        if(preg_match('/home/i', $web[1])) {
            $this->login = true;
            return true;
        } else {
            return false;
        }
        curl_close($ch);
    

【问题讨论】:

  • 我修正了您的英语和问题的格式,以帮助您获得答案。您问题中两个编号列表中的第一项 (1.) 令人困惑。如果可能,请修改它们以使其更清晰。
  • 编辑器有StackOverflow,我不喜欢不惜一切代价......所以我用以为这有多糟糕。

标签: php facebook curl cookies


【解决方案1】:

您无法使用 CURL 登录,您需要实施正确的登录过程,并且您永远不需要密码:https://developers.facebook.com/docs/facebook-login

我建议为此使用 JavaScript SDK,它很容易处理。以下是一些帮助您入门的链接:

【讨论】:

  • 使用适当的过程登录是唯一的方法,你不能自动化。无论如何,这没有合法和严肃的用例。
猜你喜欢
  • 2017-07-08
  • 2015-03-02
  • 1970-01-01
  • 2011-11-17
  • 2016-10-23
  • 1970-01-01
  • 2014-12-28
  • 2013-04-06
  • 2019-09-08
相关资源
最近更新 更多