尝试对组内玩家进行排名时,无法创建具有 PROTOCOL_TLS_SERVER 上下文的客户端套接字

问题描述 投票:0回答:2
import robloxapi

async def grouprank(userId, rankName):
    # omitted rank-name to role id mapping
    rankId = dic[rankName]
    client = robloxapi.Client(cookie=NOT_STUPID_ENOUGH_TO_DISCLOSE)
    grp = await client.get_group(32409863)
    await robloxapi.client.Group.set_rank_by_id(grp, userId, rankId)

import asyncio
lp = asyncio.new_event_loop()
lp.run_until_complete(grouprank(2315210162, "Recruit"))

上面的代码抛出以下错误: ssl.SSLError:无法使用 PROTOCOL_TLS_SERVER 上下文创建客户端套接字 (_ssl.c:795)

此代码主要是使用机器人将玩家排名到 roblox 组中的另一个排名

python python-3.x roblox
2个回答
2
投票

这是 ssl 库中的一个已知问题,并且有许多基于此的 GitHub 问题。 例如,这个是一个示例问题。对我来说,它是通过在之前的项目中使用

ssl._create_default_https_context = ssl._create_unverified_context
来实现的。我不知道它是否适用于 Roblox,因为我无权访问它。


0
投票

对我来说,此错误消息是由于在我的

ssl.Purpose.CLIENT_AUTH
参数中使用
ssl.Purpose.SERVER_AUTH
而不是
ssl.create_default_context()
引起的。客户端应使用
ssl.Purpose.SERVER_AUTH
,因为他们正在授权与其通信的服务器,而不是
ssl.Purpose.CLIENT_AUTH
,服务器反之亦然。

import socket
import ssl
ME_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
sslContext = ssl.create_default_context(purpose = ssl.Purpose.SERVER_AUTH, cafile = 'C://...//CACert.pem', capath = None, cadata = None)
sslContext.load_cert_chain(certfile = 'C://...//serverCert.pem')
ME_SSL = sslContext.wrap_socket(ME_socket, server_side = False, server_hostname = '10.80.25.52')
© www.soinside.com 2019 - 2024. All rights reserved.