gpt4 book ai didi

python - 无法使用 python Minds api 进行身份验证

转载 作者:太空宇宙 更新时间:2023-11-03 21:28:04 25 4
gpt4 key购买 nike

我正在尝试通过this python api访问社交网站minds.com通过使用 python3 setup.py install && pipelinenv run python 在本地安装模块并按照说明登录。

但是,我在尝试进行身份验证时收到此错误消息:

(出于某种原因,Stackoverflow 不允许我发布 python 错误日志,因为它没有正确缩进,所以这里是 https://pastebin.com/0sWa1hmY )

代码似乎是从 python api 调用的,如下所示:

minds/api.py

# -*- coding: utf-8 -*-
from pprint import pprint

from requests.utils import dict_from_cookiejar, cookiejar_from_dict

from minds.connections import XSRFSession
from minds.exceptions import AuthenticationError
from minds.profile import Profile
from minds.utils import add_url_kwargs
from minds.endpoints import *
from minds.sections import NewsfeedAPI, ChannelAPI, NotificationsAPI,
PostingAPI, InteractAPI


class Minds(NewsfeedAPI, ChannelAPI, NotificationsAPI, PostingAPI, ...):
_xsrf_retries = 5

def __init__(self, profile: Profile = None, login=True):
self.con = XSRFSession()
self.profile = profile
if self.profile:
if profile.cookie:
self.con.cookies = cookiejar_from_dict(profile.cookie)
if profile.proxy:
self.con.proxies = {'https': profile.proxy, 'http':\
profile.proxy}
self._establish_xsrf()
if self.profile and login and not self.is_authenticated:
if profile.username and profile.password:
self.authenticate(profile.username, profile.password)

(...)

def authenticate(self, username, password, save_profile=True) -> dict:
"""
Authenticate current instance with given user
:param: save_profile: whether to save profile locally
"""
auth = {
'username': username,
'password': password
}
resp = self.con.post(AUTHENTICATE_URL, json=auth)
self.user = resp.json()
if self.user['status'] == 'failed':
raise AuthenticationError("Couldn't log in with the ...")
self.guid = self.user['user']['guid']
if save_profile:
Profile(
username=username,
password=password,
cookie=self.get_cookies(),
proxy=self.con.proxies.get('https'),
).save()
return resp.json()

Python API 似乎没有维护,但我认为 Minds.com 新使用了 jsonwebtokens 进行身份验证。启用 jwt 的 api 是否缺少某些内容?

最佳答案

与浏览器请求反复比较后。发生错误的原因是你给出了错误的内容类型,但实际上你需要以 json 数据发送(看起来网站在开玩笑)。所以你需要指定headers["content-type"] = "text/plain" 。否则网站将响应 500。

注意:为了避免广泛讨论,我只能回答这个错误。

将代码改为如下,但与源代码只有一行不同:)。

def authenticate(self, username, password, save_profile=True) -> dict:
"""
Authenticate current instance with given user
:param: save_profile: whether to save profile locally
"""
auth = {
'username': username,
'password': password
}
self.con.headers["content-type"] = "text/plain" ####
resp = self.con.post(AUTHENTICATE_URL, json=auth)
self.user = resp.json()
if self.user['status'] == 'failed':
raise AuthenticationError("Couldn't log in with the given credentials")
self.guid = self.user['user']['guid']
if save_profile:
Profile(
username=username,
password=password,
cookie=self.get_cookies(),
proxy=self.con.proxies.get('https'),
).save()
return resp.json()

关于python - 无法使用 python Minds api 进行身份验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53710659/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com