【AndroLua+】一个野生的蓝奏云解析例子
lanzous.lua
require "import"
import "android.net.Uri"
import "android.webkit.WebResourceResponse"
import "android.webkit.CookieManager"
import "java.io.ByteArrayInputStream"
local WebChromeClient = luajava.bindClass "android.webkit.WebChromeClient"
--解析方案
local analysis_schemes={}
analysis_schemes["no_pass_schemes"]={
[[
document.getElementById("submit").onfocus();
document.getElementById("submit").click();
setTimeout(function(){
history.go(-1)
},4000);
]],
[[
document.getElementsByClassName("mh")[0].getElementsByTagName("a")[0].onfocus();
document.getElementsByClassName("mh")[0].getElementsByTagName("a")[0].click();
setTimeout(function(){
history.go(-1)
},4000);
]],
[[
AllAElements=document.getElementsByTagName('a');
for (var i = 0; i <= AllAElements.length; i = i + 1) {
if (AllAElements[i].innerHTML.indexOf("下载")!==-1) {
AllAElements[i].onfocus();
AllAElements[i].click();
};
};
setTimeout(function(){
history.go(-1)
},4000);
]]
}
analysis_schemes["pass_schemes"]={
[[
document.getElementById('pwd').value=mPASSWORD;
window.addEventListener("DOMNodeInserted",function(){
document.getElementsByClassName("mh")[0].getElementsByTagName("a")[0].click();
setTimeout(function(){
history.go(-1)
},4000);
});
pwd();
]]
}
analysis_lanzous={}
analysis_lanzous["analysis_status"]=false
analysis_lanzous["no_pass_scheme"]=1
local function inputJS(view,js)
if not pcall(function()view.evaluateJavascript(js,nil)end) then
view.loadUrl("javascript:"..js)
end
end
analysis_lanzous["init_webview"]=function(web_view,analysis_info)
web_view.setWebViewClient{
shouldInterceptRequest=function(view,response)
--目前就先过滤一下广告,减少流量压力
if table.find({"pos.baidu.com","statics.woozooo.com"},Uri.parse(response).getHost()) then
response=""--人为拦截并改写为空,干掉广告,省流
webResourceResponse = WebResourceResponse("text/html", "utf-8", ByteArrayInputStream(String(response).getBytes()));
return webResourceResponse
end
end,
onPageStarted=function(view,url,bitmap)
if bitmap then
bitmap.recycle()--释放掉
end
end,
onPageFinished=function(view,url)
if not analysis_info["analysis_status"] then
if analysis_info["pass_status"] then
--有密码
analysis_info["analysis_status"]=true
inputJS(view,"var mPASSWORD='"..analysis_info["pass"].."'")
inputJS(view,analysis_schemes["pass_schemes"][1])
else
--无密码
analysis_info["analysis_status"]=true
inputJS(view,analysis_schemes["no_pass_schemes"][analysis_lanzous["no_pass_scheme"]])
end
end
end,
shouldOverrideUrlLoading=function(view,url)
if url:find("^https?://") then
view.loadUrl(url)
end
return true
end,
onReceivedSslError=function(webView,sslErrorHandler,sslError)
return true--屏蔽SSL错误报错
end,
onReceivedError=function(webView,i,str,str2)
return true--屏蔽网页错误
end,
}
web_view.setWebChromeClient(luajava.override(WebChromeClient,{
onJsAlert=function(view,url,message,jsResult)
return true--屏蔽Alert
end,
onJsConfirm=function(view,url,message,jsResult)
return true--屏蔽Confirm
end,
onJsPrompt=function(view,url,message,defaultValue,jsPromptResult)
return true--屏蔽Prompt
end,
onShowFileChooser=function(view,valueCallbackuri,fileChooserParams)
return true--屏蔽文件上传
end,
}))
web_view.setDownloadListener{
onDownloadStart=function(url,userAgent,contentDisposition,mimetype,contentLength)
analysis_info["webView"].clearHistory();
analysis_info["webView"].stopLoading()
analysis_info["webView"].loadUrl("about:blank")
analysis_info["webView"].clearHistory();
analysis_info["callback"](url,userAgent,contentDisposition,mimetype,contentLength)
return true
end,
}
end
analysis_lanzous["get_url"]=function(url,pwd,callback)
local analysis_info={}
analysis_info["analysis_status"]=false
if pwd then
analysis_info["pass"]=pwd
analysis_info["pass_status"]=true
else
analysis_info["pass"]="pass"
analysis_info["pass_status"]=false
end
if callback then
analysis_info["callback"]=callback
end
local web_view=LuaWebView(activity)
analysis_info["webView"]=web_view
analysis_lanzous["init_webview"](web_view,analysis_info)
web_view.loadUrl(url)
end
return analysis_lanzous
main.lua
url="https://azurekiln.lanzouu.com/iyx0L2o4uiqf"
pass="fwi4"
import "lanzous"
analysis_lanzous.get_url(url,pass,function(direct_url)
print(direct_url)
end)
扫描二维码,在手机上阅读
收藏