mirror of
https://github.com/zhenxun-org/zhenxun_bot.git
synced 2025-12-15 14:22:55 +08:00
修复了原神自动签到返回invalid request的问题,新增查看我的cookie命令
This commit is contained in:
parent
e16afc3fc2
commit
bb0cea2dd3
@ -64,9 +64,13 @@ async def _(event: MessageEvent, cmd: Tuple[str, ...] = Command(), arg: Message
|
|||||||
_x = f"已成功为uid:{uid} 设置米游社id:{msg}"
|
_x = f"已成功为uid:{uid} 设置米游社id:{msg}"
|
||||||
else:
|
else:
|
||||||
if not msg:
|
if not msg:
|
||||||
await bind.finish(
|
await bind.finish("""私聊发送!!
|
||||||
"私聊发送!!\n打开 https://bbs.mihoyo.com/ys/\n登录后按F12点击控制台输入document.cookie复制输出的内容即可"
|
1.以无痕模式打开浏览器(Edge请新建InPrivate窗口)
|
||||||
)
|
2.打开http://bbs.mihoyo.com/ys/并登陆
|
||||||
|
3.登陆后打开http://user.mihoyo.com/进行登陆
|
||||||
|
4.按下F12,打开控制台,输入以下命令:
|
||||||
|
var cookie=document.cookie;var ask=confirm('Cookie:'+cookie+'\\n\\nDo you want to copy the cookie to the clipboard?');if(ask==true){copy(cookie);msg=cookie}else{msg='Cancel'}
|
||||||
|
5.私聊发送:原神绑定cookie 刚刚复制的cookie""")
|
||||||
if isinstance(event, GroupMessageEvent):
|
if isinstance(event, GroupMessageEvent):
|
||||||
await bind.finish("请立即撤回你的消息并私聊发送!")
|
await bind.finish("请立即撤回你的消息并私聊发送!")
|
||||||
uid = await Genshin.get_user_uid(event.user_id)
|
uid = await Genshin.get_user_uid(event.user_id)
|
||||||
|
|||||||
@ -22,7 +22,7 @@ usage:
|
|||||||
__plugin_des__ = "原神懒人签到"
|
__plugin_des__ = "原神懒人签到"
|
||||||
__plugin_cmd__ = ["开启/关闭原神自动签到", "原神我硬签"]
|
__plugin_cmd__ = ["开启/关闭原神自动签到", "原神我硬签"]
|
||||||
__plugin_type__ = ("原神相关",)
|
__plugin_type__ = ("原神相关",)
|
||||||
__plugin_version__ = 0.1
|
__plugin_version__ = 0.2
|
||||||
__plugin_author__ = "HibiKier"
|
__plugin_author__ = "HibiKier"
|
||||||
__plugin_settings__ = {
|
__plugin_settings__ = {
|
||||||
"level": 5,
|
"level": 5,
|
||||||
@ -33,7 +33,7 @@ __plugin_settings__ = {
|
|||||||
|
|
||||||
|
|
||||||
genshin_matcher = on_command(
|
genshin_matcher = on_command(
|
||||||
"开原神自动签到", aliases={"关原神自动签到", "原神我硬签"}, priority=5, block=True
|
"开原神自动签到", aliases={"关原神自动签到", "原神我硬签", "查看我的cookie"}, priority=5, block=True
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
@ -41,10 +41,13 @@ genshin_matcher = on_command(
|
|||||||
async def _(event: MessageEvent, cmd: Tuple[str, ...] = Command()):
|
async def _(event: MessageEvent, cmd: Tuple[str, ...] = Command()):
|
||||||
cmd = cmd[0]
|
cmd = cmd[0]
|
||||||
uid = await Genshin.get_user_uid(event.user_id)
|
uid = await Genshin.get_user_uid(event.user_id)
|
||||||
|
if cmd == "查看我的cookie":
|
||||||
|
my_cookie = await Genshin.get_user_cookie(uid, True)
|
||||||
|
await genshin_matcher.finish("您的cookie为" + my_cookie)
|
||||||
if not uid or not await Genshin.get_user_cookie(uid, True):
|
if not uid or not await Genshin.get_user_cookie(uid, True):
|
||||||
await genshin_matcher.finish("请先绑定uid和cookie!")
|
await genshin_matcher.finish("请先绑定uid和cookie!")
|
||||||
if "account_id" not in await Genshin.get_user_cookie(uid, True):
|
# if "account_id" not in await Genshin.get_user_cookie(uid, True):
|
||||||
await genshin_matcher.finish("请更新cookie!")
|
# await genshin_matcher.finish("请更新cookie!")
|
||||||
if cmd == "原神我硬签":
|
if cmd == "原神我硬签":
|
||||||
try:
|
try:
|
||||||
msg = await genshin_sign(uid)
|
msg = await genshin_sign(uid)
|
||||||
|
|||||||
@ -4,6 +4,12 @@ from services.log import logger
|
|||||||
from .._utils import random_hex, get_old_ds
|
from .._utils import random_hex, get_old_ds
|
||||||
from .._models import Genshin
|
from .._models import Genshin
|
||||||
from typing import Optional, Dict
|
from typing import Optional, Dict
|
||||||
|
import hashlib
|
||||||
|
import random
|
||||||
|
import string
|
||||||
|
import uuid
|
||||||
|
import requests
|
||||||
|
import time
|
||||||
|
|
||||||
|
|
||||||
async def genshin_sign(uid: int) -> Optional[str]:
|
async def genshin_sign(uid: int) -> Optional[str]:
|
||||||
@ -22,10 +28,10 @@ async def genshin_sign(uid: int) -> Optional[str]:
|
|||||||
sign_list = await get_sign_reward_list()
|
sign_list = await get_sign_reward_list()
|
||||||
get_reward = sign_list["data"]["awards"][
|
get_reward = sign_list["data"]["awards"][
|
||||||
int(sign_info["total_sign_day"]) - 1
|
int(sign_info["total_sign_day"]) - 1
|
||||||
]["name"]
|
]["name"]
|
||||||
reward_num = sign_list["data"]["awards"][
|
reward_num = sign_list["data"]["awards"][
|
||||||
int(sign_info["total_sign_day"]) - 1
|
int(sign_info["total_sign_day"]) - 1
|
||||||
]["cnt"]
|
]["cnt"]
|
||||||
get_im = f"本次签到获得:{get_reward}x{reward_num}"
|
get_im = f"本次签到获得:{get_reward}x{reward_num}"
|
||||||
if status == "OK" and sign_info["is_sign"]:
|
if status == "OK" and sign_info["is_sign"]:
|
||||||
return f"\n原神签到成功!\n{get_im}\n本月漏签次数:{sign_info['sign_cnt_missed']}"
|
return f"\n原神签到成功!\n{get_im}\n本月漏签次数:{sign_info['sign_cnt_missed']}"
|
||||||
@ -34,6 +40,39 @@ async def genshin_sign(uid: int) -> Optional[str]:
|
|||||||
return None
|
return None
|
||||||
|
|
||||||
|
|
||||||
|
# 获取请求Header里的DS 当web为true则生成网页端的DS
|
||||||
|
def get_ds(web: bool) -> str:
|
||||||
|
if web:
|
||||||
|
n = "9nQiU3AV0rJSIBWgdynfoGMGKaklfbM7"
|
||||||
|
else:
|
||||||
|
n = "9nQiU3AV0rJSIBWgdynfoGMGKaklfbM7"
|
||||||
|
i = str(timestamp())
|
||||||
|
r = random_text(6)
|
||||||
|
c = md5("salt=" + n + "&t=" + i + "&r=" + r)
|
||||||
|
return f"{i},{r},{c}"
|
||||||
|
|
||||||
|
|
||||||
|
# 时间戳
|
||||||
|
def timestamp() -> int:
|
||||||
|
return int(time.time())
|
||||||
|
|
||||||
|
|
||||||
|
def random_text(num: int) -> str:
|
||||||
|
return ''.join(random.sample(string.ascii_lowercase + string.digits, num))
|
||||||
|
|
||||||
|
|
||||||
|
def md5(text: str) -> str:
|
||||||
|
md5 = hashlib.md5()
|
||||||
|
md5.update(text.encode())
|
||||||
|
return md5.hexdigest()
|
||||||
|
|
||||||
|
|
||||||
|
# 生成一个device id
|
||||||
|
def get_device_id(cookie) -> str:
|
||||||
|
return str(uuid.uuid3(uuid.NAMESPACE_URL, cookie)).replace(
|
||||||
|
'-', '').upper()
|
||||||
|
|
||||||
|
|
||||||
async def _sign(uid: int, server_id: str = "cn_gf01") -> Optional[Dict[str, str]]:
|
async def _sign(uid: int, server_id: str = "cn_gf01") -> Optional[Dict[str, str]]:
|
||||||
"""
|
"""
|
||||||
米游社签到
|
米游社签到
|
||||||
@ -43,18 +82,23 @@ async def _sign(uid: int, server_id: str = "cn_gf01") -> Optional[Dict[str, str]
|
|||||||
if str(uid)[0] == "5":
|
if str(uid)[0] == "5":
|
||||||
server_id = "cn_qd01"
|
server_id = "cn_qd01"
|
||||||
try:
|
try:
|
||||||
|
cookie = await Genshin.get_user_cookie(uid, True)
|
||||||
req = await AsyncHttpx.post(
|
req = await AsyncHttpx.post(
|
||||||
url="https://api-takumi.mihoyo.com/event/bbs_sign_reward/sign",
|
url="https://api-takumi.mihoyo.com/event/bbs_sign_reward/sign",
|
||||||
headers={
|
headers={
|
||||||
"User_Agent": "Mozilla/5.0 (Linux; Android 10; MIX 2 Build/QKQ1.190825.002; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/83.0.4103.101 Mobile Safari/537.36 miHoYoBBS/2.3.0",
|
'Accept': 'application/json, text/plain, */*',
|
||||||
"Cookie": await Genshin.get_user_cookie(int(uid), True),
|
'DS': get_ds(web=True),
|
||||||
"x-rpc-device_id": random_hex(32),
|
'Origin': 'https://webstatic.mihoyo.com',
|
||||||
"Origin": "https://webstatic.mihoyo.com",
|
'x-rpc-app_version': "2.34.1",
|
||||||
"X_Requested_With": "com.mihoyo.hyperion",
|
'User-Agent': 'Mozilla/5.0 (Linux; Android 9; Unspecified Device) AppleWebKit/537.36 (KHTML, like Gecko) '
|
||||||
"DS": get_old_ds(),
|
'Version/4.0 Chrome/39.0.0.0 Mobile Safari/537.36 miHoYoBBS/2.3.0',
|
||||||
"x-rpc-client_type": "5",
|
'x-rpc-client_type': "5",
|
||||||
"Referer": "https://webstatic.mihoyo.com/bbs/event/signin-ys/index.html?bbs_auth_required=true&act_id=e202009291139501&utm_source=bbs&utm_medium=mys&utm_campaign=icon",
|
'Referer': 'https://webstatic.mihoyo.com/bbs/event/signin-ys/index.html?bbs_auth_required=true&act_id=e202009291139501&utm_source=bbs&utm_medium=mys&utm_campaign=icon',
|
||||||
"x-rpc-app_version": "2.3.0",
|
'Accept-Encoding': 'gzip, deflate',
|
||||||
|
'Accept-Language': 'zh-CN,en-US;q=0.8',
|
||||||
|
'X-Requested-With': 'com.mihoyo.hyperion',
|
||||||
|
"Cookie": cookie,
|
||||||
|
'x-rpc-device_id': get_device_id(cookie)
|
||||||
},
|
},
|
||||||
json={"act_id": "e202009291139501", "uid": uid, "region": server_id},
|
json={"act_id": "e202009291139501", "uid": uid, "region": server_id},
|
||||||
)
|
)
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user