请求 csrf-token 不起作用 - Instagram lgin

问题描述

自从我发现有关请求后,我尝试登录 Instagram。 我发现了一篇关于它的有趣文章

Python Instagram login using requests

但是尝试之后没有用。发生错误说: 回溯(最近一次调用):

  • 第 41 行,在 test.login("MyInstagramName","MyInstagramPassword")
  • 第 32 行,在登录中 session.headers.update({'X-CSrftoken': login.cookies['csrftoken']})
  • 第 328 行,在 getitem 中 返回 self._find_no_duplicates(name)
  • 第 399 行,在 _find_no_duplicates 中 raise KeyError('name=%r,domain=%r,path=%r' % (name,domain,path)) KeyError: "name='csrftoken',domain=None,path=None"

看起来“self._find_no_duplicates(name)”有问题,触发了“KeyError('name=%r,do...”。

是因为 csrf-token 吗?

import requests
import datetime


class instagram:
    user_agent = 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML,like Gecko) Chrome/79.0.3945.79 Safari/537.36'

    def login(self,username,password):
        """Login to Instagram"""

        time = str(int(datetime.datetime.Now().timestamp()))
        enc_password = f"#PWD_INSTAGRAM_broWSER:0:{time}:{password}"

        session = requests.Session()
        # set a cookie that signals Instagram the "Accept cookie" banner was closed
        session.cookies.set("ig_cb","2")
        session.headers.update({'user-agent': self.user_agent})
        session.headers.update({'Referer': 'https://www.instagram.com'})
        res = session.get('https://www.instagram.com')

        csrftoken = None

        for key in res.cookies.keys():
            if key == 'csrftoken':
                csrftoken = session.cookies['csrftoken']

        session.headers.update({'X-CSrftoken': csrftoken})
        login_data = {'username': username,'enc_password': enc_password}

        login = session.post('https://www.instagram.com/accounts/login/ajax/',data=login_data,allow_redirects=True)
        session.headers.update({'X-CSrftoken': login.cookies['csrftoken']})

        cookies = login.cookies
        print(login.text)

        session.close()

if __name__ == "__main__":
    test = instagram()
    test.login("InstaUsername","InstaPassword")

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)