biuuu / genshin-wish-export

Easily export the Genshin Impact wish record.
MIT License
3.77k stars 396 forks source link

支持 PlayStation 的可能性探讨 #16

Open ysc3839 opened 3 years ago

ysc3839 commented 3 years ago

目前 PS 版原神和 PSN 账号绑定,不可在 PC 或手机上登录,无法使用此工具。 经过网友的测试,PS 版的抽卡记录页面是使用系统的浏览器打开的,能查看页面链接,但不能复制。 个人认为可以考虑让用户截图,然后通过 OCR 识别出 key。

biuuu commented 3 years ago

之后会加代理模式获取key,也许PS版能用上?

ysc3839 commented 3 years ago

代理模式是使用自签名证书解密 https 流量吗?PS 应该不会允许用户安装证书,所以是不可行的。

biuuu commented 3 years ago

https://github.com/sunfkny/genshin-gacha-export 可以试下另外个项目的代理模式,甚至不需要安装证书。 可能只是游戏内置浏览器的问题,不知道PS端是否一样有效。

ysc3839 commented 3 years ago

看了下代码,也是使用 mitmproxy 解密 https 流量实现的。 https://github.com/sunfkny/genshin-gacha-export/blob/54dda8b5c784e40dff1f00fce4c5858ada9db25a/main.py#L255-L259 不需要安装证书可能是游戏内浏览器忽略了证书错误,个人认为 PS 的浏览器不会忽略错误。

brainbush commented 3 years ago

自己大概找到了个可以使用的方式,不过因为不太清楚作者的配置文件的信息是怎么加密解密的,所以是手动写游戏日志文件来完成读取。

  1. 安装fiddler并且安装https证书,在代理设置中允许局域网访问(此时不要开启解密https流量)
  2. 在PS4中设置http代理服务器为fiddler的代理服务器
  3. 启动游戏,打开抽卡界面
  4. 在fiddler中开启解密https流量
  5. 游戏中按方向键下打开抽卡历史(此时PS4的浏览器会提示证书不可信任,选择继续即可)
  6. 此时在fiddler的请求页面中,可以看到以 https://webstatic.mihoyo.com/hk4e/event/e20190909gacha/index.html 开头的请求地址,右键选择该请求并复制该请求的url,该URL中含有登录的appkey

(以下步骤开始就是强行怼进作者读取信息的日志文件的方式)

  1. 打开或新建C:\Users\用户名\AppData\LocalLow\miHoYo\原神\output_log.txt ,清空内容并加入如下内容

OnGetWebViewPageFinish:(冒号后面为第6步中复制的url)

  1. 打开程序开始更新数据

PS:希望能加一个直接输入这个url的入口 以及代理模式的时候貌似没有读取到请求的样子,fiddler如果全程开启https解密则无法进入游戏

ysc3839 commented 3 years ago

@brainbush 我没想到可以手动忽略证书错误,手头上也没有 PS4/PS5,所以想当然觉得是不可忽略的。

biuuu commented 3 years ago

@brainbush 试过直接用工具的代理模式生成的代理服务器吗? 设置里开了代理模式后,并且本机日志找不到URL的情况下会启动代理服务器。 image

biuuu commented 3 years ago

f9513ee 发现前一个版本的代理模式对hostname的匹配正则写错了,不会获取到国服的URL, 升到v0.5.7后可以再试试。

brainbush commented 3 years ago

f9513ee 发现前一个版本的代理模式对hostname的匹配正则写错了,不会获取到国服的URL, 升到v0.5.7后可以再试试。

谢谢更新,这边使用代理模式PS4内置浏览器打开不会提示证书错误,但是因为代理拦截的域名是 hk4e-api.mihoyo.com 对于抽卡记录信息页面的ajax请求因为SSL证书握手失败(wireshark内看到交换证书后直接断开连接并未发送http请求),并不会弹出浏览器提示能强制信任并在工具中获取到url,所以不知是否可以考虑换成使用 webstatic.mihoyo.com 进行抓取?

biuuu commented 3 years ago

@brainbush 我昨晚睡觉时也是这样想的,正准备今天改下

biuuu commented 3 years ago

可以自动更新到v0.5.8了

brainbush commented 3 years ago

可以自动更新到v0.5.8了

试了下,这个版本在代理获取的方式下能成功抓取记录,非常感谢。 顺便附一个CA警告的截图(可能写说明的地方能带上?)

ysc3839 commented 3 years ago

看了别人给的 PS5 URL 截图,估计 OCR 是不可行的了,因为大写的 I 和小写的 l 几乎一模一样。 同时自己用 Tesseract 识别出来的结果中错误也比较多。 用在线的 OCR 服务结果似乎好一点,但不适合用在此项目中。