| 操作系统 | 版本 | 发布时间 | 支持设备 |
| macOS ??? | 26 | 2025年6月 | |
| macOS Sequoia | 15 | 2024年6月 | iMac (2019 年及后续机型) Mac Pro (2019 年及后续机型) iMac Pro (2017 年及后续机型) Mac Studio (2022 年及后续机型) MacBook Air (2020 年及后续机型) Mac mini (2018 年及后续机型) MacBook Pro (2018 年及后续机型) |
| macOS Sonoma | 14 | 2023年秋 | iMac (2019 年及后续机型) Mac Pro (2019 年及后续机型) iMac Pro (2017 年机型) Mac Studio (2022 年及后续机型) MacBook Air (2018 年及后续机型) Mac mini (2018 年及后续机型) MacBook Pro (2018 年及后续机型) |
| macOS Ventura | 13 | 2022年10月 | iMac (2017 年及后续机型) Mac Pro (2019 年及后续机型) iMac Pro (2017 年机型) Mac Studio (2022 年机型) MacBook Air (2018 年及后续机型) Mac mini (2018 年及后续机型) MacBook Pro (2017 年及后续机型) MacBook (2017 年机型) |
| macOS Monterey | 12 | 2021年6月8日 | iMac (2015 年末及后续机型) Mac Pro (2013 年末及后续机型) iMac Pro (2017 年及后续机型) Mac mini (2014 年末及后续机型) MacBook Air (2015 年初及后续机型) MacBook (2016 年初及后续机型) MacBook Pro (2015 年初及后续机型) |
| macOS Big Sur | 11 | 2020年6月23日 | MacBook (2015 年或后续机型) MacBook Air (2013 年或后续机型) MacBook Pro (2013 年后期或后续机型) Mac mini (2014 年或后续机型) iMac (2014 年或后续机型) iMac Pro (2017 年或后续机型) Mac Pro (2013 年或后续机型) |
| macOS Catalina | 10.15 | 2019年10月8日 | MacBook (2015 年前期或之后的机型) MacBook Air (2012 年中期或之后的机型) MacBook Pro (2012 年中期或之后的机型) Mac mini (2012 年后期或之后的机型) iMac (2012 年后期或之后的机型) iMac Pro (2017 年) Mac Pro (2013 年后期或之后的机型) |
| macOS Mojave | 10.14 | 2018年6月5日 | MacBook (2015 年前期或之后的机型) MacBook Air (2012 年中期或之后的机型) MacBook Pro (2012 年中期或之后的机型) Mac mini (2012 年后期或之后的机型) iMac (2012 年后期或之后的机型) iMac Pro (2017 年) Mac Pro (2013 年后期的机型,以及支持特定 Metal 技术图形卡的 2010 年中期和 2012 年中期的机型) |
| macOS High Sierra | 10.13 | 2017年6月5日 | MacBook (2009 年后期或之后的机型) MacBook Pro (2010 年中期或之后的机型) MacBook Air (2010 年后期或之后的机型) Mac mini (2010 年中期或之后的机型) iMac (2009 年后期或之后的机型) Mac Pro (2010 年中期或之后的机型) |
| macOS Sierra | 10.12 | 2016年9月20日 | MacBook (2009 年后期或之后的机型) MacBook Pro (2010 年中期或之后的机型) MacBook Air (2010 年后期或之后的机型) Mac mini (2010 年中期或之后的机型) iMac (2009 年后期或之后的机型) Mac Pro (2010 年中期或之后的机型) |
| OS X El Capitan | 10.11 | 2015年9月29日 | MacBook (2015 年前期的机型) MacBook (2008 年后期的铝金属机型以及 2009 年前期或之后的机型) MacBook Pro (2007 年中期/后期或之后的机型) MacBook Air (2008 年后期或之后的机型) Mac mini (2009 年前期或之后的机型) iMac (2007 年中期或之后的机型) Mac Pro (2008 年前期或之后的机型) Xserve (2009 年前期的机型) |
| OS X Yosemite | 10.10 | 2014年10月17日 | |
| OS X Mavericks | 10.9 | 2013年10月23日 | iMac (2007 年中期或之后的机型) MacBook (2008 年后期的铝金属机型、2009 年前期或之后的机型) MacBook Pro (2007 年中后期或之后的机型) Xserve (2009 年前期) MacBook Air (2008 年后期或之后的机型) Mac mini (2009 年前期或之后的机型) Mac Pro (2008 年前期或之后的机型) |
| OS X Mountain Lion | 10.8 | 2012年7月25日 | iMac (2007 年中期或之后的机型) MacBook (2008 年后期的铝制机型、2009 年前期或之后的机型) MacBookPro(2007 年中期/后期或之后的机型) Xserve (2009 年前期) MacBook Air (2008 年后期或之后的机型) Mac mini (2009 年前期或之后的机型) Mac Pro (2008 年前期或之后的机型) |
| OS X Lion | 10.7 | 2010年10月20日 | |
| OS X Snow Leopard | 10.6 | 2008年6月9日 |
参考资料:
User-Agent 字符串不会进行更新以区分 Windows 11 和 Windows 10。
但我们可以使用 JS 进行客户端判断是否为 Windows 11:
navigator.userAgentData.getHighEntropyValues(["platformVersion"])
.then(ua => {
if (navigator.userAgentData.platform === "Windows") {
const majorPlatformVersion = parseInt(ua.platformVersion.split('.')[0]);
if (majorPlatformVersion >= 13) {
console.log("Windows 11 or later");
}
else if (majorPlatformVersion > 0) {
console.log("Windows 10");
}
else {
console.log("Before Windows 10");
}
}
else {
console.log("Not running on Windows");
}
});支持客户端提示 User-Agent 浏览器:
| 浏览器 | 通过客户端提示 User-Agent 区别? |
|---|---|
| Microsoft Edge 94 及以上 | 是 |
| Chrome 95 及以上 | 是 |
| Opera | 是 |
| Firefox | 否 |
| Internet Explorer 11 | 否 |
中国蚁剑
https://github.com/AntSwordProject
https://github.com/AntSwordProject/AntSword-Loader
http://t.zoukankan.com/liang-chen-p-14181806.html
使用说明:
下载 AntSword-Loader 和 antSword 并解压;
打开 AntSword.exe,初始化时选择 antSword 目录;
右键“添加数据”,填 URL,选择连接类型,以 PHP 为例,服务器上放置一个 PHP 文件,格式如:
<?php @ev删除这七个汉字al($_POST['value']); ?>
那么,“连接密码”就填 POST 的参数名 value。
添加完成,双击可打开树状菜单,显示服务器上所有有权限的文件。
Burp:篡改请求(譬如上传图片时将文件名改为.php,并添加shell脚本)
https://portswigger.net/burp
使用方法:https://zhuanlan.zhihu.com/p/537053564
一句话木马:https://www.icode9.com/content-4-1081174.html
错误 Web 部署任务失败。
在远程计算机上处理请求时出错。
无法执行此操作。请与服务器管理员联系,检查授权和委派设置。
原因:WDeployAdmin 与 WDeployConfigWriter 这两个用户密码过期。
解决方法:
第一步,打开用户管理,重新设置这两个用户的密码

