Giter Club home page Giter Club logo

maimaidx-prober's Introduction

舞萌 DX 查分器

本查分器仅用于推分指导用途,不保证歌曲定数、DX Rating、难度 100% 准确。

使用指南

开始之前,建议您先注册一个查分器账户。借由此账户,您可以快捷地利用代理工具导入您的成绩数据。

如果你在使用过程中遇到任何问题,请先查阅本文末尾的FAQ。如果FAQ不能解决您的问题,并且您无法通过查阅其他资料自行解决,欢迎加入我们的QQ频道询问。

方法1:通过代理工具导入数据(推荐)

感谢舞台酱对此代理工具的大力帮助。

视频教程:

Windows: https://www.bilibili.com/video/BV1Ua411t7Em

Mac OS: https://www.bilibili.com/video/BV14v411L7mG

@Bakapiano 的互联网代理方式: https://www.bilibili.com/video/BV1pT411G7U1

1. 准备工作

您可以访问此链接来下载最新版本的代理工具,文件名为maimaidx-prober-proxy-(os).exe(os指您的操作系统)。

请将代理工具复制到一个空文件夹中,然后双击或使用控制台运行。初次运行后,代理工具将在当前目录下创建 3 个文件:

文件名 说明
config.json 用户名和密码的配置文件
cert.crt 可以导入的证书文件
key.pem 私钥文件,无需进行任何操作

双击 cert.crt 文件打开,点击安装证书,打开证书导入向导。一般情况下,只需要对当前用户安装证书即可。之后点击下一步,按照如图选择将此证书放入“受信任的根证书颁发机构”进行存储。接下来,一路选择,直到提示证书导入完成。

Mac OS 系统的设置(点击展开)  

在 Mac OS 或者 Linux 上运行,请打开 Shell 输入如下的命令:

chmod +x <文件名>
./<文件名>

如果 Mac OS 提示“不受信任的开发者”,请自行百度解决办法。

在 Mac OS 系统上,请将钥匙串加入"系统"中,并双击打开证书详情,在信任子菜单下调整设置,如下所示:

 

之后,填写config.json文件。使用记事本、Notepad++或Sublime Text等文本编辑器打开config.json,并将您查分器的用户名(假如是MyAccount)和密码(假如是MyPassword)写入对应区域的引号中,类似这样:

{"username": "MyAccount", "password": "MyPassword"}

此时,打开代理程序,控制台应该会提示:

2023/07/04 16:55:06 INFO: 您使用的是最新版本。
2023/07/04 16:55:06 INFO: 登录成功
2023/07/04 16:55:06 INFO: 使用此软件则表示您同意共享您在微信公众号舞萌 DX、中二节奏中的数据。
2023/07/04 16:55:06 INFO: 您可以在微信客户端访问微信公众号舞萌 DX、中二节奏的个人信息主页进行分数导入,如需退出请直接关闭程序或按下 Ctrl + C
2023/07/04 16:55:06 INFO: 代理设置已自动修改。
2023/07/04 16:55:06 INFO: 代理已开启到 127.0.0.1:8033

2. 导入数据

默认情况下,代理工具将会自行更改您的系统代理。如果打开代理程序后提示

2023/07/04 16:54:56 WARN: 自动修改代理设置失败。请尝试手动修改代理。

请按照折叠的部分进行操作。

点击展开  

以下为Windows 10 系统的代理服务器设置方法。如果您的系统是Windows 10以外的Windows系统(如Windows 7),您可以自行搜索相应系统的代理服务器设置方法。

打开代理程序后,在 Windows 设置中搜索代理服务器设置,进入设置界面,将设置调整如下图所示,之后点击保存。

如果您使用了其他的系统代理软件( Shadowsocks、V2Ray 等),请将它们关闭或调整至直连模式再进行设置。

 

Linux 系统不支持自动修改代理,请自行查找代理修改方法。需要修改 HTTP/HTTPS 的代理,代理 URL 均为 127.0.0.1:8033。

打开电脑版微信,进入舞萌 DX 公众号,点击我的记录。如果您的代理设置无误,页面将如下图显示:

切换到代理服务器的控制台界面,它将输出如下的内容:

