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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/979053.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

HarmonyOS 5.0应用开发——鸿蒙接入高德地图实现POI搜索

【高心星出品】 文章目录 鸿蒙接入高德地图实现POI搜索运行结果&#xff1a;准备地图编写ArkUI布局来加载HTML地图 鸿蒙接入高德地图实现POI搜索 在当今数字化时代&#xff0c;地图应用已成为移动设备中不可或缺的一部分。随着鸿蒙系统的日益普及&#xff0c;如何在鸿蒙应用中…

Python爬虫(四)- Selenium 安装与使用教程

文章目录 前言一、简介及安装1. Selenium 简介2. Selenium 安装 二、Selenium 基本使用1. 导入Selenium2. 启动浏览器3. 打开网页4. 获取页面标题5. 关闭浏览器6. 完整示例代码 三、Selenium WebDriver1. 简介2. 基本操作2.1 启动浏览器2.2 关闭浏览器2.3 打开网页2.4 关闭当前…

java后端开发day20--面向对象进阶(一)--static继承

&#xff08;以下内容全部来自上述课程&#xff09; 1.static–静态–共享 static表示静态&#xff0c;是java中的一个修饰符&#xff0c;可以修饰成员方法&#xff0c;成员变量。 1.静态变量 被static修饰的成员变量&#xff0c;叫做静态变量。 特点&#xff1a; 被该类…

phpstudy安装教程dvwa靶场搭建教程

GitHub - digininja/DVWA: Damn Vulnerable Web Application (DVWA) Dvwa下载地址 Windows版phpstudy下载 - 小皮面板(phpstudy) 小皮下载地址 1选择windows 版本&#xff0c;点击立即下载 下载完成&#xff0c;进行解压&#xff0c;注意不要有中文路径 点击.exe文件进行安装…

AI数字人技术源码开发分享:革新短视频营销策略

集星幻影的AI数字人分身系统是一款融合了先进人工智能技术的综合性短视频营销解决方案。该系统整合了形象克隆、声音克隆、AI数字人分身生成、智能剪辑及文案创作等功能&#xff0c;旨在为用户打造虚拟人物资产并提供AI驱动的多模态交互服务。以下是该系统的主要功能概述&#…

Day 51 卡玛笔记

这是基于代码随想录的每日打卡 647. 回文子串 给你一个字符串 s &#xff0c;请你统计并返回这个字符串中 回文子串 的数目。 回文字符串 是正着读和倒过来读一样的字符串。 子字符串 是字符串中的由连续字符组成的一个序列。 示例 1&#xff1a; 输入&#xff1a;s &q…

ArcGIS Pro可见性分析:精通地形视线与视域分析

在地理信息系统&#xff08;GIS&#xff09;的广泛应用中&#xff0c;可见性分析作为一项关键技术&#xff0c;发挥着不可替代的作用。 无论是城市规划、环境监测&#xff0c;还是军事侦察、景观设计&#xff0c;可见性分析都能提供精确的数据支持&#xff0c;帮助我们更好地理…

【WSL2】 Ubuntu20.04 GUI图形化界面 VcXsrv ROS noetic Vscode 主机代理 配置

【WSL2】 Ubuntu20.04 GUI图形化界面 VcXsrv ROS noetic Vscode 主机代理 配置 前言整体思路安装 WSL2Windows 环境升级为 WIN11 专业版启用window子系统及虚拟化 安装WSL2通过 Windows 命令提示符安装 WSL安装所需的 Linux 发行版&#xff08;如 Ubuntu 20.04&#xff09;查看…

点云 Ubuntu20.04-VScode已解决fatal error: Eigen/StdVector: 没有那个文件或目录

原因&#xff1a;路径问题 。 解决&#xff1a;解决方法&#xff1a; 使用下面命令将eigen的安装路径映射到/usr/include路径下:pcl按照z方向渲染点云&#xff0c;但是CMakelists.txt编译找不到pcl/io/pcd_io.h: 没有那个文件或目录&#xff0c;Eigen找不到&#xff0c;open3d…

Redis 面试

Redis 使用场景有哪些&#xff1f; 缓存&#xff1a;缓存热点数据&#xff0c;如数据库查询结果、页面片段等&#xff0c;减少数据库压力&#xff0c;提高系统响应速度。 分布式锁&#xff1a;利用 Redis 的原子操作实现分布式锁&#xff0c;保证在分布式环境下同一时刻只有一…