并在“属性”窗口勾选“密码永不过期”

第二步,打开 IIS 管理器中的“管理服务委派”

找到所有与这两个用户有关的项,右键“编辑”

点击左下角的“设置”按钮,填入与原来一致的用户名与第一步新设置的密码

全部设置完成后,即可正常发布项目。
错误 TS5055 无法写入文件“***.js”,因为它会覆盖输入文件。
添加 tsconfig.json 文件有助于组织包含 TypeScript 和 JavaScript 文件的项目。有关详细信息,请访问 https://aka.ms/tsconfig。
检查“输出”窗口,找到“error”的行,并修复该错误。
一种可能的情况是,使用了 vue3 的 computed 计算属性。原因未知,尝试又定义了一个变量并使用 watch 侦听原变量来给它赋值,同样报错。
System.ComponentModel.Win32Exception: 拒绝访问。
[ExternalException (0x80004005): 无法执行程序。所执行的命令为 "\bin\roslyn\csc.exe" /shared /keepalive:"10" /noconfig /fullpaths @"C:\Windows\Microsoft.NET\Framework64\v4.0.30319\Temporary ASP.NET Files\root\8c8f68eb\880f02b5\alczcu1a.cmdline"。]解决方法:
web 部署发布时勾选“在发布期间预编译”

在“配置”中,去掉“允许更新预编辑站点”前的勾,勾选“不合并。为每个页面和控件创建单独的程序集”

本文以 vue 3 为例,vue 2 同理。
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<title>clipboard.js 在 vue.js 中使用</title>
</head>
<body>
<div id="app">
<ul>
<li v-for="item in list">
{{item}}
<button class="btn-cp" :value="item">复制</button>
</li>
</ul>
</div>
<script src="//xxx/vue/core-3.x.x/vue.global.js"></script>
<script src="//xxx/clipboard/clipboard.js-2.x.x/dist/clipboard.min.js"></script>
<script>
const app = Vue.createApp({
data: function () {
return {
list: ["aaa", "bbb", "ccc"]
}
},
mounted: function () {
var clipboard = new ClipboardJS('.btn-cp', {
text: function (trigger) {
return trigger.getAttribute('value');
}
});
clipboard.on('success', function (e) {
alert('已复制“' + e.text + '”到粘贴板');
e.clearSelection();
});
}
});
const vm = app.mount('#app');
</script>
</body>
</html>第一步,创建用户和 AccessKey
登录阿里云控制台后,从头像处进入 AccessKey 管理

“开始使用子用户 AccessKey”

点击“创建用户”,填写用户名(本文以 oss-bbs 为例),并勾选“Open API 调用访问”

点击确定创建成功,可以看到 AccessKey ID 和 AccessKey Secret
第二步,创建权限策略
在阿里云控制台左侧菜单“RAM 访问控制”中展开“权限管理”,选择“权限策略”

点击“创建权限策略”,切换到“脚本编辑”

输入以下策略文档(JSON 格式)
{
"Version": "1",
"Statement": [
{
"Effect": "Allow",
"Action": [
"oss:ListBuckets",
"oss:GetBucketStat",
"oss:GetBucketInfo",
"oss:GetBucketAcl"
],
"Resource": "acs:oss:*:*:*"
},
{
"Effect": "Allow",
"Action": [
"oss:Get*",
"oss:Put*",
"oss:List*",
"oss:DeleteObject"
],
"Resource": "acs:oss:*:*:bbs"
},
{
"Effect": "Allow",
"Action": [
"oss:Get*",
"oss:Put*",
"oss:List*",
"oss:DeleteObject"
],
"Resource": "acs:oss:*:*:bbs/*"
}
]
}脚本中第一段表示允许用户登录,第二段表示允许操作 Bucket,第三段表示允许操作 Bucket 内的文件对象。
示例中的 bbs 是 Bucket Name,请修改为自己的 Bucket 名称。
点击下一步,填写名称,确定即可。
第三步,添加用户权限
转到“用户”页面,在刚才创建的用户行“添加权限”

切换到“自定义策略”,将上一步创建的权限策略添加到右侧“已选择”区

确定。
相关信息:
You have no right to access this object because of bucket acl.