2023/07/04 16:55:06 INFO: 您使用的是最新版本。
2023/07/04 16:55:06 INFO: 登录成功
2023/07/04 16:55:06 INFO: 使用此软件则表示您同意共享您在微信公众号舞萌 DX、中二节奏中的数据。
2023/07/04 16:55:06 INFO: 您可以在微信客户端访问微信公众号舞萌 DX、中二节奏的个人信息主页进行分数导入,如需退出请直接关闭程序或按下 Ctrl + C
2023/07/04 16:55:06 INFO: 代理设置已自动修改。
2023/07/04 16:55:06 INFO: 代理已开启到 127.0.0.1:8033
2023/07/04 16:55:37 INFO: 正在导入 Basic 难度……
2023/07/04 16:55:38 INFO: 导入成功
2023/07/04 16:55:40 INFO: 正在导入 Advanced 难度……
2023/07/04 16:55:41 INFO: 导入成功
2023/07/04 16:55:41 INFO: 正在导入 Expert 难度……
2023/07/04 16:55:43 INFO: 导入成功
2023/07/04 16:55:43 INFO: 正在导入 Master 难度……
2023/07/04 16:55:45 INFO: 导入成功
2023/07/04 16:55:45 INFO: 正在导入 Re: MASTER 难度……
2023/07/04 16:55:46 INFO: 导入成功

在导入完毕后,刷新查分器界面,即可看到最新的乐曲成绩。

如果您需要更新您的成绩数据,只需要做第 2 步便可。

方法2:通过源代码导入数据(仅限网页版微信)

用任意浏览器访问如下网址:https://tgk-wcaime.wahlap.com/wc_auth/oauth/authorize/maimai-dx

然后 URL 会被重定向到 https://open.weixin.qq.com/connect/oauth2/authorize (后面的查询参数省略掉了)。

之后,在网页版微信的任何聊天框中粘贴刚刚的 URL,如下图所示:

之后点击这个链接即可。如果一切顺利的话,浏览器中将进入舞萌 DX 的主页。如果提示Not Found,有可能是操作慢了一点,可以再试一次!

接下来,导航至【记录】-【乐曲成绩】,在上方选择难度后,点击 Ctrl+U 或右键获取源代码。

使用Ctrl+A全选获取的源代码,并复制到剪切板中。进入查分器主页,点击导入数据,将源代码粘贴到输入框中,点击导入。

方法3:通过Chrome调试工具导入

该方法仅支持安卓系统,且需要一台安装 Chrome 或 Microsoft Edge 的计算机

在无法使用前三种方法时,可尝试使用此方法

开启设备上的USB调试功能并连接电脑

在电脑上的Chrome打开 chrome://inspect(如果使用 Edge,则打开 edge://inspect

在手机上确认授权后,即可在此列表中看见自己的设备

image

之后,在手机微信上需打开成功一次如下网址,才能正常使用inspect功能

http://debugxweb.qq.com/?inspector=true

完成以上步骤后,在手机上打开舞萌DX主页。此时,此列表中将会出现以下内容

image

请点击inspect,并在红框标识处粘贴如下代码,然后把USERNAMEPASSWORD改为你自己的查分器用户名和密码,并按下回车

((u,p)=>[0,1,2,3,4].reduce(async(promise, diff)=>{
  await promise
  var diffName = ['Basic', 'Advanced', 'Expert', 'Master', 'Re:Master'][diff]
  var url = 'https://maimai.wahlap.com/maimai-mobile/record/musicGenre/search/?genre=99&diff='+diff
  return fetch(url)
  .then(r => {if(r.url!=url)throw new Error(diffName+' 获取分数出错');return r.text()})
  .then(res => fetch('https://www.diving-fish.com/api/pageparser/page', {
    method: 'POST',
    headers:(new Headers({'Content-Type':'text/plain'})),
    body: "<login><u>"+u+"</u><p>"+p+"</p></login>" + res.match(/<html.*>([\s\S]*)<\/html>/)[1].replace(/\s+/g,' ')
  }))
  .then(r => r.json())
  .then(res => {console.log(diffName, res.message, res);if(res.message!='success')throw new Error(diffName+' 上传分数出错')})
}, Promise.resolve()))
("USERNAME", "PASSWORD");

image

至此,数据导入教程结束,您可以在查分器主页看到您的成绩数据。

常见问题(FAQ)

为什么我查分器创建了账号,还是没有数据?

您需要自行按照查分器上的教程进行数据导入。查分器并没有能力从华立官方获取您的数据。

config.json文件应该怎么修改?

用任何文本编辑器(包括记事本),替换myaccount和mypassword为您的账号密码。

为什么我在电脑版微信中点击“舞萌DX”公众号中的“我的记录”会自动跳转到浏览器,并显示“请在微信客户端中打开链接”?

进入电脑版微信右下角菜单 - 【设置】 - 【通用设置】- 取消勾选【使用系统默认浏览器打开网页】。现在微信应该会在内置浏览器中打开“我的记录”网页。