228页PPT丨制造业核心业务流程优化咨询全案(战略营销计划生产研发质量),附核心系统集成架构技术支撑体系,2月26日资料已更新

一、订单全生命周期管理优化 1. 智能订单承诺&#xff08;CTP&#xff09;系统 ●集成ERP/APS/MES数据&#xff0c;实时计算产能可视性 ●应用蒙特卡洛模拟评估订单交付风险 ●建立动态插单评估模型&#xff08;基于边际贡献与产能占用系数&#xff09; 2. 跨部门协同机制…

mysql5.7离线安装及问题解决

这次主要是讲解mysql5.7离线安装教程和一主一从数据库配置 1、去官网下载自己对应的mysql https://downloads.mysql.com/archives/community/2、查看需要安装mysql服务器的linux的类型 uname -a第二步看一下系统有没有安装mysql rpm -qa|grep -i mysql3、上传安装包 用远程…

AI人工智能机器学习之聚类分析

1、概要 本篇学习AI人工智能机器学习之聚类分析&#xff0c;以KMeans、AgglomerativeClustering、DBSCAN为例&#xff0c;从代码层面讲述机器学习中的聚类分析。 2、聚类分析 - 简介 聚类分析是一种无监督学习的方法&#xff0c;用于将数据集中的样本划分为不同的组&#xff…

springai系列(二)从0开始搭建和接入azure-openai实现智能问答

文章目录 前言1.从0开始搭建项目2.进入微软openai申请key3.配置application.yaml4.编写controller5.测试源码下载地址总结 前言 之前使用openai的官网的api需要科学上网&#xff0c;但是我们可以使用其他的代理间接实现使用chatgpt的相关模型&#xff0c;解决这个问题。比如:本…

2020年蓝桥杯Java B组第二场题目+部分个人解析

#A&#xff1a;门牌制作 624 解一&#xff1a; public static void main(String[] args) {int count0;for(int i1;i<2020;i) {int ni;while(n>0) {if(n%102) {count;}n/10;}}System.out.println(count);} 解二&#xff1a; public static void main(String[] args) {…

DeepSeek 202502 开源周合集

DeepSeek 本周的开源项目体现了其在 AI 技术栈中的深厚积累&#xff0c;从硬件协同优化&#xff08;FlashMLA&#xff09;、通信库&#xff08;DeepEP&#xff09;、核心计算&#xff08;DeepGEMM&#xff09;到推理模型&#xff08;DeepSeek-R1&#xff09;&#xff0c;覆盖了…

Ubuntu2204下使用NVIDIA GeForce RTX 4090进行DeepSeek-R1-Distill-Llama-8B模型微调

Ubuntu2204下使用NVIDIA GeForce RTX 4090进行DeepSeek-R1-Distill-Llama-8B模型微调 环境准备创建Python微调环境准备数据集准备模型文件 模型微调模型预测原始模型预测微调模型预测 使用unsloth&#xff0c;可以方便地对大模型进行微调。以微调DeepSeek-R1-Distill-Llama-8B为…

DeepSeek 开源狂欢周(二)DeepEP深度技术解析 | 解锁 MoE 模型并行加速

在大模型时代&#xff0c;Mixture-of-Experts (MoE) 模型凭借其强大的容量和高效的计算能力&#xff0c;成为研究和应用的热点。然而&#xff0c;MoE 模型的训练和推理面临着巨大的专家并行通信挑战。近日&#xff0c;DeepSeek 开源了 DeepEP 项目&#xff0c;为解决这一难题提…

(IDE接入DeepSeek)简单了解DeepSeek接入辅助开发与本地部署建议

重点&#xff1a;IDE接入DeepSeek是否收费 收费&#xff01; 本文章主要是为了给小白避雷&#xff0c;目前很多文章告诉大家怎么接入DeepSeek&#xff0c;但是并未告知大家是否收费。如果是想白嫖的&#xff0c;就可以不用去接入了。 一、引言 最近爆火的AI人工智能工具DeepSe…

FPGA开发时序图绘制

开始的时候画时序图都是拿 visio 硬连&#xff0c;但是那个线宽太难统一了&#xff0c;丑不拉几的&#xff0c;遂学习 waveform 语法使用代码来画时序图。 开始 Vscode 中安装 waveform render 或者在 GitHub 搜索 wavedrom 安装即可。由于 vscode 是我常用的编辑器&#xff…