月色真美

月色真美

.Net模拟运行Javascript

29
2022-01-16

之前为了破解QQ音乐以抓取其WEB下的歌曲,找到了一款开源的依赖包,此包可以允许.Net模拟Javascript运行环境并完美运行。支持win、linux和osx。

Install-Package JavaScriptEngineSwitcher.ChakraCore

这里拿我模拟JS环境,运行QQ音乐Web端的一个js文件,用来生成api请求的签名。

var ScriptPath = Path.Combine(AppContext.BaseDirectory, "Resources", "qqmusic.index.umd_20200305.js");
var switcher = JsEngineSwitcher.Current;
switcher.EngineFactories.Add(new ChakraCoreJsEngineFactory());
switcher.DefaultEngineName = ChakraCoreJsEngine.EngineName;
IJsEngine engine = JsEngineSwitcher.Current.CreateDefaultEngine();
engine.ExecuteFile(ScriptPath, Encoding.UTF8);
return engine.CallFunction<string>("getSign", json);

上面代码的json是QQ音乐请求参数的json。

与其花时间来分析QQ音乐api签名的规则,还不如直接调用其结果,简单粗暴