为什么我的代理工具程序窗口中有一条... WARN: Error copying to client: ...

这只是一个程序警告,不影响代理工具的正常运行,请自动忽略掉这条警告。如果代理工具出现错误,这条警告也基本与错误无关。

如果我想使用不同的端口或者仅导入某一个难度怎么办?

可以使用代理工具的命令行参数(需要 1.3.0 以上的版本):

Arg Default Value Description
v false should every proxy request be logged to stdout
addr :8033 proxy listen address
config config.json path to config.json file
no-edit-global-proxy false don't edit the global proxy settings
timeout 30 timeout when connect to servers
mai-diffs mai diffs to import

对于 mai-diffs 而言,您可以使用逗号连接的字符串来指定需要导入的难度,字符串的内容可以是以下三者之一 0 - 难度等级索引 bas - 难度等级缩写 basic - 难度等级

例如

./executable_file_path -mai-diffs mas,4

即可导入 Master 和 Re: MASTER 难度。如果留空的话则默认导入所有难度,您也可以在 json 文件中添加

{
    ...,
    "mai_diffs": ["bas", "adv", "exp"]
}

来导入指定难度。

为什么我在使用代理工具后,打开任何网页都显示“代理服务器错误”?

程序在退出时没能关闭你的系统代理。进入你的系统代理服务器设置并关闭即可。

捐赠

爱发电:https://afdian.net/a/divingfish

License & Disclaimer

MIT

本查分器与华立、SEGA 等公司无任何关系,注册商标所有权归相关品牌所有。请勿使用本代码用于网络攻击或其他滥用行为。

maimaidx-prober's People

Contributors

55601425pzjay avatar crabtux avatar diving-fish avatar dorowolf avatar dreamail avatar drlee-lihr avatar fanyu-na avatar fros1er avatar gogosu avatar huajip avatar iamgqr avatar jasonren0403 avatar kgym-hina avatar mitian233 avatar ohararinney avatar qingqiz avatar realzns avatar rightsg avatar wzhqwq avatar xen0n avatar yuisyuu avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

maimaidx-prober's Issues

MiLK PLUS 不含 "maimai" 前缀

如题,其他版本都写作 “maimai ...”
只有 MiLK PLUS 不含 maimai 前缀
虽然不是在查分器上发现的 但是还是来说一下

macOS下查分程序Runtime Error

系统信息

OS: macOS 12.6
Device: MacBookPro2019 late 16-Inch
CPU: intel core i7-9750H

软件版本

Release:1.2.0-fix1

错误代码

panic: runtime error: invalid memory address or nil pointer dereference
[signal SIGSEGV: segmentation violation code=0x1 addr=0x40 pc=0x12ba705]

goroutine 22 [running]:
main.commit({0x13c90e0?, 0xc000308040?})
	C:/Users/DivingFish/Github/maimaidx-prober/proxy/cmd/maimaidx-prober-proxy/main.go:71 +0x65
main.fetchData(0xc000160300, {0xc000224008, 0x1, 0x1})
	C:/Users/DivingFish/Github/maimaidx-prober/proxy/cmd/maimaidx-prober-proxy/main.go:102 +0x5e5
created by main.main.func2
	C:/Users/DivingFish/Github/maimaidx-prober/proxy/cmd/maimaidx-prober-proxy/main.go:213 +0x29a

发生时机

    成功开启代理后,在微信中打开舞萌DX公众号,显示代理连接成功,然后Terminal中程序发生报错

6+

Tell your world 黄谱是6,但是由于定数大于等于6.7,在网页里被错误标注为6+,导致无法在成绩列表中显示条目,但在pq中有显示

没有针对网络异常做合适的错误处理

众所周知,新版更新后服务器一直是炸的,查看成绩页面巨卡。

然后查分也炸了。

连接异常可以尝试重试或者跳过当前难度,但是不应该挂掉啊。

登录成功,代理已开启到127.0.0.1:8033
自动修改代理设置失败。请尝试手动修改代理。
使用此软件则表示您同意共享您在微信公众号舞萌 DX、中二节奏中的数据。
您可以在微信客户端访问微信公众号舞萌 DX、中二节奏的个人信息主页进行分数导入,如需退出请直接关闭程序或按下 Ctrl + C
正在导入 Basic 难度……2023/06/23 17:52:21 [004] WARN: Error copying to client: readfrom tcp 127.0.0.1:8033->127.0.0.1:56590: read tcp 192.168.31.20:56591->202.89.233.100:443: wsarecv: An existing connection was forcibly closed by the remote host.
2023/06/23 17:52:50 [008] WARN: Error copying to client: readfrom tcp 192.168.31.20:56612->124.251.34.42:443: read tcp 127.0.0.1:8033->127.0.0.1:56611: wsarecv: An existing connection was forcibly closed by the remote host.
panic: runtime error: invalid memory address or nil pointer dereference
[signal 0xc0000005 code=0x0 addr=0x40 pc=0x12cc1e5]

