【问题标题】:Solving challenge required in instagram private api解决 instagram 私有 api 所需的挑战
【发布时间】:2018-08-02 10:36:28
【问题描述】:

当我登录我的帐户时,我正在尝试解决 Instagram 所需的挑战,我正在使用 mgp25 Instagram API 库(V 4.1.0 稳定版)

我能够嗅探必要的请求以解决挑战,但是当我将它们添加到库时遇到问题

我编写此函数是为了将代码请求到我的电子邮件或电话

// Challenge url on this format /challenge/1463452997/1zS1L8kl62/
public function sendChallenge($challenge_url)
{
    return $this->request($challenge_url)
        ->addParam('choice', 1)
        ->addPost('device_id', $this->device_id)
        ->addPost('guid', $this->uuid)
        ->addPost('_csrftoken', $this->client->getToken())
        ->getResponse(new Response\UserInfoResponse());
}

我的问题是每当我请求这个函数时,无论我把它放在哪里,我总是得到

“用户未登录。请调用 login(),然后重试。”

那么如何在登录失败后使用此功能(检索质询 url 所必需的)而不会出现用户未登录异常

【问题讨论】:

  • 根据您的情况,首先您必须为 instagram 调用登录 api,在成功登录后,您必须调用挑战 api
  • documentation 没有帮助?
  • No 并且作者不想为此编写解决方案
  • 同样的问题

标签: php instagramapi-mgp25


【解决方案1】:

这对我有用:

步骤:

  1. 有谷歌浏览器或安装谷歌浏览器,因为它是我所做的
  2. 转到 instagram.com,在您的地址栏中,现在应该会显示 www.instagram.com/challenge/ 或类似内容。
  3. 这是您将从该站点删除 cookie 以阻止它们一遍又一遍地重播相同的错误消息...即使您有正确的短信代码。转到第 4 步!
  4. 点击地址栏(屏幕左上角)中的绿色锁定按钮(网站安全验证),然后转到网站设置。
  5. 点击设置选项中的后退按钮后,不是实际的后退按钮可将您带到上一个网页,而是小箭头按钮可返回设置。
  6. 然后点击cookies选项
  7. 然后点击“查看所有 cookie 和站点数据”
  8. “搜索 cookie”应显示在右上角的搜索栏中
  9. 搜索 Instagram 并找到所有 cookie
  10. 删除所有 cookie 并返回 instagram.com
  11. 已完成,应该可以让您登录。

【讨论】:

    【解决方案2】:

    解决方案是设置 setNeedsAuth(false)

    // Challenge url on this format /challenge/1463452997/1zS1L8kl62/
    public function sendChallenge($challenge_url)
    {
        return $this->request($challenge_url)
            ->setNeedsAuth(false)
            ->addParam('choice', 1)
            ->addPost('device_id', $this->device_id)
            ->addPost('guid', $this->uuid)
            ->addPost('_csrftoken', $this->client->getToken())
            ->getResponse(new Response\UserInfoResponse());
    }
    

    【讨论】:

    • 这太棒了,但我如何才能获得挑战网址?!对于需要挑战的登录用户?!
    • @TheBlueDragon 你解决问题了吗?我需要把那个函数放在哪里??
    • 只是想知道你们是否解决了这个问题?我假设该函数应该放在 Instagram.php 中。我对么?我已经设法通过github.com/mgp25/Instagram-API/issues/… 获得了 $challenge_url 但无法弄清楚我应该如何使用上面的代码处理 $challenge_url。如果有人可以提供帮助,将不胜感激!
    【解决方案3】:

    在向 Instagram 发送请求之前,您必须选择要发送的人 您可以在代码中添加以下行并选择用户

    // Challenge url on this format /challenge/1463452997/1zS1L8kl62/
    public function sendChallenge($username, $password, $challenge_url)
    {
    
        //this line require for select user that your login in before 
        $this -> changeUser ($username, $password);
    
        return $this->request($challenge_url)
            ->addParam('choice', 1)
            ->addPost('device_id', $this->device_id)
            ->addPost('guid', $this->uuid)
            ->addPost('_csrftoken', $this->client->getToken())
            ->getResponse(new Response\UserInfoResponse());
    }
    

    【讨论】:

    • 这个函数是放在Instagram.php中的吗?如果是这样,这是否意味着我们需要派生 repo 来进行更改,因为更改供应商文件夹中的文件不是最佳实践?我是在 Laravel 项目的背景下问的。谢谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-06-10
    • 2020-10-11
    • 1970-01-01
    • 1970-01-01
    • 2012-06-29
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多