虫虫钢琴免登录
最近发现一个看简谱的网站,虫虫钢琴,里面双手弹奏的资源很多,以往在其他网站看到的都是单手的,可惜查看完整曲谱是需要登录和购买vip的。
那这我能忍吗?有没有不花钱也可查看完整曲谱的方式呢?哎,还真有,随便找一首谱子,例如萱草花钢琴简谱 数字双手 李聪,查看源代码的后,我们发现曲谱内容实际上是放在一个iframe里的。
<iframe
id="ai-score"
src="/sheetplayer/web.html?jianpuMode=1&url=https://s201.lzjoy.com/res/statics/fileupload/ccmz/202212/97/975160-638bd3501c8ed.ccmz"
frameborder="0"
scrolling="no"
></iframe>
网站给这个iframe设置了一个scrolling="no"属性,尝试把它移除看看。不错,完整的曲谱已经显示出来了,只是查看完整曲谱按钮看着有些碍眼,没事,我们再删除包含按钮遮罩在内的元素。
<div class="img-mask" style="display: block;">
<img
class="mask"
src="https://s201.lzjoy.com/public/web_static/images/score_details/mask.png"
/>
<p class="img-mask_p">
<span class="buy_whole" style="display: none;">
当前为预览页面,购买后查看全部
</span>
<span class="load_whole">查看完整曲谱 ></span>
</p>
</div>
但是如果我们每次打开页面都需要这么操作一遍,未免有些繁琐。有没有办法让这个过程自动化呢?对,你也想到了吧,我们可以按照上面的步骤写一个油猴脚本。
(function () {
"use strict";
var ai_score = document.querySelector("#ai-score");
var img_mask = document.querySelector(".img-mask");
if (ai_score) {
// 延迟移除iframe的scrolling属性
setTimeout(function () {
ai_score.removeAttribute("scrolling");
}, 1000);
}
if (img_mask) {
img_mask.remove();
}
})();
既然它的曲谱内容在未登录的情况下已经完整地呈现在代码里,那直接改变登录状态是不是更好?说干就干,通过审查全屏按钮绑定的事件发现
document.getElementById("s_d_fullBtn").addEventListener("click", function () {
if (
!isMobile() &&
(!identity.getUid() || !identity.getIsVip()) &&
is_pay == "0"
) {
popup2();
return;
}
// ......
});
getUid和getIsVip这两个方法的字面意思很容易让人想到,一个是获取登录人id,另一个则是获取是否为vip,既然如此,直接让它们都返回真值。
(function (innerWindow) {
"use strict";
innerWindow.identity.getUid = function () {
return "1000";
};
innerWindow.identity.getIsVip = function () {
return 1;
};
})(unsafeWindow);
至此,查看完整曲谱,全屏,下载,打印等功能都已经可以正常使用。