python - 使用带有请求的 instagram 登录,在使用会话创建类时会抛出 AttributeError: 'User' object has no attribute 'headers'
问题描述
我正在开发一个允许用户在他们的 Instagram 帐户上执行特定操作的小项目。这些操作将获得关注/关注者、取消关注帐户并接受关注请求。出于某种原因,在尝试为其编写课程时,我似乎无法让帐户签名工作。我已经使用功能登录,但我想让帐户/会话成为自己的数据类型,以便我可以为我预期的未来功能操作它。我不确定我做错了什么。这是我当前的代码:
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_session() 函数中的标题,我不确定为什么我的对象需要一个“标题”属性。任何帮助表示赞赏。
解决方案
似乎headers
尝试调用该方法self
,即User
:
self.headers.update({'x-csrftoken': self.login.cookies['csrftoken']})
您可能希望这条线是:
self.session.headers.update({'x-csrftoken': self.login.cookies['csrftoken']})
推荐阅读
- apache-royale - 如何根据浏览器高度/宽度获取应用程序宽度/高度
- python - 如何使用 Python 3.7.4 和 beautifulsoup4 抓取 Cyberix3D 网站 (http://www.3dgamemaker.com) 上游戏的所有 URL 链接?
- c# - Microsoft.ACE.OLEDB.12.0 未注册,Access Database Engine 2010 下载后无法修复
- jmeter - Jmeter - 在我的安卓手机上将代理设置为手动后,互联网连接丢失
- javascript - 附加一个对象而不是文本?
- php - 如何告诉 Codeigniter 不要存储缓存?
- javascript - 在jquery中的ul中放置一个事件点击特定项目
- javascript - TypeError:无法在 React 函数中读取未定义的属性“道具”
- ruby - Minitest 警告:已弃用 must_match 的全局使用。使用`_(obj)`
- elasticsearch - 具有百分比计算的 Kibana 仪表板