今天在VeryCD找PDF资源的时候发现 VeryCD下载破解插件失效了,看了下插件的代码,原来是通过获取VeryCD的资源ID,然后去第三方镜像站通过资源ID查询资源插入到VeryCD页面中。
插件失效的原因就是因为插件使用的第三方VeryCD镜像站逛电驴挂了,导致无法获取下载链接。而插件本身代码里其实有第二套解决方案,爱磁力,只需要手动切换到另外一套方案即可。
插件代码分析
分析插件的manifest.json文件
1 2 3 4 5 6 7 |
"background": { "scripts": [ "verycd_cracker.js" ] }, "content_scripts": [ { "js": [ "verycd_cracker.js" ], "matches": [ "http://www.verycd.com/topics/*" ] } ], |
可见插件在后台页面和插入页面代码两部分都调用了verycd_cracker.js文件。
下面分析verycd_cracker.js文件
其中入口函数Insert_jQuery(callback)
1 2 3 4 5 6 7 8 9 10 11 12 |
function Insert_jQuery(callback) { var script=document.createElement("script"); script.setAttribute("src","http://code.jquery.com/jquery-1.9.0.js"); script.addEventListener('load',function() { var script = document.createElement("script"); script.textContent = "window.jQ=jQuery.noConflict(true);("+callback.toString()+")();"; document.body.appendChild(script); }, false); document.body.appendChild(script); } |
该入口函数主要作用是在页面中插入jQuery链接以及程序主函数main()
程序主函数main()
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
function main() { if(document.getElementById('iptcomED2K').firstChild.textContent.substr(0,11)!='该内容尚未提供权利证明') { return; } $("iframe").remove(); $("#iptcomED2K").children("div").remove(); $("#iptcomED2K").html('<div class="emuletop" id="count_msg">VeryCD 破解:开始分析下载页面...</div><div class="emulemain"><table cellpadding="2" cellspacing="1" width="100%" id="VeryCD_Cracker"><tbody></tbody></table></div>'); var start_str='www.verycd.com/topics/'; var start_loc=location.href.indexOf(start_str); start_loc+=start_str.length; var end_loc=location.href.indexOf('/',start_loc); // window.postMessage({ type: "JMP_PAGE_ADDR", text: "http://www.icili.com/emule/download/"+location.href.slice(start_loc,end_loc),site: "icili"}, "*"); window.postMessage({ type: "JMP_PAGE_ADDR", text: "http://verycd.gdajie.com/topics/"+location.href.slice(start_loc,end_loc)+"/",site: "gdajie"}, "*"); } |
该主函数主要负责将获取到的页面ID拼成第三方源的目标URL并发送给后台处理函数
后台页面通过 window.addEventListener("message", 方法在后台监听程序发送的处理指令,并执行匿名函数function(event)调用其他处理函数分析链接并用ajax插入到verycd页面。
修改方法
该插件以及内置多种第三方源,只需要在主函数中最后发送给后台的命令中切换即可。
将window.postMessage命令中icili前的注释取消,并在gdajie前加上注释,就可以手动将程序的VeryCD第三方源切换为爱磁力
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
function main() { if(document.getElementById('iptcomED2K').firstChild.textContent.substr(0,11)!='该内容尚未提供权利证明') { return; } $("iframe").remove(); $("#iptcomED2K").children("div").remove(); $("#iptcomED2K").html('<div class="emuletop" id="count_msg">VeryCD 破解:开始分析下载页面...</div><div class="emulemain"><table cellpadding="2" cellspacing="1" width="100%" id="VeryCD_Cracker"><tbody></tbody></table></div>'); var start_str='www.verycd.com/topics/'; var start_loc=location.href.indexOf(start_str); start_loc+=start_str.length; var end_loc=location.href.indexOf('/',start_loc); window.postMessage({ type: "JMP_PAGE_ADDR", text: "http://www.icili.com/emule/download/"+location.href.slice(start_loc,end_loc),site: "icili"}, "*"); // window.postMessage({ type: "JMP_PAGE_ADDR", text: "http://verycd.gdajie.com/topics/"+location.href.slice(start_loc,end_loc)+"/",site: "gdajie"}, "*"); } |
后记
作者已经在源码中内置了多种第三方源的方法,唯一的缺点是不支持自动切换,以及快2年多没有更新了。
效果
下载
原始插件
修改后的插件(打包crx)
http://pan.baidu.com/s/1jHpSNaA
修改后的插件(未打包)
http://pan.baidu.com/s/1qWYNPCS
使用
1.插件页面打开开发者模式
2.将crx文件拖入插件页面安装插件
3.打开verycd资源页面
4.All Done!
PS:因为Chrome的安全策略不予许安装第三方插件,所以重启后第三方插件会被禁用,且无法启用
可以用以下方法加载
1.插件页面打开开发者模式
2.解压未打包的插件文件
3.点击加载未打包插件,选择解压后的插件文件夹
这样虽然以后每次重启都要手动确认,但是总算能用
当然最好的方法是把插件上传到Chrome应用中心,但是可惜的是验证账户需要用到Google Checkout,然而这个功能在中国是无解的。
有时候会取不到下载链接,可以试试挂代理再访问
4 comments