通过请求使用instagram登录,创建具有会话的类时,会抛出AttributeError:“User”对象没有属性“headers”

2024-09-30 04:38:47 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在做一个小项目,允许用户在instagram帐户上执行特定操作。这些操作将包括获取关注者/关注者、取消关注帐户和接受关注请求。由于某些原因,我在尝试为帐户编写类时,似乎无法使帐户的签名生效。我已经登录了这个函数,但是我想让account/session成为自己的数据类型,这样我就可以对它进行操作,以便将来使用它。我不确定我做错了什么。这是我目前的代码:

import requests
import json

class User:

    # Constructor
    def __init__(self, username, password):
        self.session = requests.Session()
        self.userAgent = 'Mozilla/5.0 (iPhone; CPU iPhone OS 9_1 like Mac OS X) AppleWebKit/601.1.46 (KHTML, like Gecko) Version/9.0 Mobile/13B143 Safari/601.1'
        self.password = password
        self.username = username
        self.baseUrl = 'https://www.instagram.com/accounts/login/ajax/'
        self.refererUrl = 'https://www.instagram.com/accounts/login/'

    # Methods
    def start_session(self):

        try:
            self.req = self.session.get(self.baseUrl)
            self.session.headers = {'user-agent': self.userAgent}
            self.session.headers.update({'Referer': self.refererUrl})
            self.session.headers.update({'x-csrftoken': self.req.cookies['csrftoken']})
            self.login_data = {'username': self.username, 'password': self.password}
            self.login = self.session.post(self.baseUrl, data=self.login_data, allow_redirects=True)
            self.headers.update({'x-csrftoken': self.login.cookies['csrftoken']})
            print(self.login.json())


        except:
            print("There was an error signing in.")


def main():
    print("Welcome to InstaTool. Please type in your username and password.")
    username = input("Username: ")
    password = input("Password: ")
    insta_account = User(username, password)
    insta_account.start_session()


if __name__ == "__main__":
    main()

这是我的错误:

Traceback (most recent call last):
  File "/Users/ty/InstaTool/InstaTool.py", line 50, in <module>
    main()
  File "/Users/ty/InstaTool/InstaTool.py", line 46, in main
    insta_account.start_session()
  File "/Users/ty/InstaTool/InstaTool.py", line 33, in start_session
    self.headers.update({'x-csrftoken': self.login.cookies['csrftoken']})
AttributeError: 'User' object has no attribute 'headers'

我很困惑,因为我不知道如果我计划在start\u session()函数中更新标题,为什么我的对象需要一个“headers”属性。感谢您的帮助。你知道吗


Tags: inselfmainsessionusernameloginupdate帐户
1条回答
网友
1楼 · 发布于 2024-09-30 04:38:47

似乎试图在self上调用headers方法,即User

self.headers.update({'x-csrftoken': self.login.cookies['csrftoken']})

你可能希望这句话是:

self.session.headers.update({'x-csrftoken': self.login.cookies['csrftoken']})

相关问题 更多 >

    热门问题