当前位置: 首页 > news >正文

autojs例子之webView的UA切换

/**
 * 作者: 家
 * QQ: 203118908
 * 功能: webViewUA切换
 */
"ui";
importClass(java.io.File);
importPackage(android.text);
importPackage(android.text.style);

ui.layout(
  <vertical id="yidong1" marginTop='0'   bg="#881e90ff">
    <text id="ua" marginTop='10'>ua</text>
    <text id="缓存信息">缓存信息</text>
    <text id="cookie信息" singleLine="true" ellipsize="end" >cookie信息</text>
    <horizontal>
      <button id="切换UA">切换UA</button>
      <button id="清除缓存">清除缓存</button>
      <button id="刷新">刷新</button>
      <button id="上一页">上一页</button>
    </horizontal>
    <horizontal>
      <frame layout_weight="1">
        <button id="百度网站">百度网站</button>
      </frame>
      <frame layout_weight="1">
        <button id="UA网站" >UA网站</button>
      </frame>
    </horizontal>
    <webview id="a" h="450" w="350" margin="0 0"/>
  </vertical>
);




http.__okhttp__.muteClient(new OkHttpClient.Builder().cookieJar(new org.autojs.autojs.network.util.WebkitCookieManagerProxy()))
var cookieManager = android.webkit.CookieManager.getInstance();
ui.a.getSettings().setJavaScriptEnabled(true);
var url = "https://www.baidu.com/"
// var url = "http://www.fynas.com/ua/view"
var webView = ui.a
webView.getSettings().setUserAgentString(随机UA());
setTimeout(显示手机UA, 1000)
ui.a.loadUrl(url);
var CookieStr = cookieManager.getCookie(url);
ui.切换UA.on("click", () => {
  toastLog('点击了\n切换UA')
  var webView = ui.a
  webView.getSettings().setUserAgentString(随机UA());
  setTimeout(显示手机UA, 1000)
})

function 显示手机UA() {
  threads.start(
    function () {
      ui.run(
        function () {
          var ua = 获取手机ua()
          ui.ua.setText('UA: '+ua)
        }
      )
    }
  )
}
setInterval(
  () => {
    var ua = 获取手机ua()
    ui.ua.setText('UA: '+ua)
    var 缓存信息 = 当前缓存()
    ui.缓存信息.setText(缓存信息)
    var cookie信息 = 当前Cookie()
    ui.cookie信息.setText(cookie信息)
    var color="#ff00ff"
    markSearch(ui.ua, "UA", color);
    markSearch(ui.缓存信息, "缓存", color);
    markSearch(ui.cookie信息, "cookie", color);

  }, 2000
)

function 获取手机ua() {
  var webView = ui.a
  var ua = webView.settings.getUserAgentString();
  return ua
}

ui.百度网站.on("click", () => {
var url = "https://www.baidu.com/"
ui.a.loadUrl(url);
})

ui.UA网站.on("click", () => {
var url = "http://www.fynas.com/ua/view"
ui.a.loadUrl(url);
})

ui.上一页.on("click", () => {
  var webView = ui.a
  webView.goBack();
})


ui.清除缓存.on("click", () => {
  toastLog('点击了\n清除缓存')
  log('清除缓存前cookie=')
  log(CookieStr)
  var webView = ui.a
  // 不让用js会白屏
  // webView.getSettings().setJavaScriptEnabled(false);
  var CookieStr = cookieManager.getCookie(url);
  cookieManager.removeSessionCookies(null);
  cookieManager.removeAllCookie();
  cookieManager.flush();
  webView.getSettings().setCacheMode(webView.settings.LOAD_NO_CACHE);
  context.deleteDatabase("WebView.db");
  context.deleteDatabase("WebViewCache.db");
  context.getCacheDir().delete();
  webView.clearCache(true);
  webView.clearFormData();
  webView.setWebChromeClient(null);
  webView.setWebViewClient(null);
  android.webkit.WebStorage.getInstance().deleteAllData(); //清空WebView的localStorage
  webView.clearCache(true);
  CookieStr = cookieManager.getCookie(url);
  log('清除缓存后cookie=')
  log(CookieStr)
})
ui.刷新.on("click", () => {
  toastLog('点击了\n刷新')
  ui.run(() => {
    var webView = ui.a
    webView.reload()
    setTimeout(显示手机UA, 1000)
  });
})

function 随机UA() {
  var uas = [
    "Mozilla/5.0 (Linux; U; Android 2.3.5; zh-cn; U8800 Build/HuaweiU8800) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1",
    "Mozilla/5.0 (Linux; U; Android 2.3.5; zh-cn) AppleWebKit/530.17 (KHTML, like Gecko) FlyFlow/2.2 Version/4.0 Mobile Safari/530.17",
    "Mozilla/5.0 (Linux; U; Android 2.3.5; zh-cn; U8800 Build/HuaweiU8800) UC AppleWebKit/534.31 (KHTML, like Gecko) Mobile Safari/534.31",
    "Mozilla/5.0 (Linux; Android 4.0.3; M031 Build/IML74K) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.166 Mobile Safari/535.19"
  ]
  var uasLen = uas.length
  var n = 随机数(uasLen)
  var ua = uas[n]
  return ua

  function 随机数(max) {
    var r = parseInt(max * Math.random())
    return r
  }
}

