Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[-100]登陆失效 #8

Closed
KishibeRohan1979 opened this issue Dec 27, 2022 · 7 comments
Closed

[-100]登陆失效 #8

KishibeRohan1979 opened this issue Dec 27, 2022 · 7 comments
Labels
bug Something isn't working

Comments

@KishibeRohan1979
Copy link

KishibeRohan1979 commented Dec 27, 2022

米游社最近修改了cookie样式,原来的登陆方式似乎不好用了,使用自己的登陆产生的cookie,机器人显示[-100]登陆失效
我获取cookie的方式:在浏览器控制台输入"document.cookie"。
json文件样例如下

{
    "account_id": "22******41",
    "cookie_token_v2": "v2_LMu2G8p0cvEA8dy-ZNOwu1te******yjZzBniIFH1Di",
    "ltmid_v2": "v2_WCmvGJFxwusarpbY2jT*******YE896FLaGX3VxRAw1uzahjN3A",
    "mid": "03tso*****_mhy"
}

我也尝试过将“ltmid_v2”更换为“stoken”或者“stoken_v2”也同样无法登陆。

所以想请教您是如何填写相关字段值的,还是说最近无法使用cookie登陆米游社了?

@monsterxcn
Copy link
Owner

ltmid_v2 不是 stoken,也不是插件必需的字段,可以去掉,你这样填写配置缺少 stoken。

我这边暂时还是 v1 的 cookie 字段。可能我代码写得有些问题,如果你这个 cookie_token_v2 没过期应该也能用才对。

@monsterxcn
Copy link
Owner

monsterxcn commented Dec 27, 2022

你试一下这个步骤能不能拿到带 login_ticket 的 cookie:

  1. 新建隐身标签页,后面均在此隐身标签页内操作
  2. 打开 https://www.miyoushe.com/ys/ 并登录
  3. 打开 http://user.mihoyo.com/ 并登录
  4. 控制台输入 document.cookie

如果能拿到 login_ticket 就把这个补到 cookie.json 文件里重启一下试试

@KishibeRohan1979
Copy link
Author

你试一下这个步骤能不能拿到带 login_ticket 的 cookie:

  1. 新建隐身标签页,后面均在此隐身标签页内操作
  2. 打开 https://www.miyoushe.com/ys/ 并登录
  3. 打开 http://user.mihoyo.com/ 并登录
  4. 控制台输入 document.cookie

如果能拿到 login_ticket 就把这个补到 cookie.json 文件里重启一下试试

机器人返回缺少stoken无法自动更新过期的曲奇!

我的操作如下。

1、使用edge浏览器,新建InPrivate选项卡

2、打开 https://www.miyoushe.com/ys/ 并登录,控制台输入document.cookie ,在返回值当中没有找到关于login_ticket的字段

3、在尝试登陆 http://user.mihoyo.com/ 之后,控制台输入document.cookie ,返回

UM_distinctid=1******7; _ga=G******3; _MHYUUID=******; DEVICEFP_SEED_ID=*******; DEVICEFP_SEED_TIME=******; DEVICEFP=*******; login_uid=2***1; login_ticket=EyT6y*******x5aeYcm

之后我将login_ticket的值复制之后,放在cookie.json文件当中,文件内容如下

{
    "cookie_token": "EyT6y*******x5aeYcm"
}

4、保存文件并重启机器人之后

输入

/原神计算 香菱

机器人返回

缺少stoken无法自动更新过期的曲奇!

😥所以还是失败了

@monsterxcn
Copy link
Owner

monsterxcn commented Dec 29, 2022

呃,你补上 login_ticket 之后 cookie.json 文件内容怎么会是那样呢?

让你补进去,文件内容应该是像这样才对:

{
  "account_id": "22******41",
  "mid": "03tso*****_mhy",
  "login_ticket": "xxx"
}

这个 login_ticket 过期比较快,你可以重新获取一下按我说的填进去保存重启再试一下,还能拿到 login_ticket 应该就没问题。

@monsterxcn
Copy link
Owner

你之前文件里的 cookie_token_v2 ltmid_v2 都删掉,留一个米游社 ID、一个 midlogin_ticket 就好

@KishibeRohan1979
Copy link
Author

我尝试使用您讲的方法重新走了一遍流程,并将cookie.json文件内容替换为如下

{
    "account_id": "2******1",
    "mid": "03t*****_mhy",
    "login_ticket": "iMgEK*******RTohBSM0pOyZvBi"
}

保存重启后,机器人返回

[-100]请先登陆

于是,我尝试改了一下源码如下(大约60行附近)

    # 读取
    if not cookie:
        if not cookie_cfg:
            return {"error": "养成计算器需要米游社 Cookie!"}
        else:
            check_res = await query_mys("校验", cookie_cfg, {"game_biz": "hk4e_cn"})
            if not check_res.get("error"):
                # 检验成功才返回,否则尝试刷新
                logger.info("检验成功,开始绘制")
                # return cookie_cfg

改动不大,就是将

if not check_res.get("error"):

后面的return注释掉了,然后换成了logger.info

于是机器人就可以正常返回图片了,不过就是曾经机器人返回的是原图,这次返回的好像是缩略图,看着比以前小了(应该是tx的问题?)不过可以返回图片已经算问题解决了吧!

非常感谢你最近的问题解决指导(❤ ω ❤)

@monsterxcn monsterxcn added the bug Something isn't working label Jan 6, 2023
@monsterxcn
Copy link
Owner

monsterxcn commented Jan 6, 2023

旧版本可能用来判断 Cookie 是否失效的接口有问题,导致过期的 Cookie 不能自己更新。你修改的这种方法会在每次请求都走一遍更新 Cookie 的流程,但是我不是很推荐这样。

现在更新到 0.2.2 版本应该能解决这些问题,仍有问题可以随时 reopen 此 issue。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug Something isn't working
Projects
None yet
Development

No branches or pull requests

2 participants