【AndroLua+】一个野生的蓝奏云解析例子

avatar

azurekiln

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)

扫描二维码,在手机上阅读
收藏
请先 登录 再评论
powered by emlog pro
服务器供应商 新区云数据

友情链接
白衣Ink


sitemap