function 当前缓存() {
  var file3 = activity.getCacheDir();
  var file3Size = getFolderSize(file3)
  file3Size = conver(file3Size)
  var 当前缓存路径 = '缓存: ' + file3 + ': ' + file3Size
  return 当前缓存路径
}
function 当前Cookie() {
  var CookieStr = cookieManager.getCookie(url);
  CookieStr = 'cookie: ' + CookieStr
  return CookieStr
}

function getFolderSize(path) {
  var file = new File(path)
  var size = 0;
  try {
    var fileList = file.listFiles();
    for (var i = 0; i < fileList.length; i++) {
      if (fileList[i].isDirectory()) {
        size = size + getFolderSize(fileList[i]);
      } else {
        size = size + fileList[i].length();
      }
    }
  } catch (e) {
    log(e)
  }
  return size
}

function conver(limit) {
  var size = "";
  if (limit < 0.1 * 1024) { //如果小于0.1KB转化成B
    size = limit.toFixed(2) + "B";
  } else if (limit < 0.1 * 1024 * 1024) { //如果小于0.1MB转化成KB
    size = (limit / 1024).toFixed(2) + "KB";
  } else if (limit < 0.1 * 1024 * 1024 * 1024) { //如果小于0.1GB转化成MB
    size = (limit / (1024 * 1024)).toFixed(2) + "MB";
  } else { //其他转化成GB
    size = (limit / (1024 * 1024 * 1024)).toFixed(2) + "GB";
  }
  var sizestr = size + "";
  var len = sizestr.indexOf("\.");
  var dec = sizestr.substr(len + 1, 2);
  if (dec == "00") { //当小数点后为00时 去掉小数部分
    return sizestr.substring(0, len) + sizestr.substr(len + 3, 2);
  }
  return sizestr;
}
//删除指定文件夹下所有文件
//param path 文件夹完整绝对路径
function delAllFile(path) {
  var flag = false;
  var file = new File(path);
  if (!file.exists()) {
    return flag;
  }
  if (!file.isDirectory()) {
    return flag;
  }
  var tempList = file.list();
  var temp = null;
  for (var i = 0; i < tempList.length; i++) {
    if (path.endsWith(File.separator)) {
      temp = new File(path + tempList[i]);
    } else {
      temp = new File(path + File.separator + tempList[i]);
    }
    if (temp.isFile()) {
      temp.delete();
    }
    if (temp.isDirectory()) {
      delAllFile(path + "/" + tempList[i]); //先删除文件夹里面的文件
      files.remove(path + "/" + tempList[i]); //再删除空文件夹
      flag = true;
    }
  }
  return flag;
}










function highlightText(text, start, length, color) {
    if (!(typeof(text) == 'object' && text.getClass().getName() == 'android.text.SpannableStringBuilder')) {
        text = new SpannableStringBuilder(text);
    }
    text.setSpan(new ForegroundColorSpan(colors.parseColor(color)), start, start + length, Spannable.SPAN_INCLUSIVE_INCLUSIVE);
    return text;
}

function highlightView(view, start, length, color) {
    view.setText(highlightText(view.text(), start, length, color));
}

function markSearch(view, keywords, color) {
    let textStr = view.text();
    let text = textStr;
    let i = -1;
    while (i < textStr.length - 1) {
        i = textStr.indexOf(keywords, i + 1);
        if (i >= 0) {
            text = highlightText(text, i, keywords.length, color);
        } else {
            break;
        }
    }
    view.setText(text);
    return text;
}

有需要就直接复制走。

若还没下载软件,看下面。

2025最新auto.js Pro 9.3.1.1免登录 不需root能打包app,亲测可用,非常简单https://mp.weixin.qq.com/s/LZVb0KMakt7rEt1aLZeZcg?token=1284526187&lang=zh_CN

相关文章:

  • Java中的日志框架:Log4j2 vs SLF4J vs Logback
  • 【力扣】2621. 睡眠函数——认识Promise
  • JAVA若依框架
  • 在 Vue 3 中,如何缓存和复用动态组件
  • 微服务2025/2/15
  • 前缀和算法:解锁高效编程的钥匙
  • Leetcode---83.删除排序链表中的重复元素
  • 谷歌GMS认证,安卓14版本的谷歌EDLA认证详细介绍,谷歌安卓14 EDLA认证有多少测试项?
  • 2025年软考报名费用是多少?全国费用汇总!
  • HDFS数据存储与数据管理
  • Facebook Instant Game:即时游戏的新时代
  • JVM 简单内存结构及例子
  • 某住宅小区地下车库安科瑞的新能源汽车充电桩的配电设计与应用方案 安科瑞 耿笠
  • 算法系列之回溯算法
  • 35. Spring Boot 2.1.3.RELEASE 应用监控【监控信息可视化】
  • Python - Python连接数据库
  • 十一、k8s安全机制
  • Java篇之继承
  • 防御保护-----第五章:状态检测和会话技术
  • deepseek-r1-centos-本地服务器配置方法
  • 做信息网站需要什么/情感营销
  • 电影网站app怎么做的/刷赞网站推广永久
  • 做网站建设与推广企业/天津seo排名收费
  • 自己做店招的网站/推广平台app
  • wordpress企业站教程/百度推广账户登录
  • 自己如何做独立网站/广告外链平台