从以下位置运行用户脚本时,我尝试从URL http://kissasian.sh/Drama/My-Mister/Episode-1?id=36170(特定页面)中提取链接 http://kissasian.sh/Drama/My-Mister(通用页)。但是,该网站会加密我尝试访问的链接。
运行以下代码
var url = "http://kissasian.sh/Drama/My-Mister/Episode-1?id=36170";
var msg = $.ajax({type: "GET", url: url, async: false}).responseText;
console.log(msg);
在$kissenc.decrypt()
函数中的responseText中提供加密的视频链接。
在特定页面上从控制台运行此功能时,将返回解密的链接;但是,此函数未在运行脚本的常规页面上定义,如以下代码所示。
var url = "http://kissasian.sh/Drama/My-Mister/Episode-1?id=36170";
var decrypted = "";
var msg = "ui0uI3/FNJEDeMXFKFzBVr30Yc6w34jKMp2NWjnnv355ptM/1h5bostMEAZVqsyi";
$.support.cors = true;
$.ajax({type: "GET", url:url, async: false, crossDomain: true}).done(function(){decrypted = $kissenc.decrypt(msg)});
alert(decrypted);
我不熟悉CORS,并且不确定在尝试运行该功能时是否会造成问题。
同样,我无法通过在常规页面或特定页面上合并来自kissasian.sh域的脚本来运行$kissenc.decrypt()
函数:
var rootUrl = "http://kissasian.sh/Scripts/";
$.ajaxSetup({async:false});
var jsS = [
"common.js",
"aes.js",
"sha256.min.js",
"subo.min.js?v=3.19"
];
console.log('Loading scripts ...');
for (var i=0; i < jsS.length; i++){
console.log(jsS[i]);
$.getScript(rootUrl + jsS[i]);
}
var msg = "ui0uI3/FNJEDeMXFKFzBVr30Yc6w34jKMp2NWjnnv355ptM/1h5bostMEAZVqsyi";
var decrypted = $kissenc.decrypt(msg);
alert(decrypted);
这两种方法都依赖于解密功能的成功执行。以下代码在不使用$kissenc.decrypt()
的情况下在更特定的页面上执行:
$.ajax({
url: "http://kissasian.sh/Drama/My-Mister/Episode-1?id=36170",
success: function(result) {
var msg = document.getElementById('containerRoot').outerHTML;
console.log(msg);
},
crossDomain: true,
async: false,
script: true
});
但是,当我尝试通过从常规页面检索元素来查找链接时,代码再次无法正常运行。我希望document.getElementById
从特定页面提供正确的containerRoot,但是它为从其执行的常规页面提供了一个。
在我需要工作的三种不同情况下,我不确定是什么导致了问题。任何帮助将不胜感激!
答案 0 :(得分:1)
有点复杂。 $kissenc
对象在subo.min
脚本中定义,该脚本被和混淆了,这取决于已经加载的其他四个脚本,其中包括 {{1} }。像执行操作一样,将这些脚本放入数组中,然后jquery.allofthelights-min.js
。
此后,eval
被定义,因此可以与之交互。但是还有另一个问题:其window.$kissenc
方法的结果不仅取决于传入的参数,而且取决于先前对decrypt
调用的属性。 $kissenc
还取决于运行$kissenc
脚本之前已经执行过的剧集页面顶部的某个内联脚本标签,否则subo
将返回空字符串。因此,在加载外部脚本之前先decrypt
先插入eval
标签。
然后,页面上有一堆 other 混淆的嵌入式脚本标签。您需要先<script>
每个,直到到达调用eval
的那个为止-然后,您可以调用decrypt
自己并获取输出您正在寻找。
decrypt