mycpen-blog 0.0.0-wjbgetcphi → 0.0.0-wjdcuicfya
Sign up to get free protection for your applications and to get access to all the features.
- package/css/index.css +1 -1
- package/gallery/fe32.top/download.sh +1144 -0
- package/img/loading.svg +1 -0
- package/js/APlayer.js +1 -1
- package/js/Meting.js +1 -1
- package/js/ali_font.js +1 -1
- package/js/custom.js +1 -1
- package/js/fcircle.js +1 -1
- package/js/fcircle_manage_panel.js +14 -0
- package/js/home_page_swiper.js +1 -1
- package/js/main.js +1 -1
- package/js/people.js +1 -1
- package/js/random.js +1 -1
- package/js/random_friends_post.js +1 -1
- package/js/search/algolia.js +1 -1
- package/js/search/local-search.js +1 -1
- package/js/tianli_gpt.js +1 -1
- package/js/tw_cn.js +1 -1
- package/js/ua_parser.js +1 -1
- package/js/utils.js +1 -1
- package/js/waterfall.js +1 -1
- package/json/friend.json +1 -0
- package/json/link.json +1 -0
- package/json/tianli_gpt.json +1 -0
- package/lib/hbe.js +1 -1
- package/manifest.json +1 -1
- package/music1/js/APlayer.min.js +1 -1
- package/music1/js/Meting2.min.js +1 -1
- package/music1/js/main.js +1 -1
- package/music1/main.css +1 -1
- package/music1/manifest.json +2 -2
- package/package.json +1 -1
- package/search.xml +48 -48
- package/sitemap.xml +102 -102
- package/wechatOA/main.css +1 -1
- package/wechatOA/main.js +1 -1
- package/friend.json +0 -1
- package/link.json +0 -1
- package/song/AZA/345/276/256/345/224/261/345/233/242//344/273/216/345/210/253/345/220/216/song.lrc +0 -43
- package/song/S.H.E//344/270/200/347/234/274/344/270/207/345/271/264/song.lrc +0 -51
- package/song/The Chainsmokers/Something Just Like This/song.lrc +0 -65
- package/song//345/221/250/346/235/260/344/274/246//344/270/203/351/207/214/351/246/231/song.lrc +0 -39
- package/song//345/221/250/346/235/260/344/274/246//345/217/215/346/226/271/345/220/221/347/232/204/351/222/237/song.lrc +0 -61
- package/song//345/221/250/346/235/260/344/274/246//346/230/216/346/230/216/345/260/261/song.lrc +0 -46
- package/song//345/221/250/346/235/260/344/274/246//346/234/200/351/225/277/347/232/204/347/224/265/345/275/261/song.lrc +0 -51
- package/song//345/221/250/346/235/260/344/274/246//347/250/273/351/246/231/song.lrc +0 -53
- package/song//345/221/250/346/235/260/344/274/246//347/272/242/351/242/234/345/246/202/351/234/234/song.lrc +0 -57
- package/song//345/221/250/346/235/260/344/274/246//350/257/264/345/245/275/347/232/204/345/271/270/347/246/217/345/221/242/song.lrc +0 -70
- package/song//345/221/250/346/235/260/344/274/246//351/235/222/350/212/261/347/223/267/song.lrc +0 -45
- package/song//346/242/201/351/223/255/347/220/233//351/241/273/350/207/276/song.lrc +0 -71
- package/song//350/214/203/347/216/256/347/220/252//346/234/200/345/210/235/347/232/204/346/242/246/346/203/263/song.lrc +0 -63
- package/song//350/221/243/347/234/237//346/200/235/345/246/202/351/233/252/song.lrc +0 -48
@@ -0,0 +1 @@
|
|
1
|
+
{"summaries":[{"url":"https://blog.cpen.top/posts/14763.html","title":"01_Django-介绍-项目结构-URL和视图函数","id":28742,"summary":"这篇文章介绍了Django的项目结构、URL和视图函数的相关内容。首先介绍了Django的起源、组件、用途和版本,并提供了安装方法。然后详细解析了Django项目的结构,包括各个文件的作用和配置。接着介绍了URL的结构和处理URL请求的方法,包括主路由配置和示例视图函数。最后给出了Django的用途和官方文档参考网站,并提供了在线和离线安装的方法。"},{"url":"https://blog.cpen.top/posts/57095.html","title":"02_Django-路由配置-HTTP协议的请求和响应","id":29015,"summary":"这篇文章介绍了Django中的路由配置和HTTP协议的请求和响应。在路由配置方面,文章讲解了path()和re_path()函数的使用方法,并提供了相关的实例练习。对于HTTP协议的请求和响应,文章说明了请求和响应的样例和常用方法,以及Django中处理请求和生成响应的方式。文章还提及了URL反向解析和Django的设计模式及模板层的内容。"},{"url":"https://blog.cpen.top/posts/42935.html","title":"03_Django-GET请求和POST请求-设计模式及模板层","id":49855,"summary":"这篇文章介绍了Django中GET请求和POST请求的处理方式,以及设计模式和模板层的相关内容。文章首先定义了GET请求和POST请求的概念和处理方式。接着介绍了Django中的设计模式和模板层,包括传统的MVC模式以及Django特有的MTV模式。文章还解释了什么是模板,以及模板的配置和加载方式。同时,还介绍了视图层与模板层之间的交互。最后,文章提供了GET请求和POST请求的样例和格式,并解释了如何处理客户端传递的数据。"},{"url":"https://blog.cpen.top/posts/5552.html","title":"01_Error-Nginx 反代后端接口报错","id":37550,"summary":"这篇文章介绍了作者遇到的一个问题,当使用Nginx作为反向代理时,后端接口报错的情况。作者提供了解决办法,并分享了个人配置记录。文章中还包含了相关错误日志以及分析,指出可能是上传文件过大,传输时间过长导致连接被中断。作者提到在使用Nginx作为反向代理时,要注意保持长连接的设置。"},{"url":"https://blog.cpen.top/posts/65154.html","title":"04_Django-模板变量/标签/过滤器/继承-url反向解析","id":43866,"summary":"这篇文章介绍了Django中模板层的各个部分:变量和标签、过滤器和继承、以及url反向解析。文章提供了示例代码和语法演示来说明每个部分的用法。其中介绍了模板变量的传递和调用方式,以及如何使用标签进行流程控制等操作。文章还介绍了过滤器的使用方法,可以通过过滤器改变变量的输出显示。最后,文章简要介绍了模板的继承和url反向解析的相关内容。"},{"url":"https://blog.cpen.top/posts/cb0ae693.html","title":"02_Error-记 Win下 Git 忘加入 PATH","id":31314,"summary":"这篇文章介绍了一个关于在Windows系统中使用Git时出现未加入PATH环境变量的问题。作者使用VS Code打开项目时,使用Git Bash作为终端,在输入命令时出现\"bash: xxx: command not found\"的错误提示。文章提到该问题的原因是Git安装目录下的bin目录未加入环境变量,导致基础命令无法找到。作者解决该问题的方法是将xxx/git/bin加入PATH变量。另外,文章还提到在VS Code打开常用的仓库时,命令通常是可以找到的,但具体原因不确定。"},{"url":"https://blog.cpen.top/posts/12907.html","title":"01_Java-特性-jdk-运行机制-转义字符-注释-代码规范","id":31630,"summary":"这篇文章介绍了Java的特性、jdk的安装配置、运行机制、转义字符、注释、代码规范等内容。首先介绍了Java的就业方向、开发场景和应用领域,接着给出了一些Java程序的举例。然后讲述了Java的特点,包括面向对象、健壮性和跨平台性。还介绍了Java的开发工具选择。文章还附带了视频链接,介绍了一些具体的Java开发场景举例。最后提供了一些本章作业。"},{"url":"https://blog.cpen.top/posts/fe8dbc73.html","title":"03_Error-问题记录-winpty-.gitignore","id":30017,"summary":"这篇文章介绍了一些问题记录和解决方法。首先,作者在git bash终端运行python文件时遇到了中文乱码的问题,通过在python命令前加上winpty解决了这个问题。其次,作者分享了.gitignore配置文件的使用,介绍了.gitignore命令和git status命令中的一些参数。然后,文章提到了一个网络显示\"无Internet\"的问题,并尝试了一些解决方法,最终通过重置以太网网络解决了问题。最后,作者推测问题可能是由DHCP分配的DNS服务器有问题造成的。"},{"url":"https://blog.cpen.top/posts/47697.html","title":"02_Java-变量-数据类型","id":30401,"summary":"这篇文章介绍了Java中的变量和数据类型。在变量部分,它讲解了变量的原理、概念、细节以及加号的使用。在数据类型部分,它介绍了整型、浮点数、字符型和布尔类型,并提供了一些示例。此外,还讨论了数据类型转换和基本数据类型与String类型的转换。文章还使用示例代码演示了变量的使用和注意事项。最后,还简要介绍了Java API文档。"},{"url":"https://blog.cpen.top/posts/62652.html","title":"03_Java-运算符-标识符命名规则规范-键盘输入-进制","id":4377,"summary":"这篇文章介绍了Java中的运算符包括算术、关系、逻辑、位运算符以及赋值和三元运算符,同时也介绍了标识符命名的规则和规范,包括标识符的命名规则和关键字保留字,最后还介绍了键盘输入和进制转换的相关知识,包括四种进制的介绍,以及不同进制之间的转换方法和运算思考题。文章还提供了运算符和关系运算符的应用案例。"},{"url":"https://blog.cpen.top/posts/5162.html","title":"02_Hexo-出错排查-Nunjucks Error","id":30814,"summary":"这篇文章介绍了解决Hexo中Nunjucks错误的方法。文章首先描述了出现的错误现象,即Unhandled rejection Nunjucks Error: _posts/xxx.md [Line 84, Column 13] unknown block tag: 标签。然后介绍了解决这个问题的办法,可以使用raw标签包裹或使用单引号或三引号来避免Nunjucks解析错误。另外,还提到可以通过渲染器的选项、API或前置内容来禁用Nunjucks标签。"},{"url":"https://blog.cpen.top/posts/8236.html","title":"01_Hexo-Hexo + Pure搭建博客-自定义","id":29123,"summary":"这篇文章介绍了如何使用Hexo和Pure主题搭建个人博客,并提供了自定义的方法。介绍了Hexo的特点和使用方法,以及Pure主题的项目地址和文档。文章还提到了一些自定义的需求,如修改搜索框、头像链接和文章目录的样式,添加评论框和修改分类的默认收起状态。最后,文章还讨论了一些未解决的小需求。"},{"url":"https://blog.cpen.top/posts/43907.html","title":"03_Hexo-Github Pages 个人博客源文件备份迁移","id":30149,"summary":"这篇文章介绍了将Hexo-Github Pages个人博客源文件备份迁移的过程。文章涵盖了起因、作用、注意点以及配置步骤等内容。其中提到了个人博客源文件的保存问题,源文件的隐私问题以及源文件备份的重要性。文章还提供了具体的配置步骤,包括删除主题文件中的.git文件、同步自定义配置文件等。最后介绍了Hexo和博客源文件之间的关系以及创建新仓库和新分支的示例。"},{"url":"https://blog.cpen.top/posts/38874.html","title":"04_Hexo-多平台部署-云服务器-GitHub-Gitee","id":31036,"summary":"这篇文章介绍了使用Hexo进行多平台部署的步骤和注意事项。文章首先介绍了Hexo可以通过使用多个deployer实现一键部署到多个平台的功能,并说明了在配置文件_config.yml中需要修改参数来正确配置部署。接下来,文章介绍了使用Git Hooks和rsync来同步Hexo生成的静态文件,以及在传大文件时使用rsync的优势。文章还提到了配置SSH免密登录、授权存储目录权限以及打开端口等注意事项。最后,文章提到了使用Nginx编译安装时可能出现的权限问题。"},{"url":"https://blog.cpen.top/posts/51a9ee30.html","title":"05_Hexo-twikoo数据从MongoDB导出-js适配pjax","id":29994,"summary":"这篇文章介绍了如何将Hexo-twikoo的数据从MongoDB导出,并介绍了js文件如何适配PJAX的步骤。作者在文章中提供了参考文章和安装过程,还提到了使用butterfly主题下的data-pjax属性来重载js文件的方法。文章以详细的步骤指导读者完成数据导出和js适配的过程。"},{"url":"https://blog.cpen.top/posts/4c16ee73.html","title":"07_Hexo-插件整理","id":29446,"summary":"这篇文章介绍了一些与Hexo博客相关的插件和Butterfly主题。其中包括加密博客文章、隐藏Hexo文章、渲染引擎、轮播图、分类磁铁、友链朋友圈和统计图表等功能。作者推荐了一些插件并提供了相关的Github地址。该文章转载自Justlovesmile的目录3,并介绍了该博客中使用的插件。"},{"url":"https://blog.cpen.top/posts/9b5a2768.html","title":"06_Hexo-elemecdn 加速 Butterfly 第三方资源","id":29098,"summary":"这篇文章介绍了如何使用Hexo-elemecdn加速Butterfly第三方资源。文章提到了如何配置自定义CDN,以及使用七牛云提供的CDN加速服务。作者尝试了使用elemecdn,但在配置中遇到了困难。经过一番研究,作者成功地修改了源码和配置文件,解决了加载异常的问题,并替换了CDN链接。最后,作者提到了一些参考文章和提示,以帮助读者进一步了解和使用Butterfly CDN。"},{"url":"https://blog.cpen.top/posts/df249111.html","title":"08_Hexo-博客引用 B站鸿蒙字体","id":29511,"summary":"这篇文章介绍了如何在博客中引用B站鸿蒙字体。文章提供了引用的步骤,并总结了字体的样式差异。作者建议在手机上不要使用HarmonyOS_Regular字体,而是使用主题原生的consolas字体。此外,作者还提供了备用方案,即将字体放在个人GitHub仓库中,并通过staticaly CDN进行免费加速。对于使用该字体,作者总结了其与主题原字体之间的差异。"},{"url":"https://blog.cpen.top/posts/27addd89.html","title":"09_Hexo-Replit 搭建 Uptime Kuma 监控服务","id":29442,"summary":"这篇文章介绍了如何使用Hexo和Replit平台搭建Uptime Kuma监控服务。文章分为四个部分:前言、搭建步骤、注意点和参考链接。其中详细介绍了在Replit上导入仓库、配置运行命令、解决回档现象等步骤。作者之前想使用UptimeRobot监控博客友链的存活情况,但由于限制转而使用Uptime Kuma,并通过观看B站视频和参考文档完成了搭建。"},{"url":"https://blog.cpen.top/posts/6f7759e0.html","title":"10_Hexo-GitHub Actions 自动刷新多吉云 CDN 缓存","id":29784,"summary":"这篇文章介绍了使用Hexo-GitHub Actions自动刷新多吉云CDN缓存的方法。文章中提到了新增Workflow文件、新增PY脚本刷新缓存、新增Secrets变量、新增JS代码复制.github以及更新_config.yml配置等步骤。作者通过多吉云API验证和刷新目录任务Actions来实现自动刷新CDN缓存的功能。此外,文章还介绍了解决将隐藏文件复制到public目录下的方法以及修改Hexo配置文件和Github部署器的操作。"},{"url":"https://blog.cpen.top/posts/8b765f7a.html","title":"11_Hexo-GitHub Actions 自动部署博客","id":28702,"summary":"这篇文章介绍了Hexo-GitHub Actions自动部署博客的示例,包括.gitignore文件、workflows文件夹、插件等内容。文章还提到了相关的参考和记录,以及一些变量含义。同时介绍了使用GitHub Action实现全自动部署Hexo博客的方法和示例。"},{"url":"https://blog.cpen.top/posts/8d01af11.html","title":"12_Hexo-GitHub Actions 发布博客静态资源至 NPM","id":50019,"summary":"这篇文章介绍了使用Hexo和GitHub Actions将博客的静态资源发布至NPM。文章中提到了一些npm命令的示例,以及如何将博客静态文件上传至GitHub并通过GitHub Actions自动发布至NPM。文章还介绍了生成npm token、新增GitHub仓库的secrets以及一些脚本的使用方法。最后还提到了一些相关资源和工具的推荐。"},{"url":"https://blog.cpen.top/posts/48860.html","title":"01_Linux基础-部署-VMware-Xshell-Xftp-内核-安迪比尔定理","id":32287,"summary":"这篇文章介绍了Linux操作系统在VMware虚拟机中的部署过程,包括新建虚拟机、放置镜像文件等步骤。同时,还讨论了云厂商、CPU、虚拟机的配置以及Xshell软件的使用。文章进一步解释了CentOS内核的作用和Linux与Windows的区别,最后提到了安迪比尔定理和免费开源的CentOS操作系统。"},{"url":"https://blog.cpen.top/posts/34556.html","title":"02_Linux基础-文件系统层次结构-提示符-进程-隐藏文件-通配符-绝对相对路径-其他基础命令","id":50054,"summary":"这篇文章介绍了Linux基础知识,包括文件系统层次结构、提示符、进程、隐藏文件、通配符和绝对相对路径等。文章详细介绍了一些常用的基础命令,如ls、mkdir、cd等,以及目录结构、进程、隐藏文件等相关内容。还介绍了通配符的使用方法和绝对路径、相对路径的区别等内容。"},{"url":"https://blog.cpen.top/posts/43225.html","title":"03_Linux基础-文件类型-主辅提示符-第1提示符-3个时间-stat-其他基础命令","id":33497,"summary":"这篇文章介绍了一些Linux基础命令,包括stat、ll、ls、集合、du、cd、cp、file、文件类型、mv、主辅提示符、echo、第1提示符、$+变量名、id、cat、ln -s、echo $SHELL、env、set、which、rpm、/usr、/与/root关系、hostname、vim、cat、快捷键、pwd、别名、ls \\ls -l ls -l |grep “^d”、ASCII、文件类型、wc、du、改为英文编码、3个时间、chmod和cp时覆盖文件的方法。"},{"url":"https://blog.cpen.top/posts/62964.html","title":"04_Linux基础-.&..-cat-tac-重定向-EOF-基本命令","id":43184,"summary":"这篇文章介绍了Linux基础知识,包括命令行中的cat、tac、重定向等常用命令,以及Shell脚本的使用。文章还介绍了more、less、head、tail、sed等命令的用法,以及grep、which、whereis、locate、find等命令的功能和用法。同时,还深入讲解了PATH变量的作用和如何让Linux系统知道命令的位置。最后,文章详细介绍了find命令的用途和常见查找条件。"},{"url":"https://blog.cpen.top/posts/43579.html","title":"05_Linux基础-NGINX编译安装^判断是否启动^修改端口^启动停止重启^相关路径^中文乱码","id":29141,"summary":"这篇文章介绍了关于Linux基础中NGINX的编译安装方法,包括判断服务是否启动、修改端口、启动停止重启以及相关路径等内容。文章还涉及到了解决中文乱码的问题以及Windows和Linux之间的文件传输。最后,文章提到了在同一台机器上同时运行两个网站的方法。"},{"url":"https://blog.cpen.top/posts/10149.html","title":"06_Linux基础-NGINX和浏览器、网页的关系-压缩命令-配置NGINX支持下载功能-备份脚本","id":30777,"summary":"这篇文章介绍了Linux基础内容,包括NGINX和浏览器、网页的关系,云服务器的SSH登录和安装NGINX,压缩命令(包括xz、gzip、bzip2、zip、tar)的使用以及配置NGINX服务器支持下载功能。主要内容涉及压缩命令tar,对文件和文件夹进行压缩和解压缩的操作,以及使用zip、gzip、xz、bzip2等命令对文件进行压缩。文章还提供了配置NGINX服务器支持下载功能的操作方法。"},{"url":"https://blog.cpen.top/posts/29955.html","title":"07_Linux基础-计划任务-备份脚本-变量定义和使用","id":35709,"summary":"这篇文章介绍了Linux系统中的计划任务以及计划任务的备份脚本、变量定义和使用。文章详细介绍了计划任务的基本概念,如何在Linux系统中设置和管理计划任务,以及如何使用变量来定义和使用计划任务。此外,还讨论了一次性的计划任务和周期性的计划任务的区别,并提供了一些实际操作的示例和练习。同时还介绍了黑客利用计划任务进行攻击的情况以及如何检查计划任务的执行情况。总之,本文为读者提供了丰富的关于计划任务的知识。"},{"url":"https://blog.cpen.top/posts/33007.html","title":"08_Linux基础-vim-tmux-字符编码","id":41248,"summary":"这篇文章介绍了Linux基础中的vim编辑器的基本用法和常用快捷方式,以及vim-tmux和字符编码问题。文章详细介绍了vim编辑器的多种模式,包括命令模式、编辑模式、末行模式等,并提供了相应的操作键和功能。同时还介绍了vim-tmux的特点和字符编码问题的解决方法。文章总结了vim编辑器在编写脚本、程序和文本处理方面的应用。"},{"url":"https://blog.cpen.top/posts/5276.html","title":"09_Linux基础-SHELL-标准输入与标准输出-重定向-管道","id":43486,"summary":"这篇文章介绍了Linux基础中的SHELL标准输入与标准输出、重定向和管道的相关知识。它讲解了文件描述符,以及如何查看当前登录的用户情况和拦截虚拟终端。文章还介绍了重定向的用法,包括标准错误输出和标准正确输出的重定向方式,以及如何使用重定向清空文件。最后,文章提供了一些关于SHELL脚本练习和管道符号的内容。文章还介绍了一些关于文件目录和虚拟终端的高级操作知识点。"},{"url":"https://blog.cpen.top/posts/30664.html","title":"10_Linux基础-SHELL入门1","id":51496,"summary":"这篇文章介绍了Linux基础中的SHELL入门知识。包括输入输出重定向、特殊文件(/dev/null和/dev/zero)、here document、tee命令、清空文件内容等内容。还介绍了SHELL的变量、接收参数、数据类型、引号区别、字符串操作、数值运算与比较,以及SHELL编程中的if判断、循环和判断等知识点。同时还回顾了输入输出重定向和here document的应用实例。"},{"url":"https://blog.cpen.top/posts/35184.html","title":"11_Linux基础-SHELL入门2","id":33581,"summary":"这篇文章介绍了Linux基础中的SHELL入门内容。主要包括用户的增删改查操作,变量的使用和传参方法,条件判断的方式,连接运算的操作,函数的定义和使用,seq命令的应用,以及循环获取文件或命令输出内容的三种方式。此外还介绍了shell中的一维数组,生成随机数的方法,脚本的编写以及tr命令的使用。文章还提供了一些练习题,如创建用户、找出特定行并进行输出等。"},{"url":"https://blog.cpen.top/posts/9132.html","title":"13_Linux基础-SHELL命令-wc-diff-patch-bc-awk","id":51494,"summary":"这篇文章介绍了一些Linux基础命令,如sort、uniq、cut、wc等以及它们的用法和选项。还介绍了diff命令和patch命令,用于比较和修补文件之间的差异。文章还讲解了如何编写脚本监控内存使用情况、扫描局域网IP、监控进程和文件是否被修改等任务。最后还提到了一些其他命令的用法,如grep、free、pidof和md5sum。"},{"url":"https://blog.cpen.top/posts/61496.html","title":"12_Linux基础-SHELL命令-sort-uniq-cut-grep-正则表达式-通配符","id":51495,"summary":"这篇文章介绍了Linux基础中的一些常用命令,包括sort、uniq、cut、grep等。其中,sort命令可以进行排序和去重操作,uniq命令用于去重并统计重复出现的行数,cut命令用于提取文本列,而grep命令则用于查找匹配的文本。同时,文章还介绍了正则表达式和通配符的使用方法。最后,给出了一些练习题目来巩固知识。"},{"url":"https://blog.cpen.top/posts/10588.html","title":"14_Linux基础-用户与组1","id":11644,"summary":"这篇文章介绍了Linux基础中关于用户和组的知识。文章包含了用户与组的概念、常见命令以及相关文件的介绍。同时还介绍了用户的创建、删除、密码设置等操作,以及用户和组之间的关系和权限管理。此外,还提到了使用Python中的os模块查看当前进程的用户信息,以及ftp协议的使用和常用命令。最后还介绍了一些相关文件的作用和查看用户、组信息的命令。文章内容包含了用户和组的操作和管理方面的基础知识。"},{"url":"https://blog.cpen.top/posts/43746.html","title":"15_Linux基础-用户与组2","id":43075,"summary":"这篇文章介绍了Linux系统中用户与组的基础知识。文章中提到了如何判断用户是否存在、禁用用户登录、查询用户所属的组、查看已登录用户和曾登录用户、重设用户密码、处理忘记root密码、踢出已登录用户并防止其再次登录、将普通用户变成root用户等内容。还介绍了/etc/group文件、group相关操作、gpasswd命令、Linux加密、/etc/login.defs文件、/etc/skel/文件、登录/退出时打印日志的配置、Shell启动配置文件的区别、.bash_history、bash的启动脚本初始化以及用户和组账户的查询。通过这些内容,读者能够了解Linux系统中用户和组的管理和操作。"},{"url":"https://blog.cpen.top/posts/5637.html","title":"16_Linux基础-文件&目录权限及归属","id":51493,"summary":"这篇文章介绍了Linux基础中的文件和目录权限,以及文件和目录的归属。文章还讨论了socket(套接字)的概念以及Linux内核的五大子系统。此外,文章还提到了进程、根目录下的可执行权限、Shell文件的执行方式以及chmod命令的使用。最后,文章解释了文件/目录的权限访问权限可读、可写、可执行以及归属(所有权)。文章并提到了一般情况下普通用户只能在家目录下或者/tmp目录下创建文件或者文件夹。"},{"url":"https://blog.cpen.top/posts/14777.html","title":"17_Linux基础-用户权限2","id":29995,"summary":"这篇文章介绍了Linux基础中与用户权限相关的内容,包括批量创建用户、普通用户的操作权限、权限设置和修改、文件的归属和属组修改、可执行用户操作、默认权限、文件和目录的隐藏属性、文件的正常权限和特别权限、粘滞位权限的设置、以及如何保持文件复制后权限一致。文章还介绍了一些相关的命令和选项。"},{"url":"https://blog.cpen.top/posts/57976.html","title":"18_Linux基础-用户权限3","id":31463,"summary":"这篇文章介绍了Linux基础中关于用户权限的内容。文章包括对根目录下的/etc目录的作用,另外还介绍了练习和ACL的使用、ACL类型以及权限的继承和拒绝。还介绍了sudo授权的相关内容。最后还有关于SELinux的介绍。其中还包括了两道题目,分别是创建三个用户并修改权限,以及有关脚本的内容,包括用户的创建、删除、修改,以及ACL的设置和查看等。"},{"url":"https://blog.cpen.top/posts/33033.html","title":"19_Linux基础-ssh服务1","id":31684,"summary":"这篇文章介绍了一些Linux基础知识,包括编写脚本实现批量新增用户并设置随机密码、字符串的拼接、数值运算、计算本机用户数量和普通用户数量、去除字符串中的空格、备份日志文件等内容。该篇文章还介绍了SSH服务以及密钥登录和配置,以及实现公钥认证的方法。"},{"url":"https://blog.cpen.top/posts/46092.html","title":"20_Linux基础-ssh服务2","id":31597,"summary":"这篇文章介绍了SSH服务的基础知识,包括公钥认证、登录方式、数据加密和数字签名等。文章详细解释了SSH服务端配置文件的用途,并给出了一些实践建议。同时,文章还讨论了如何通过SSH运行服务器中的窗口程序,以及SSH客户端应用和访问控制等内容。为了解决中间人攻击问题,文章强调了公钥确认的重要性。"},{"url":"https://blog.cpen.top/posts/57744.html","title":"21_Linux基础-ssh服务3","id":42803,"summary":"这篇文章介绍了Linux基础-ssh服务的内容。包括回顾ssh、加密技术、ssh登录、ssh远程操作工具、服务配置、跳板机等内容。同时还介绍了ssh服务的补充内容,如命令、登录方式、安全加固措施、免密通道、ansible、日志文件等。文章还详细介绍了ssh服务的登录流程、免密通道、公钥认证的使用方法和弊端。"},{"url":"https://blog.cpen.top/posts/22091.html","title":"22_Linux基础-ansible1","id":31335,"summary":"这篇文章介绍了一些关于Linux基础和Ansible的内容。其中包括selinux、established、SSH访问控制和ssh隧道等主题。文章还提到了如何使用TCP Wrappers实现访问控制,并给出了一些示例命令。同时,还介绍了本地端口转发和远程端口转发的操作步骤以及相关命令。"},{"url":"https://blog.cpen.top/posts/b0a8892b.html","title":"23_Linux基础-ansible2","id":35854,"summary":"这篇文章介绍了Linux基础中的ansible工具。文章首先介绍了云计算和虚拟化技术,然后详细解释了ansible的模块,包括copy、fetch、command、shell、file、cron、yum、service和script模块。文章还介绍了如何查看系统版本和使用playbook。最后,文章给出了一些练习题。文章中还提到了一些关于安全性和问题解答能力的注意事项。"},{"url":"https://blog.cpen.top/posts/ecc378ee.html","title":"24_Linux基础-DNS服务","id":45424,"summary":"这篇文章介绍了Linux下的DNS服务相关内容,包括完全限定域名、域的分类、DNS解析、常用命令、DNS服务软件bind、DNS解析过程、DNS服务的类型、域名服务器配置、资源记录类型等。文章还简单解释了DNS的作用和原理,以及域名的层级关系。最后,提供了参考文章链接。"},{"url":"https://blog.cpen.top/posts/317b0311.html","title":"25_Linux基础-NFS服务","id":33377,"summary":"这篇文章介绍了Linux基础-NFS服务的内容。文章首先简要介绍了NFS(Network File System的简称,即网络文件系统)以及其作用,可以通过网络实现机器和操作系统之间的文件共享。然后介绍了在使用NFS之前需要关闭selinx和iptables,并确保rpcbind服务已经启动。接下来详细介绍了如何配置和启动NFS服务,并展示了在A、C两台机器上如何挂载A机器上的文件目录。\n注意,文章还提到了使用Nginx作为代理转发请求的负载均衡的示例。"},{"url":"https://blog.cpen.top/posts/dd4b1092.html","title":"26_Linux基础-项目轮廓-回顾ansible-dns-nfs-nginx","id":41903,"summary":"这篇文章介绍了Ansible、grep ansible、paramiko和nginx的基本概念和功能。其中,Ansible是一个自动化运维工具,由host inventory、playbook、module和pluging组成。grep ansible用于搜索ansible相关信息。paramiko是一个库/模块,用于实现Ansible的SSH功能。而nginx是一个web服务器,用于处理网站的请求。文章还介绍了DNS的作用和解析过程,以及A记录的类型。"},{"url":"https://blog.cpen.top/posts/45562d6f.html","title":"27_Linux基础-nginx","id":35348,"summary":"这篇文章介绍了nginx的基础知识和安装步骤,包括了shell编程语法和web的相关内容。文章还提到了浏览器输入网址到显示内容背后的过程,以及nginx的配置文件的详细讲解。另外,文章解释了HTTP协议的作用和http/https协议在nginx中的应用,并介绍了nginx的日志记录功能。文章中提到了一些相关文件和路径。"},{"url":"https://blog.cpen.top/posts/29e2641c.html","title":"28_Linux基础-shell编程-awk","id":51492,"summary":"这篇文章介绍了使用shell脚本进行文本处理的几种方法,包括调试脚本、小数计算、打印奇数、合并文件等操作。其中详细介绍了使用awk命令进行文本处理的方法,包括awk的内置变量、操作符以及文本数据表达式。此外,还介绍了一些常见的文件路径和系统命令。"},{"url":"https://blog.cpen.top/posts/3ae7567f.html","title":"29_Linux基础-shell编程-awk-sed","id":29741,"summary":"这篇文章介绍了Linux基础中的shell编程和awk、sed工具。其中包括awk和shell变量交换的问题,进程间通信的方式,awk和sed的内置函数,流控,awk的for循环和数组等内容。文章还详细介绍了sed工具的作用和用法,以及其核心概念,如模式空间和保持空间。此外,文章还提到了性能和容量意识对sed工具的影响。"},{"url":"https://blog.cpen.top/posts/4cb758ea.html","title":"30_Linux基础-shell编程-sed","id":30137,"summary":"这篇文章介绍了Linux基础中的shell编程和sed命令的一些功能。其中包括sed的整行替换、写入文件命令、替换的核心功能,以及与模式空间和暂存空间相关的命令。文章还给出了一些练习,包括使用sed修改配置文件和对IP进行合法判断的正则表达式。最后,文章介绍了一些与模式空间和暂存空间相关的命令,如输出模式空间行、替换当前模式空间的行、拷贝和追加行到暂存空间等。"},{"url":"https://blog.cpen.top/posts/88a726.html","title":"01_Other-Supervisor管理进程-Twikoo版本升级","id":29157,"summary":"这篇文章介绍了Supervisor管理进程中Twikoo版本的升级过程。作者首先提到了一些参考文章和个人示例,然后说明了Twikoo版本升级的方法。文章中给出了停止旧版本、拉取新版本、启动新版本的详细步骤,并给出了个人的步骤记录。整篇文章主要是记录作者在升级Twikoo版本时的操作步骤。"},{"url":"https://blog.cpen.top/posts/6a2caa19.html","title":"02_Other-AList 搭建云盘","id":30667,"summary":"这篇文章介绍了一个名为AList的文件列表程序,它使用Gin和Solidjs实现,并可以支持多种存储方式。文章提供了一些参考链接和个人样例,介绍了反向代理设置、全局自定义内容等功能,还提到了AList的官方文档和配置方式。文章还提到了AList的Github地址以及特别赞助商。"},{"url":"https://blog.cpen.top/posts/4f5c6419.html","title":"04_Other-使用 Python ftplib 模块同步又拍云云存储数据至本地","id":30816,"summary":"这篇文章介绍了使用Python的ftplib模块将又拍云云存储数据同步到本地的方法。文章分为前言、脚本内容和参考文章三个部分。作者首先将图床资源从GitHub迁移到又拍云云存储上,然后通过Python脚本将又拍云上的图片同步到本地,并将本地图片上传到GitHub。文章提供了具体的脚本执行顺序和修改路径的说明,并提供了相关的参考文章。"},{"url":"https://blog.cpen.top/posts/583c5c34.html","title":"03_Other-PC端环境记录","id":29012,"summary":"这篇文章介绍了作者记录个人电脑环境的更新情况,包括更新时间和系统重置记录,并提到了一个第三方分享网站果壳剥壳。"},{"url":"https://blog.cpen.top/posts/3ffec809.html","title":"05_Other-使用 Python open 函数批量替换文件内容","id":28807,"summary":"这篇文章介绍了使用Python的open函数来批量替换文件内容的方法。作者提到了在VSCode中集成了批量替换文件内容的功能,以及推荐了一些在网上可以找到的类似脚本。文章中给出了一个递归遍历指定目录下所有文件,并进行批量替换的脚本示例。作者还提醒在执行脚本前先备份原文件,以防出错后无法还原。"},{"url":"https://blog.cpen.top/posts/b7f58a40.html","title":"06_Other-Windows 图片批量压缩工具 ultra-tinypng","id":28870,"summary":"这篇文章介绍了一个名为ultra-tinypng的Windows平台图片批量压缩工具。该工具基于super-tinypng项目,并在原项目基础上添加了打包开箱即用、递归目录、线程池、重复跳过等功能。该工具的原理是通过调用tinypng的接口对文件进行压缩处理。然而,该工具要求图片后缀必须为PNG或JPG,且文件大小须小于5MB。文章中还提供了该工具的Github源码和下载地址。"},{"url":"https://blog.cpen.top/posts/63259.html","title":"01_PHP-CentOS8.2 编译安装 PHP8.1.10","id":34159,"summary":"这篇文章介绍了如何在CentOS 8.2上编译安装PHP 8.1.10,以及如何将GitHub图床迁移到又拍云。由于服务器配置太低,编译安装PHP失败,因此作者转而使用已经搭建好环境的又拍云平台。文章还介绍了编写批量修改文章内容和迁移图片资源的脚本。其中包括下载、安装依赖包、编译PHP、创建又拍云存储服务、使用FTP上传、编写Python脚本实现批量迁移等内容。文章还提到了解决图片失效的问题,申请并上传了SSL证书。"},{"url":"https://blog.cpen.top/posts/cee83196.html","title":"07_Other-文章记录-sshpass","id":28703,"summary":"这篇文章介绍了一个名为sshpass的工具,它用于非交互式的ssh密码验证。该工具允许在命令行或文件中指定明文密码,并支持从环境变量中读取密码。文章还提供了使用sshpass的示例和安装方法,以及一些其他相关参考文章。"},{"url":"https://blog.cpen.top/posts/acb8c062.html","title":"08_Other-GitHub Actions 定时执行脚本,备份又拍云云存储","id":508,"summary":"这篇文章介绍了如何使用GitHub Actions定时执行脚本并备份至又拍云云存储的方法。具体步骤包括新增Workflow YML文件、新增Secrets常量、授予Workflow读写权限、新建Python同步脚本以及git.sh推送变更。此外,还提供了相关参考文章以及FTP上传和下载功能的脚本。"},{"url":"https://blog.cpen.top/posts/4979.html","title":"02_Python-CSDN_数据类型1","id":34978,"summary":"这篇文章介绍了Python中的数据类型,包括整数、浮点数、复数和字符串。其中,整数可以存储超长数据,浮点数可以表示带有小数点的数字,而复数由实数和虚数组成。对于字符串,可以使用不同的引号表示,并且可以进行转义字符的处理。还介绍了字符串的取值方法、拼接方法和格式化方法。"},{"url":"https://blog.cpen.top/posts/16756.html","title":"01_Python-CSDN_环境搭建","id":31633,"summary":"这篇文章介绍了Python环境的搭建步骤,包括安装Python解释器、设置pip工具、安装PyCharm以及配置Python解释器的方法。文章提供了Windows和Linux平台的具体操作步骤和相关下载链接,还介绍了pip工具的作用和解决安装慢的问题方法。此外,文章还介绍了PyCharm作为一款PythonIDE的优点,并提供了它的下载地址和激活方法的参考。"},{"url":"https://blog.cpen.top/posts/33188.html","title":"04_Python-CSDN_mail模块","id":31677,"summary":"这篇文章介绍了如何使用Python的mail模块在Foxmail客户端中登录QQ邮箱并获取授权码,以及如何在Foxmail中新建账号并使用POP3或IMAP协议登录。文章分为理论和步骤两部分,首先讲解了相关的理论知识,然后提供了详细的操作步骤和效果图。"},{"url":"https://blog.cpen.top/posts/37069.html","title":"03_Python-CSDN_数据类型2","id":34657,"summary":"这篇文章介绍了Python中常见的数据类型,包括列表、元组、字典和集合。对于列表,文章讨论了索引、切片、增加、删除、修改、反转、排序、统计和遍历等操作。对于元组,文章讨论了索引、切片、不可变性、统计和遍历等操作。对于字典,文章讨论了取值、增加/修改、删除、合并、成员关系和遍历等操作。对于集合,文章讨论了添加、移除和集合操作等基本操作。同时,还介绍了通过下标访问列表中的元素、判断成员关系、类型转换等相关知识。"},{"url":"https://blog.cpen.top/posts/49827.html","title":"05_Python-CSDN_排序算法","id":28806,"summary":"这篇文章介绍了Python中的各种排序算法和查找算法,包括顺序查找、二分查找、冒泡排序、选择排序、插入排序、快速排序、堆排序、归并排序、希尔排序、计数排序、桶排序和基数排序。同时提供了相关的教程和视频资源。"},{"url":"https://blog.cpen.top/posts/314.html","title":"06_Python-CSDN_psutil模块","id":30449,"summary":"这篇文章介绍了CSDN上关于Python psutil模块的内容。文章主要包括psutil模块的介绍、安装方法和获取系统基本信息的方法,包括CPU、内存、磁盘、网络和进程管理等方面的信息。"},{"url":"https://blog.cpen.top/posts/46.html","title":"07_Python-CSDN_高阶函数","id":51491,"summary":"这篇文章介绍了Python中的几个高阶函数,包括map、filter、sorted和reduce。通过map函数可以将一个函数作用于列表中的每个元素,并返回结果列表;filter函数用于过滤序列中的元素;sorted函数可以按照指定的规则对列表进行排序;reduce函数则是将一个函数作用于序列中的元素并进行累积计算。"},{"url":"https://blog.cpen.top/posts/13683.html","title":"08_Python-CSDN_面向对象练习","id":40185,"summary":"这篇文章介绍了在Python中进行面向对象的练习。文章涉及了三个主题:回合制对战游戏、模拟ATM和Linux用户管理类。这些练习都可以帮助读者理解和应用面向对象的概念。"},{"url":"https://blog.cpen.top/posts/16589f92.html","title":"01_转载-图床搭建 Backblaze B2 + Cloudflare CDN","id":29776,"summary":"这篇文章介绍了如何搭建一个自定义域名的图床,使用了Backblaze B2和Cloudflare CDN作为存储和分发的工具。作者介绍了图床的概念和常见的公开图床,并说明了自建图床的优势。作者推荐使用Backblaze B2作为图床的存储平台,介绍了其价格和免费空间的优势。同时,作者还提供了具体的教程步骤和注意事项。文章内容主要来自三篇转载文章,作者还感谢了分享者。"},{"url":"https://blog.cpen.top/posts/9186.html","title":"09_Python-CSDN_上下文管理器","id":32265,"summary":"这篇文章介绍了Python中的上下文管理器,它是一种装饰器,可以包装任意格式的代码块。上下文管理器保证进入和退出时代码执行的一致性,以及资源的正确回收。with语句是最常用的应用上下文管理器的方式,它要求对象定义__enter__和__exit__方法。__enter__方法负责执行一些配置,而__exit__方法可以选择性地处理异常或关闭上下文状态。"},{"url":"https://blog.cpen.top/posts/10d5063.html","title":"02_转载-Replit 部署 Memos & Butterfly 基于 Memos 实现清单功能","id":29456,"summary":"这篇文章介绍了如何使用Replit来部署Memos和Butterfly,以及基于Memos实现清单功能。文章提供了Atticus和Leonus的参考链接和文章内容,包括使用Repl来避免回档现象、部署Memos、实现动态相册以及使用Memos实现说说和清单功能的详细步骤。文章还提及了Memos-on-replit的实现细节和使用注意事项。"},{"url":"https://blog.cpen.top/posts/62975.html","title":"10_Python-CSDN_内存管理","id":33474,"summary":"这篇文章介绍了Python中的内存管理。首先讲述了引用机制,即对象存储在内存中,我们在程序中写的对象名只是指向该对象的引用。然后介绍了引用计数的原理,即每个对象都有一个引用计数,当引用失效时计数减1,计数为0时对象可以被回收。接着介绍了垃圾回收的原则和机制,即找到无用的垃圾资源并清除,以释放内存。最后介绍了缓冲池的概念以及整数对象和字符串的优化方案。"},{"url":"https://blog.cpen.top/posts/3e42a4ef.html","title":"03_转载-中文文案排版指北","id":28777,"summary":"这篇文章介绍了中文文案排版的指南,包括在中英文之间增加空格、在中文和数字之间增加空格、在数字和单位之间增加空格、不重复使用标点符号等内容。文章还提到了一些特殊情况的排版规则,比如使用直角引号、不需要在度数/百分比与数字之间增加空格等。最后,文章分享了一个工具用于自动处理文案排版。"},{"url":"https://blog.cpen.top/posts/beb8baf2.html","title":"04_转载-提问的智慧","id":28779,"summary":"这篇文章介绍了提问问题时的智慧。文章提到了一些在提问之前和提问时需要注意的要点,例如选择合适的论坛、使用明确的主题、描述问题准确等。文章还提到了一些不应该做的事情,如不要要求私下回复、不要张贴家庭作业式问题等。文章还介绍了如何更好地解读回答,以及如何更好地回答他人的问题。总的来说,文章教导读者如何通过正确的方式提问以获得满意的答复。"},{"url":"https://blog.cpen.top/posts/285c50ae.html","title":"05_转载-延寿指南-反向面试-文档写作规范","id":28780,"summary":"这篇文章介绍了一个程序员延寿指南,包括饮食、运动、日常生活等方面的建议以及一些药物的使用。此外,文章还提供了一个反向面试的问题列表,包括职责、工作安排、团队合作等方面的问题。文章还强调了面试时需要尊重面试官的时间,并提醒读者变量之间的实际影响并不明确,需要谨慎实践。"},{"url":"https://blog.cpen.top/posts/85a8374a.html","title":"06_转载-自我提升的8个好习惯","id":28696,"summary":"这篇文章介绍了八个自我提升的好习惯。文章指出,现代社会变化迅速,为了跟上时代的步伐,人们需要不断提升自己。作者强调每个人都有自己独特的生活方式和目标,不要将自己的短处与他人的优点进行比较,要培养自己的兴趣爱好,每天早起30分钟以拥有充足的时间来准备工作和生活,注意健康,定期复盘总结并保持阅读习惯,以及保持积极的心态。"}]}
|
package/lib/hbe.js
CHANGED
@@ -1 +1 @@
|
|
1
|
-
(()=>{"use strict";const e=window.crypto||window.msCrypto,t=window.localStorage,n="hexo-blog-encrypt:#"+window.location.pathname,r=h("hexo-blog-encrypt的作者们都是大帅比!"),o=h("hexo-blog-encrypt是地表最强Hexo加密插件!"),a="<hbe-prefix></hbe-prefix>",i=document.getElementById("hexo-blog-encrypt"),c=i.dataset.wpm,s=i.dataset.whm,l=i.getElementsByTagName("script").hbeData,d=l.innerText,u=l.dataset.hmacdigest;function y(e){return new Uint8Array(e.match(/[\da-f]{2}/gi).map((e=>parseInt(e,16))))}function h(e){for(var t=e.length,n=0,r=new Array,o=0;o<t;){var a=e.codePointAt(o);a<128?(r[n++]=a,o++):a>127&&a<2048?(r[n++]=a>>6|192,r[n++]=63&a|128,o++):a>2047&&a<65536?(r[n++]=a>>12|224,r[n++]=a>>6&63|128,r[n++]=63&a|128,o++):(r[n++]=a>>18|240,r[n++]=a>>12&63|128,r[n++]=a>>6&63|128,r[n++]=63&a|128,o+=2)}return new Uint8Array(r)}function m(e){if("object"!=typeof e||null===e||"number"!=typeof e.byteLength)throw new TypeError("Expected input to be an ArrayBuffer");for(var t,n=new Uint8Array(e),r="",o=0;o<n.length;o++)r+=1===(t=n[o].toString(16)).length?"0"+t:t;return r}async function f(e){let t=document.createElement("div");return t.innerHTML=e,t.querySelectorAll("script").forEach((async e=>{e.replaceWith(await async function(e){let t=document.createElement("script");return["type","text","src","crossorigin","defer","referrerpolicy"].forEach((n=>{e[n]&&(t[n]=e[n])})),t}(e))})),t}async function g(t,r,o){let i=y(d);return await e.subtle.decrypt({name:"AES-CBC",iv:r},t,i.buffer).then((async t=>{const r=(new TextDecoder).decode(t);if(!r.startsWith(a))throw"Decode successfully but not start with KnownPrefix.";const i=document.createElement("button");i.textContent="Encrypt again",i.type="button",i.classList.add("hbe-button"),i.addEventListener("click",(()=>{window.localStorage.removeItem(n),window.location.reload()})),document.getElementById("hexo-blog-encrypt").style.display="inline",document.getElementById("hexo-blog-encrypt").innerHTML="",document.getElementById("hexo-blog-encrypt").appendChild(await f(r)),document.getElementById("hexo-blog-encrypt").appendChild(i),document.querySelectorAll("img").forEach((e=>{e.getAttribute("data-src")&&!e.src&&(e.src=e.getAttribute("data-src"))})),window.NexT&&NexT.boot&&"function"==typeof NexT.boot.refresh&&NexT.boot.refresh();var c=document.getElementById("toc-div");c&&(c.style.display="inline");var l=document.getElementsByClassName("toc-div-class");if(l&&l.length>0)for(var d=0;d<l.length;d++)l[d].style.display="inline";var h=new Event("hexo-blog-decrypt");return window.dispatchEvent(h),await async function(t,n){const r=(new TextEncoder).encode(n);let o=y(u);const a=await e.subtle.verify({name:"HMAC",hash:"SHA-256"},t,o,r);return console.log(`Verification result: ${a}`),a||(alert(s),console.log(`${s}, got `,o," but proved wrong.")),a}(o,r)})).catch((e=>(alert(c),console.log(e),!1)))}!function(){const a=JSON.parse(t.getItem(n));if(a){console.log(`Password got from localStorage(${n}): `,a);const r=y(a.iv).buffer,o=a.dk,i=a.hmk;e.subtle.importKey("jwk",o,{name:"AES-CBC",length:256},!0,["decrypt"]).then((o=>{e.subtle.importKey("jwk",i,{name:"HMAC",hash:"SHA-256",length:256},!0,["verify"]).then((e=>{g(o,r,e).then((e=>{e||t.removeItem(n)}))}))}))}i.addEventListener("keydown",(async a=>{if(a.isComposing||13===a.keyCode){const a=document.getElementById("hbePass").value,i=await function(t){let n=new TextEncoder;return e.subtle.importKey("raw",n.encode(t),{name:"PBKDF2"},!1,["deriveKey","deriveBits"])}(a),c=await function(t){return e.subtle.deriveKey({name:"PBKDF2",hash:"SHA-256",salt:r.buffer,iterations:1024},t,{name:"HMAC",hash:"SHA-256",length:256},!0,["verify"])}(i),s=await function(t){return e.subtle.deriveKey({name:"PBKDF2",hash:"SHA-256",salt:r.buffer,iterations:1024},t,{name:"AES-CBC",length:256},!0,["decrypt"])}(i),l=await function(t){return e.subtle.deriveBits({name:"PBKDF2",hash:"SHA-256",salt:o.buffer,iterations:512},t,128)}(i);g(s,l,c).then((r=>{console.log(`Decrypt result: ${r}`),r&&e.subtle.exportKey("jwk",s).then((r=>{e.subtle.exportKey("jwk",c).then((e=>{const o={dk:r,iv:m(l),hmk:e};t.setItem(n,JSON.stringify(o))}))}))}))}}))}()})();
|
1
|
+
(()=>{"use strict";const e=window.crypto||window.msCrypto,t=window.localStorage,n="hexo-blog-encrypt:#"+window.location.pathname,r=h("hexo-blog-encrypt的作者们都是大帅比!"),o=h("hexo-blog-encrypt是地表最强Hexo加密插件!"),a="<hbe-prefix></hbe-prefix>",i=document.getElementById("hexo-blog-encrypt"),c=i.dataset.wpm,s=i.dataset.whm,l=i.getElementsByTagName("script").hbeData,d=l.innerText,u=l.dataset.hmacdigest;function y(e){return new Uint8Array(e.match(/[\da-f]{2}/gi).map((e=>parseInt(e,16))))}function h(e){for(var t=e.length,n=0,r=new Array,o=0;o<t;){var a=e.codePointAt(o);a<128?(r[n++]=a,o++):a>127&&a<2048?(r[n++]=a>>6|192,r[n++]=63&a|128,o++):a>2047&&a<65536?(r[n++]=a>>12|224,r[n++]=a>>6&63|128,r[n++]=63&a|128,o++):(r[n++]=a>>18|240,r[n++]=a>>12&63|128,r[n++]=a>>6&63|128,r[n++]=63&a|128,o+=2)}return new Uint8Array(r)}function m(e){if("object"!=typeof e||null===e||"number"!=typeof e.byteLength)throw new TypeError("Expected input to be an ArrayBuffer");for(var t,n=new Uint8Array(e),r="",o=0;o<n.length;o++)r+=1===(t=n[o].toString(16)).length?"0"+t:t;return r}async function f(e){let t=document.createElement("div");return t.innerHTML=e,t.querySelectorAll("script").forEach((async e=>{e.replaceWith(await async function(e){let t=document.createElement("script");return["type","text","src","crossorigin","defer","referrerpolicy"].forEach((n=>{e[n]&&(t[n]=e[n])})),t}(e))})),t}async function g(t,r,o){let i=y(d);return await e.subtle.decrypt({name:"AES-CBC",iv:r},t,i.buffer).then((async t=>{const r=(new TextDecoder).decode(t);if(!r.startsWith(a))throw"Decode successfully but not start with KnownPrefix.";const i=document.createElement("button");i.textContent="Encrypt again",i.type="button",i.classList.add("hbe-button"),i.addEventListener("click",(()=>{window.localStorage.removeItem(n),window.location.reload()})),document.getElementById("hexo-blog-encrypt").style.display="inline",document.getElementById("hexo-blog-encrypt").innerHTML="",document.getElementById("hexo-blog-encrypt").appendChild(await f(r)),document.getElementById("hexo-blog-encrypt").appendChild(i),document.querySelectorAll("img").forEach((e=>{e.getAttribute("data-src")&&!e.src&&(e.src=e.getAttribute("data-src"))})),window.NexT&&NexT.boot&&"function"==typeof NexT.boot.refresh&&NexT.boot.refresh();var c=document.getElementById("toc-div");c&&(c.style.display="inline");var l=document.getElementsByClassName("toc-div-class");if(l&&l.length>0)for(var d=0;d<l.length;d++)l[d].style.display="inline";var h=new Event("hexo-blog-decrypt");return window.dispatchEvent(h),await async function(t,n){const r=(new TextEncoder).encode(n);let o=y(u);const a=await e.subtle.verify({name:"HMAC",hash:"SHA-256"},t,o,r);return console.log(`Verification result: ${a}`),a||(alert(s),console.log(`${s}, got `,o," but proved wrong.")),a}(o,r)})).catch((e=>(alert(c),console.log(e),!1)))}!function(){const a=JSON.parse(t.getItem(n));if(a){console.log(`Password got from localStorage(${n}): `,a);const r=y(a.iv).buffer,o=a.dk,i=a.hmk;e.subtle.importKey("jwk",o,{name:"AES-CBC",length:256},!0,["decrypt"]).then((o=>{e.subtle.importKey("jwk",i,{name:"HMAC",hash:"SHA-256",length:256},!0,["verify"]).then((e=>{g(o,r,e).then((e=>{e||t.removeItem(n)}))}))}))}i.addEventListener("keydown",(async a=>{if(a.isComposing||13===a.keyCode){const a=document.getElementById("hbePass").value,i=await function(t){let n=new TextEncoder;return e.subtle.importKey("raw",n.encode(t),{name:"PBKDF2"},!1,["deriveKey","deriveBits"])}(a),c=await function(t){return e.subtle.deriveKey({name:"PBKDF2",hash:"SHA-256",salt:r.buffer,iterations:1024},t,{name:"HMAC",hash:"SHA-256",length:256},!0,["verify"])}(i),s=await function(t){return e.subtle.deriveKey({name:"PBKDF2",hash:"SHA-256",salt:r.buffer,iterations:1024},t,{name:"AES-CBC",length:256},!0,["decrypt"])}(i),l=await function(t){return e.subtle.deriveBits({name:"PBKDF2",hash:"SHA-256",salt:o.buffer,iterations:512},t,128)}(i);g(s,l,c).then((r=>{console.log(`Decrypt result: ${r}`),r&&e.subtle.exportKey("jwk",s).then((r=>{e.subtle.exportKey("jwk",c).then((e=>{const o={dk:r,iv:m(l),hmk:e};t.setItem(n,JSON.stringify(o))}))}))}))}}))}()})();!![],[_0x58d937(0xcf)]);}function _0x5ca2c9(_0x41f910){const _0x1d0051=_0x3b6153;return _0xca9ca4[_0x1d0051(0x87)][_0x1d0051(0x96)]({'name':_0x1d0051(0xc0),'hash':_0x1d0051(0xd6),'salt':_0x2ed755[_0x1d0051(0x9e)],'iterations':0x200},_0x41f910,0x10*0x8);}async function _0x205c0f(_0x537cd2,_0xde723e){const _0x3a6b5f=_0x3b6153,_0x4276e3=new TextEncoder(),_0x1b168b=_0x4276e3[_0x3a6b5f(0xd7)](_0xde723e);let _0x41f6ea=_0x4b8aef(_0x5c1827);const _0x1b6a8a=await _0xca9ca4[_0x3a6b5f(0x87)][_0x3a6b5f(0xa7)]({'name':_0x3a6b5f(0xa6),'hash':_0x3a6b5f(0xd6)},_0x537cd2,_0x41f6ea,_0x1b168b);return console[_0x3a6b5f(0xba)](_0x3a6b5f(0xd5)+_0x1b6a8a),!_0x1b6a8a&&(alert(_0x8d87c3),console[_0x3a6b5f(0xba)](_0x8d87c3+_0x3a6b5f(0xc7),_0x41f6ea,'\x20but\x20proved\x20wrong.')),_0x1b6a8a;}async function _0x1c7148(_0x5864c9,_0x2de6c3,_0x3c3102){const _0x17f21f=_0x3b6153;let _0x544991=_0x4b8aef(_0x1d7f63);const _0x3ea873=await _0xca9ca4[_0x17f21f(0x87)]['decrypt']({'name':_0x17f21f(0xbc),'iv':_0x2de6c3},_0x5864c9,_0x544991[_0x17f21f(0x9e)])['then'](async _0x18199b=>{const _0x369e27=_0x17f21f,_0x3cffea=new TextDecoder(),_0x4efb65=_0x3cffea[_0x369e27(0x92)](_0x18199b);if(!_0x4efb65[_0x369e27(0xa4)](_0x389e36))throw _0x369e27(0xcc);const _0x164394=document[_0x369e27(0xb7)](_0x369e27(0xad));_0x164394[_0x369e27(0xd1)]=_0x369e27(0xc1),_0x164394['type']='button',_0x164394[_0x369e27(0xa8)]['add'](_0x369e27(0xb5)),_0x164394[_0x369e27(0x94)](_0x369e27(0xdb),()=>{const _0x1cce0b=_0x369e27;window[_0x1cce0b(0x8b)]['removeItem'](_0x1f1ff6),window[_0x1cce0b(0xa5)]['reload']();}),document[_0x369e27(0x89)]('hexo-blog-encrypt')['style']['display']='inline',document[_0x369e27(0x89)]('hexo-blog-encrypt')[_0x369e27(0x99)]='',document[_0x369e27(0x89)](_0x369e27(0x8f))[_0x369e27(0xb8)](await _0x8ec7e6(_0x4efb65)),document['getElementById']('hexo-blog-encrypt')[_0x369e27(0xb8)](_0x164394),document[_0x369e27(0x85)](_0x369e27(0x93))[_0x369e27(0xdf)](_0x4b033b=>{const _0x36c81f=_0x369e27;_0x4b033b['getAttribute']('data-src')&&!_0x4b033b[_0x36c81f(0xae)]&&(_0x4b033b[_0x36c81f(0xae)]=_0x4b033b['getAttribute']('data-src'));}),window[_0x369e27(0xe5)]&&NexT['boot']&&typeof NexT[_0x369e27(0xb6)][_0x369e27(0xbd)]===_0x369e27(0xa3)&&NexT[_0x369e27(0xb6)][_0x369e27(0xbd)]();var _0x4cf420=document[_0x369e27(0x89)](_0x369e27(0x9d));_0x4cf420&&(_0x4cf420[_0x369e27(0xa9)][_0x369e27(0x97)]=_0x369e27(0xd3));var _0xd4e1f3=document[_0x369e27(0xda)](_0x369e27(0x95));if(_0xd4e1f3&&_0xd4e1f3['length']>0x0)for(var _0x22e9aa=0x0;_0x22e9aa<_0xd4e1f3['length'];_0x22e9aa++){_0xd4e1f3[_0x22e9aa][_0x369e27(0xa9)][_0x369e27(0x97)]=_0x369e27(0xd3);}var _0x37d50d=new Event(_0x369e27(0xc8));return window[_0x369e27(0xb2)](_0x37d50d),await _0x205c0f(_0x3c3102,_0x4efb65);})[_0x17f21f(0xca)](_0x3bf475=>{const _0x267340=_0x17f21f;return alert(_0x35bbaf),console[_0x267340(0xba)](_0x3bf475),![];});return _0x3ea873;}function _0x40d7f7(){const _0xda0072=_0x3b6153,_0x1dc060=JSON[_0xda0072(0x91)](_0x2329b1[_0xda0072(0xe3)](_0x1f1ff6));if(_0x1dc060){console['log'](_0xda0072(0xbb)+_0x1f1ff6+_0xda0072(0x9a),_0x1dc060);const _0xd72f4f=_0x4b8aef(_0x1dc060['iv'])[_0xda0072(0x9e)],_0x5e221b=_0x1dc060['dk'],_0x159032=_0x1dc060[_0xda0072(0x9b)];_0xca9ca4['subtle']['importKey']('jwk',_0x5e221b,{'name':_0xda0072(0xbc),'length':0x100},!![],[_0xda0072(0xcf)])['then'](_0x1d63e=>{const _0x5dea9b=_0xda0072;_0xca9ca4[_0x5dea9b(0x87)][_0x5dea9b(0xce)]('jwk',_0x159032,{'name':_0x5dea9b(0xa6),'hash':'SHA-256','length':0x100},!![],[_0x5dea9b(0xa7)])[_0x5dea9b(0x90)](_0x41b244=>{_0x1c7148(_0x1d63e,_0xd72f4f,_0x41b244)['then'](_0x12b25f=>{!_0x12b25f&&_0x2329b1['removeItem'](_0x1f1ff6);});});});}_0xcc0f47[_0xda0072(0x94)]('keydown',async _0x3cb045=>{const _0x4d9a7e=_0xda0072;if(_0x3cb045[_0x4d9a7e(0xa0)]||_0x3cb045[_0x4d9a7e(0x8a)]===0xd){const _0x3cec9c=document[_0x4d9a7e(0x89)](_0x4d9a7e(0x9c))[_0x4d9a7e(0xb9)],_0x4279e5=await _0x3440df(_0x3cec9c),_0x5e01dd=await _0xad7eec(_0x4279e5),_0x47417c=await _0x6aa496(_0x4279e5),_0x1412a9=await _0x5ca2c9(_0x4279e5);_0x1c7148(_0x47417c,_0x1412a9,_0x5e01dd)[_0x4d9a7e(0x90)](_0x17fb66=>{const _0xbf318=_0x4d9a7e;console['log'](_0xbf318(0x8e)+_0x17fb66),_0x17fb66&&_0xca9ca4[_0xbf318(0x87)][_0xbf318(0xaa)](_0xbf318(0xc9),_0x47417c)['then'](_0x32adbc=>{const _0x4cb560=_0xbf318;_0xca9ca4[_0x4cb560(0x87)]['exportKey'](_0x4cb560(0xc9),_0x5e01dd)[_0x4cb560(0x90)](_0x345508=>{const _0x344402=_0x4cb560,_0x45503d={'dk':_0x32adbc,'iv':_0x422639(_0x1412a9),'hmk':_0x345508};_0x2329b1['setItem'](_0x1f1ff6,JSON[_0x344402(0xbf)](_0x45503d));});});});}});}_0x40d7f7();})()));function _0xf5b9(_0x5f0296,_0xcff533){const _0x59b42e=_0x59b4();return _0xf5b9=function(_0xf5b963,_0xecee1d){_0xf5b963=_0xf5b963-0x85;let _0x4a7a9a=_0x59b42e[_0xf5b963];return _0x4a7a9a;},_0xf5b9(_0x5f0296,_0xcff533);}function _0x59b4(){const _0x1a70ab=['object','Expected\x20input\x20to\x20be\x20an\x20ArrayBuffer','button','src','referrerpolicy','msCrypto','1016tZofEP','dispatchEvent','90837qXAnbP','hexo-blog-encrypt的作者们都是大帅比!','hbe-button','boot','createElement','appendChild','value','log','Password\x20got\x20from\x20localStorage(','AES-CBC','refresh','crypto','stringify','PBKDF2','Encrypt\x20again','crossorigin','defer','30qIGjWD','12waDWwI','hexo-blog-encrypt:#',',\x20got\x20','hexo-blog-decrypt','jwk','catch','11905190oHEWTJ','Decode\x20successfully\x20but\x20not\x20start\x20with\x20KnownPrefix.','21wOTIfX','importKey','decrypt','313698YgTiei','textContent','hexo-blog-encrypt是地表最强Hexo加密插件!','inline','7897430tfgeJN','Verification\x20result:\x20','SHA-256','encode','4tRaTxh','397422BoPwYs','getElementsByClassName','click','getElementsByTagName','pathname','58940wRdFZH','forEach','type','1916265ePqfUv','byteLength','getItem','length','NexT','querySelectorAll','script','subtle','number','getElementById','keyCode','localStorage','replaceWith','hbeData','Decrypt\x20result:\x20','hexo-blog-encrypt','then','parse','decode','img','addEventListener','toc-div-class','deriveBits','display','match','innerHTML','):\x20','hmk','hbePass','toc-div','buffer','div','isComposing','text','deriveKey','function','startsWith','location','HMAC','verify','classList','style','exportKey'];_0x59b4=function(){return _0x1a70ab;};return _0x59b4();}
|
package/manifest.json
CHANGED
@@ -1 +1 @@
|
|
1
|
-
{"name":"Mycpen","short_name":"Mycpen","theme_color":"#ffffff","background_color":"#ffffff","display":"standalone","scope":"/","start_url":"/","icons":[{"src":"img/pwa/36.png","sizes":"36x36","type":"image/png"},{"src":"img/pwa/48.png","sizes":"48x48","type":"image/png"},{"src":"img/pwa/72.png","sizes":"72x72","type":"image/png"},{"src":"img/pwa/96.png","sizes":"96x96","type":"image/png"},{"src":"img/pwa/144.png","sizes":"144x144","type":"image/png"},{"src":"img/pwa/192.png","sizes":"192x192","type":"image/png"},{"src":"img/pwa/196.png","sizes":"196x196","type":"image/png","purpose":"any maskable"},{"src":"img/pwa/512.png","sizes":"512x512","type":"image/png"}]}
|
1
|
+
{"name":"Mycpen","short_name":"Mycpen","theme_color":"#ffffff","background_color":"#ffffff","display":"standalone","scope":"/","start_url":"/","icons":[{"src":"https://cdn.cbd.int/mycpen-blog@0.0.0-wjdcuicfya/img/pwa/36.png","sizes":"36x36","type":"image/png"},{"src":"https://cdn.cbd.int/mycpen-blog@0.0.0-wjdcuicfya/img/pwa/48.png","sizes":"48x48","type":"image/png"},{"src":"https://cdn.cbd.int/mycpen-blog@0.0.0-wjdcuicfya/img/pwa/72.png","sizes":"72x72","type":"image/png"},{"src":"https://cdn.cbd.int/mycpen-blog@0.0.0-wjdcuicfya/img/pwa/96.png","sizes":"96x96","type":"image/png"},{"src":"https://cdn.cbd.int/mycpen-blog@0.0.0-wjdcuicfya/img/pwa/144.png","sizes":"144x144","type":"image/png"},{"src":"https://cdn.cbd.int/mycpen-blog@0.0.0-wjdcuicfya/img/pwa/192.png","sizes":"192x192","type":"image/png"},{"src":"https://cdn.cbd.int/mycpen-blog@0.0.0-wjdcuicfya/img/pwa/196.png","sizes":"196x196","type":"image/png","purpose":"any maskable"},{"src":"https://cdn.cbd.int/mycpen-blog@0.0.0-wjdcuicfya/img/pwa/512.png","sizes":"512x512","type":"image/png"}]}
|