goroutine 51 [running]:
main.commit({0x13e63e0?, 0xc00019e080?})
        C:/Users/DivingFish/Github/maimaidx-prober/proxy/cmd/maimaidx-prober-proxy/main.go:71 +0x65
main.fetchData(0xc00015c400, {0xc0001a6018, 0x1, 0x1})
        C:/Users/DivingFish/Github/maimaidx-prober/proxy/cmd/maimaidx-prober-proxy/main.go:102 +0x5e5
created by main.main.func2
        C:/Users/DivingFish/Github/maimaidx-prober/proxy/cmd/maimaidx-prober-proxy/main.go:223 +0x28f

“导出CSV”功能无法区分标准谱面和DX谱面

就是说,现在导出的CSV只有“标题”字段,
但是标准谱面和DX谱面的标题是相同的((
就不太好区分哪个是标准哪个是DX(
而且好像也有两首不同乐曲的标题完全相同


只要导出csv的时候带上“乐曲ID”字段就好了

关于查分器对Proxifier等全局代理编辑器的支持

首先感谢开发者的付出。
image
因为我日常使用科学上网,所以安装了Proxifier以更方便地使某些不支持代理设置的软件走代理。
在使用查分器更新工具的时候,我也尝试了通过Proxifier来代理微信访问华立网站的流量,然而如图所示,没有任何反应。
先前我在macOS下使用更新工具的时候(那个时候macOS的查分器应该还不支持自动设置系统代理)甚至必须彻底退出Proxifier之后才能正常使用查分器,否则我连系统代理都无法手动设置。
所以,既然都是HTTPS代理,为什么不能通过Proxifier类第三方代理工具代理微信的流量,而只能通过设置系统代理实现?
因为每次更新查分器都必须退出Proxifier,导致了我的使用带来了一定程度的不便。
望尽快得到回复。
谢谢!

CHUNITHM 查分接口问题

CHUNITHM 当前只提供了一个 /chuni/query/player 接口

做的bot想要一个查询所有成绩的接口,来实现一个成绩汇总的功能,如下图,图中是按等级汇总

image.png

maimai这个功能的实现是通过牌子查询拿到所有成绩的,不知道能否给CHUNITHM也添加一个类似的接口

在Termux上使用时发生错误

使用main分支进行的编译
go 版本为 go1.20 android/arm64
下面是错误日志

2023/04/01 18:45:44 http: panic serving 127.0.0.1:44576: runtime error: index out of range [0] with length 0
goroutine 50 [running]:
net/http.(*conn).serve.func1()
        /data/data/com.termux/files/usr/lib/go/src/net/http/server.go:1854 +0xb0
panic({0x5a34eb90c0, 0x400001a138})
        /data/data/com.termux/files/usr/lib/go/src/runtime/panic.go:890 +0x248
github.com/elazarl/goproxy.signHost({{0x0, 0x0, 0x0}, {0x0, 0x0}, {0x0, 0x0, 0x0}, {0x0, 0x0, ...}, ...}, ...)
        /data/data/com.termux/files/home/go/pkg/mod/github.com/elazarl/[email protected]/signer.go:44 +0x8b8
github.com/elazarl/goproxy.TLSConfigFromCA.func1.1(...)
        /data/data/com.termux/files/home/go/pkg/mod/github.com/elazarl/[email protected]/https.go:434
github.com/elazarl/goproxy.TLSConfigFromCA.func1({0x4000020207, 0x17}, 0x400007a360)
        /data/data/com.termux/files/home/go/pkg/mod/github.com/elazarl/[email protected]/https.go:439 +0x208
github.com/elazarl/goproxy.(*ProxyHttpServer).handleHttps(0x4000504000, {0x5a34ed8b00?, 0x40005240e0}, 0x40004a4000)
        /data/data/com.termux/files/home/go/pkg/mod/github.com/elazarl/[email protected]/https.go:184 +0x3d8
github.com/elazarl/goproxy.(*ProxyHttpServer).ServeHTTP(0x0?, {0x5a34ed8b00?, 0x40005240e0?}, 0x5a34e04ff8?)
        /data/data/com.termux/files/home/go/pkg/mod/github.com/elazarl/[email protected]/proxy.go:114 +0xb0
net/http.serverHandler.ServeHTTP({0x4000490090?}, {0x5a34ed8b00, 0x40005240e0}, 0x40004a4000)
        /data/data/com.termux/files/usr/lib/go/src/net/http/server.go:2936 +0x2c0
net/http.(*conn).serve(0x4000494000, {0x5a34ed8d28, 0x400007c210})
        /data/data/com.termux/files/usr/lib/go/src/net/http/server.go:1995 +0x518
created by net/http.(*Server).Serve
        /data/data/com.termux/files/usr/lib/go/src/net/http/server.go:3089 +0x4e8

TypeError: Cannot read properties of undefined (reading 'toString')

1e10227

TypeError: Cannot read properties of undefined (reading 'toString')
    at MainPage.vue?85bf:28:1109
    at s.d (MainPage.vue?85bf:28:1063)
    at t._render (vue.runtime.esm.js:3548:22)
    at s.i (vue.runtime.esm.js:4066:21)
    at ni.get (vue.runtime.esm.js:4479:25)
    at new ni (vue.runtime.esm.js:4468:12)
    at Ln (vue.runtime.esm.js:4073:3)
    at Si.$mount (vue.runtime.esm.js:8415:10)
    at init (vue.runtime.esm.js:3118:13)
    at p (vue.runtime.esm.js:5978:9)

Linux 代理工具无法使用

系统:Arch Linux (内核版本 5.18.6,gcc 12.1.0)
微信使用 deepin-wine 运行,无论使用 http_proxy https_proxy 环境变量,还是 proxychains 工具,又或是微信的代理设置,均无法连接,打开公众号后是舞萌首页,并且代理程序出现 go 报错信息。

图片

[Feature request] 添加神将牌查漏补缺

之前刷将牌的时候用贵项目的代理自己撸了一个简单的出来,但因为我不会 js 所以是 python 实现的,还考虑过用查分器导出的 .csv 文件来实现导出导入的查漏补缺,不过既然都直接用查分器的数据了,是不是直接内置进查分器更牛逼一点,但我不会 js 所以也发不出 pr,开个 issue 提一嘴问问想法。

建议添加filter

在和群友吹水的时候经常会被问什么11+好嫖分(
希望能有个按指定难度筛选的功能

关于导入方法 3 对目前的微信版本(半?)无效,以及查分器上的导入指南未及时更新

关于导入方法三:微信目前使用了 xweb 内核,不使用 x5 内核
但 xweb 内核就目前来说没有 vConsole 调试功能,因此此方法算是半无效的了

至于查分器上的导入指南没更新这件事嘛......
主要是因为今天用代理工具导入的时候会卡在获取 Base 难度这一条提示
(不知道是网络原因还是咋的,在写这一条 issues 的时候竟然又能导入了...)
然后就尝试按照导入指南中的其他办法来尝试,那结果肯定是不行
翻到 #65 后才发现仓库中的 README.md 已经对导入方法四进行补充,也对方法三中的代码进行更新
总之就是,(假装微笑)

顺带提一下,通过调试工具也可以走方法二的网页源代码获取
就是复制源代码有一点点点麻烦
在 Elements(元素) 选项卡中选中 <html lang="zh"><head> ,然后右键 Copy(复制)->Copy Elements(复制元素) 或者 Edit as HTML(编辑为 HTML) 后全选复制(

代理程序在导入分数时报错

panic: runtime error: invalid memory address or nil pointer dereference
[signal 0xc0000005 code=0x0 addr=0x40 pc=0xebc1e5]

goroutine 80 [running]:
main.commit({0xfd63e0?, 0xc000332500?})
C:/Users/DivingFish/Github/maimaidx-prober/proxy/cmd/maimaidx-prober-proxy/main.go:71 +0x65
main.fetchData(0xc00025e100, {0xc00000a050, 0x1, 0x1})
C:/Users/DivingFish/Github/maimaidx-prober/proxy/cmd/maimaidx-prober-proxy/main.go:102 +0x5e5
created by main.main.func2
C:/Users/DivingFish/Github/maimaidx-prober/proxy/cmd/maimaidx-prober-proxy/main.go:223 +0x28f

页面语言为"en"引起的字体显示错误

页面的语言为"en",当浏览器的默认语言不是中文时,会有字体错误(如图日语汉字显示为日语字体)
图片

正确的字体显示(使用 userscript 设置为了 "zh-cn" 后)
图片

查牌子时不知道哪些曲子是不需要打的

如题,用query/plate查牌子时无法得知哪些曲子不用打,希望可以在api返回的数据中加入字段。
具体地,可以在music_data返回的数据中加入某个谱面属于哪些牌子。
比如,[{"id": ..., ..., "charts": [{"notes": ..., "charter": ..., "plates": ["真", "舞"]},...}...]

一个关于公众号内曲目的小问题

最近搞某带学习的时候找到了在微信公众号页面跑js的办法,然后想直接在那里面拿到歌曲信息压缩后扔到查分器里(
不过,最后给出的文本带着曲名的话会太长,导致手机卡死
所以想问一下是不是每个人打开乐曲种类->歌曲类别->所有种类->某个难度这个页面时,显示的曲目顺序都是一样的...

使用时提示 index out of range [0] with length 0

问题描述: 使用代理后打开我的记录 代理报错 且数据未能同步
版本: maimaidx-prober-proxy-windows-1.1.1
复现: 按照使用教程操作 在电脑端微信打开我的记录
出现概率: 每次都是如此
log如下
登录成功,代理已开启到127.0.0.1:8033 代理设置已自动修改。 2021/04/25 23:28:21 http: panic serving 127.0.0.1:62981: runtime error: index out of range [0] with length 0 goroutine 52 [running]: net/http.(*conn).serve.func1(0xc0000b2280) c:/go/src/net/http/server.go:1801 +0x147 panic(0x4940a0, 0xc0001adac0) c:/go/src/runtime/panic.go:975 +0x3e9 github.com/elazarl/goproxy.signHost(0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, ...) C:/Users/divingfish/go/pkg/mod/github.com/elazarl/[email protected]/signer.go:44 +0xcce github.com/elazarl/goproxy.TLSConfigFromCA.func1.1(...) C:/Users/divingfish/go/pkg/mod/github.com/elazarl/[email protected]/https.go:434 github.com/elazarl/goproxy.TLSConfigFromCA.func1(0xc0001ada67, 0x15, 0xc00005f500, 0x0, 0x0, 0x0) C:/Users/divingfish/go/pkg/mod/github.com/elazarl/[email protected]/https.go:439 +0x4e9 github.com/elazarl/goproxy.(*ProxyHttpServer).handleHttps(0xc000075860, 0x523c60, 0xc0001568c0, 0xc000168600) C:/Users/divingfish/go/pkg/mod/github.com/elazarl/[email protected]/https.go:184 +0x5b5 github.com/elazarl/goproxy.(*ProxyHttpServer).ServeHTTP(0xc000075860, 0x523c60, 0xc0001568c0, 0xc000168600) C:/Users/divingfish/go/pkg/mod/github.com/elazarl/[email protected]/proxy.go:114 +0xc9a net/http.serverHandler.ServeHTTP(0xc000156700, 0x523c60, 0xc0001568c0, 0xc000168600) c:/go/src/net/http/server.go:2843 +0xaa net/http.(*conn).serve(0xc0000b2280, 0x5243e0, 0xc00005cf00) c:/go/src/net/http/server.go:1925 +0x8ad created by net/http.(*Server).Serve c:/go/src/net/http/server.go:2969 +0x36d 2021/04/25 23:29:08 [009] WARN: Error copying to client: readfrom tcp 127.0.0.1:8033->127.0.0.1:63006: read tcp 192.168.1.127:63007->192.30.255.112:443: wsarecv: A connection attempt failed because the connected party did not properly respond after a period of time, or established connection failed because connected host has failed to respond.

未知原因闪退

环境

  • 处理器:AMD Ryzen 7 5800H
  • 内存:16.0 GB (15.9 GB 可用)
  • 系统:Windows 11 家庭中文版 22H2
  • 系统版本 22621.1848

程序版本

在以下两个版本中均出现闪退情况:

  1. 官方编译1.3.0
  2. 官方编译1.2.1

如何复现

  1. 参照本项目readme完成“1. 准备工作”
  2. 双击运行程序,打开电脑版微信,进入舞萌 DX 公众号,点击我的记录
  3. 切换到代理服务器的控制台界面,等待导入完成

预期结果

成功导入数据并可通过舞萌 DX | 中二节奏查分器查询

实际所得

  • 小概率成功同步
  • 较大概率同步到一半(Advance/Expert/Master)即闪退,无法获取报错信息

查分器网页点击达成率、定数等按钮的时候,歌曲名会加长

在查分器的网站上面,如果反复点击“排名”,“乐曲名”,“难度”,“定数”,“达成率”,“DX Rating”,“相对难度”的按钮的时候,某些歌曲歌曲名较长,会在反复按下按键后加长。
例如:“DX ここからはじまるプロローグ。”会在多次点击后变成“DX ここからはじまるプロローグ。 プロローグ。 プロローグ。 プロローグ。”

mac用不了

系统Big Sur 11.2.3
微信Version. 3.0.0 (17801)
查分器直接下Release的maimaidx-prober-proxy-mac,版本1.0.2

证书已经信任,go代理已经打开,网络设置配置了代理。
但开微信的「我的记录」还是进的首页,没有自动收集数据。
而且代理如果挂到了https,Terminal会报EOF错误

mac开启代理后微信查记录不导入数据

版本:1.12
系统版本:macOS Monterey 12.4
架构:arm
问题描述:shell已经反馈代理设置已自动修改,通过app版微信查询我的记录之后正常进入页面了,查分器没有工作
3EEA8D83E3B2E0E66B90FE3EF9EF57DF

代理出现认证错误

如题,本人懒得在Arch linux上折腾Wine微信了,决定利用局域网来进行代理。结果刷了一大片认证错误
错误如下

2023/04/18 22:17:17 [002] WARN: Cannot handshake client maimai.wahlap.com:443 remote error: tls: unknown certificate
2023/04/18 22:17:17 [003] WARN: Cannot handshake client maimai.wahlap.com:443 remote error: tls: unknown certificate
2023/04/18 22:17:17 [004] WARN: Cannot handshake client maimai.wahlap.com:443 remote error: tls: unknown certificate
2023/04/18 22:17:17 [005] WARN: Cannot handshake client maimai.wahlap.com:443 remote error: tls: unknown certificate
2023/04/18 22:17:17 [006] WARN: Cannot handshake client maimai.wahlap.com:443 remote error: tls: unknown certificate
2023/04/18 22:17:17 [007] WARN: Cannot handshake client maimai.wahlap.com:443 remote error: tls: unknown certificate
2023/04/18 22:17:18 [008] WARN: Cannot handshake client maimai.wahlap.com:443 remote error: tls: unknown certificate
2023/04/18 22:17:18 [009] WARN: Cannot handshake client maimai.wahlap.com:443 remote error: tls: unknown certificate
2023/04/18 22:17:18 [010] WARN: Cannot handshake client maimai.wahlap.com:443 remote error: tls: unknown certificate
2023/04/18 22:17:18 [011] WARN: Cannot handshake client maimai.wahlap.com:443 remote error: tls: unknown certificate
2023/04/18 22:17:18 [012] WARN: Cannot handshake client maimai.wahlap.com:443 remote error: tls: unknown certificate
2023/04/18 22:17:18 [013] WARN: Cannot handshake client maimai.wahlap.com:443 remote error: tls: unknown certificate
2023/04/18 22:17:18 [014] WARN: Cannot handshake client maimai.wahlap.com:443 remote error: tls: unknown certificate
2023/04/18 22:17:18 [015] WARN: Cannot handshake client maimai.wahlap.com:443 remote error: tls: unknown certificate
2023/04/18 22:17:18 [016] WARN: Cannot handshake client maimai.wahlap.com:443 remote error: tls: unknown certificate
2023/04/18 22:17:18 [017] WARN: Cannot handshake client maimai.wahlap.com:443 remote error: tls: unknown certificate
2023/04/18 22:17:19 [018] WARN: Cannot handshake client maimai.wahlap.com:443 remote error: tls: unknown certificate
2023/04/18 22:17:19 [019] WARN: Cannot handshake client maimai.wahlap.com:443 remote error: tls: unknown certificate
2023/04/18 22:17:19 [020] WARN: Cannot handshake client maimai.wahlap.com:443 remote error: tls: unknown certificate
2023/04/18 22:17:19 [021] WARN: Cannot handshake client maimai.wahlap.com:443 remote error: tls: unknown certificate
2023/04/18 22:17:19 [022] WARN: Cannot handshake client maimai.wahlap.com:443 remote error: tls: unknown certificate
2023/04/18 22:17:19 [023] WARN: Cannot handshake client maimai.wahlap.com:443 remote error: tls: unknown certificate
2023/04/18 22:17:19 [024] WARN: Cannot handshake client maimai.wahlap.com:443 remote error: tls: unknown certificate
2023/04/18 22:17:20 [025] WARN: Cannot handshake client maimai.wahlap.com:443 remote error: tls: unknown certificate
2023/04/18 22:17:20 [026] WARN: Cannot handshake client maimai.wahlap.com:443 remote error: tls: unknown certificate
2023/04/18 22:17:20 [027] WARN: Cannot handshake client maimai.wahlap.com:443 remote error: tls: unknown certificate
2023/04/18 22:17:20 [028] WARN: Cannot handshake client maimai.wahlap.com:443 remote error: tls: unknown certificate
2023/04/18 22:17:20 [029] WARN: Cannot handshake client maimai.wahlap.com:443 remote error: tls: unknown certificate
2023/04/18 22:17:20 [030] WARN: Cannot handshake client maimai.wahlap.com:443 remote error: tls: unknown certificate
2023/04/18 22:17:20 [031] WARN: Cannot handshake client maimai.wahlap.com:443 remote error: tls: unknown certificate
2023/04/18 22:17:20 [032] WARN: Cannot handshake client maimai.wahlap.com:443 remote error: tls: unknown certificate
2023/04/18 22:17:21 [033] WARN: Cannot handshake client maimai.wahlap.com:443 remote error: tls: unknown certificate

手机通过局域网直接连接的电脑代理,同时也安装了证书:
Screenshot_20230418_222045_com android settings

系统信息:
手机:NAM-AL00 鸿蒙3.0.0.205
电脑:
Linux crystal 6.2.11-arch1-1 #1 SMP PREEMPT_DYNAMIC Thu, 13 Apr 2023 16:59:24 +0000 x86_64 GNU/Linux

适用于开发人员的 iOS 设备数据导入方案

这可能不是一个预期解

思路

利用 iOS 的 CA 证书通过 VPN 代理监视微信浏览器的 TCP 流量来抓取 HTTP 请求。

iOS 支持中间人代理攻击(MitM)但我不知道这是否有必要

步骤

我使用的是 Quantumult X 来抓取 HTTP 请求,没有特别原因,只是因为个人比较常用

53DEBD27-A19F-4CA4-B9D0-56B705CDE95B
1F9AB22C-0D48-488C-8790-6CA9BD89C782

可以获得完整的网页源代码

可行的一键上传

iOS 的捷径 APP 可以进行 HTTP Post,如果不使用证书反代,可以考虑通过手动抓包后使用捷径快速上传至查分器

dev console导入代码fetch化

感觉2023了还在$.ajax {async:false}有点不文明(x

((u,p)=>[0,1,2,3,4].reduce(async(promise, diff)=>{
  await promise
  var diffName = ['Basic', 'Advanced', 'Expert', 'Master', 'Re:Master'][diff]
  var url = 'https://maimai.wahlap.com/maimai-mobile/record/musicGenre/search/?genre=99&diff='+diff
  return fetch(url)
  .then(r => {if(r.url!=url)throw new Error(diffName+' 获取分数出错');return r.text()})
  .then(res => fetch('https://www.diving-fish.com/api/pageparser/page', {
    method: 'POST',
    headers:(new Headers({'Content-Type':'text/plain'})),
    body: "<login><u>"+u+"</u><p>"+p+"</p></login>" + res.match(/<html.*>([\s\S]*)<\/html>/)[1].replace(/\s+/g,' ')
  }))
  .then(r => r.json())
  .then(res => {console.log(diffName, res.message, res);if(res.message!='success')throw new Error(diffName+' 上传分数出错')})
}, Promise.resolve()))
("USERNAME", "PASSWORD");

当然我没有测过微信那个浏览器支不支持,按理说应该都可以了吧。
(我是自己做了抓net登录token地址扔给电脑,在电脑上上传的)

增加只能导入数据的API Token密钥

导入数据需要中间人攻击,而复杂的网络环境有可能导致密码泄露。
因此可以增加一种只能导入数据而不能登录网站的密钥用以防止密码泄露带来危险

CHUNITHM查分接口

请问中二节奏之后会开放/dev/player/records的查询成绩的接口吗

OSX can not revert proxy successfully

OS Version:

❯ sw_vers
ProductName:		macOS
ProductVersion:		13.3.1
ProductVersionExtra:	(a)
BuildVersion:		22E772610a

The latest networksetup command requires param.

❯ networksetup --help | grep set | grep state
networksetup -setwebproxystate <networkservice> <on off>
networksetup -setsecurewebproxystate <networkservice> <on off>
networksetup -setsocksfirewallproxystate <networkservice> <on off>

Besides, since the tool set both http and https, need to revert for both as well

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.