首页
留言
导航
统计
Search
1
追番推荐!免费看动漫的网站 - 支持在线观看和磁力下载
3,139 阅读
2
推荐31个docker应用,每一个都很实用
1,501 阅读
3
PVE自动启动 虚拟机 | 容器 顺序设置及参数说明
1,050 阅读
4
一条命令,永久激活!Office 2024!
679 阅读
5
优选 Cloudflare 官方 / 中转 IP
538 阅读
默认分类
服务器
宝塔
VPS
Docker
OpenWRT
Nginx
群晖
前端编程
Vue
React
Angular
NodeJS
uni-app
后端编程
Java
Python
SpringBoot
SpringCloud
流程引擎
检索引擎
Linux
CentOS
Ubuntu
Debian
数据库
Redis
MySQL
Oracle
虚拟机
VMware
VirtualBox
PVE
Hyper-V
计算机
网络技术
网站源码
主题模板
登录
Search
标签搜索
Java
小程序
Redis
SpringBoot
docker
Typecho
Cloudflare
uni-app
docker部署
虚拟机
WordPress
群晖
CentOS
Vue
Java类库
Linux命令
防火墙配置
Mysql
脚本
Nginx
微醺
累计撰写
266
篇文章
累计收到
11
条评论
首页
栏目
默认分类
服务器
宝塔
VPS
Docker
OpenWRT
Nginx
群晖
前端编程
Vue
React
Angular
NodeJS
uni-app
后端编程
Java
Python
SpringBoot
SpringCloud
流程引擎
检索引擎
Linux
CentOS
Ubuntu
Debian
数据库
Redis
MySQL
Oracle
虚拟机
VMware
VirtualBox
PVE
Hyper-V
计算机
网络技术
网站源码
主题模板
页面
留言
导航
统计
搜索到
266
篇与
的结果
2023-06-29
拿来就能用的网页炫酷特效代码
前言:网上收集能美化网页的代码,比如给网页加个背景,给鼠标加个特效,来来回回也收集到了一些“使用简单”,“效果爆炸” 的页面,给大家分享出来。{collapse}{collapse-item label="鼠标点击弹出爱心"}<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Document</title> </head> <body> <!-- 网页鼠标点击特效(爱心) --> <script type="text/javascript"> ! function (e, t, a) { function r() { for (var e = 0; e < s.length; e++) s[e].alpha <= 0 ? (t.body.removeChild(s[e].el), s.splice(e, 1)) : (s[ e].y--, s[e].scale += .004, s[e].alpha -= .013, s[e].el.style.cssText = "left:" + s[e].x + "px;top:" + s[e].y + "px;opacity:" + s[e].alpha + ";transform:scale(" + s[e].scale + "," + s[e] .scale + ") rotate(45deg);background:" + s[e].color + ";z-index:99999"); requestAnimationFrame(r) } function n() { var t = "function" == typeof e.onclick && e.onclick; e.onclick = function (e) { t && t(), o(e) } } function o(e) { var a = t.createElement("div"); a.className = "heart", s.push({ el: a, x: e.clientX - 5, y: e.clientY - 5, scale: 1, alpha: 1, color: c() }), t.body.appendChild(a) } function i(e) { var a = t.createElement("style"); a.type = "text/css"; try { a.appendChild(t.createTextNode(e)) } catch (t) { a.styleSheet.cssText = e } t.getElementsByTagName("head")[0].appendChild(a) } function c() { return "rgb(" + ~~(255 * Math.random()) + "," + ~~(255 * Math.random()) + "," + ~~(255 * Math .random()) + ")" } var s = []; e.requestAnimationFrame = e.requestAnimationFrame || e.webkitRequestAnimationFrame || e .mozRequestAnimationFrame || e.oRequestAnimationFrame || e.msRequestAnimationFrame || function (e) { setTimeout(e, 1e3 / 60) }, i( ".heart{width: 10px;height: 10px;position: fixed;background: #f00;transform: rotate(45deg);-webkit-transform: rotate(45deg);-moz-transform: rotate(45deg);}.heart:after,.heart:before{content: '';width: inherit;height: inherit;background: inherit;border-radius: 50%;-webkit-border-radius: 50%;-moz-border-radius: 50%;position: fixed;}.heart:after{top: -5px;}.heart:before{left: -5px;}" ), n(), r() }(window, document); </script> </body> </html>{/collapse-item}{/collapse}{dotted startColor="#ff6c6c" endColor="#1989fa"/}{collapse}{collapse-item label="鼠标点击弹出文字"}<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Document</title> </head> <body> <script> (function () { var a_idx = 0; window.onclick = function (event) { var a = new Array("❤富强❤", "❤民主❤", "❤文明❤", "❤和谐❤", "❤自由❤", "❤平等❤", "❤公正❤", "❤法治❤", "❤爱国❤", "❤敬业❤", "❤诚信❤", "❤友善❤"); var heart = document.createElement("b"); //创建b元素 heart.onselectstart = new Function('event.returnValue=false'); //防止拖动 document.body.appendChild(heart).innerHTML = a[a_idx]; //将b元素添加到页面上 a_idx = (a_idx + 1) % a.length; heart.style.cssText = "position: fixed;left:-100%;"; //给p元素设置样式 var f = 16, // 字体大小 x = event.clientX - f / 2, // 横坐标 y = event.clientY - f, // 纵坐标 c = randomColor(), // 随机颜色 a = 1, // 透明度 s = 1.2; // 放大缩小 var timer = setInterval(function () { //添加定时器 if (a <= 0) { document.body.removeChild(heart); clearInterval(timer); } else { heart.style.cssText = "font-size:16px;cursor: default;position: fixed;color:" + c + ";left:" + x + "px;top:" + y + "px;opacity:" + a + ";transform:scale(" + s + ");"; y--; a -= 0.016; s += 0.002; } }, 15) } // 随机颜色 function randomColor() { return "rgb(" + (~~(Math.random() * 255)) + "," + (~~(Math.random() * 255)) + "," + (~~(Math .random() * 255)) + ")"; } }()); </script> </body> </html>{/collapse-item}{/collapse}{dotted startColor="#ff6c6c" endColor="#1989fa"/}{collapse}{collapse-item label="鼠标小星星拖尾跟随"}<!DOCTYPE html> <html lang="en"> <head> </head> <body> <span class="js-cursor-container"></span> <script> (function fairyDustCursor() { var possibleColors = ["#D61C59", "#E7D84B", "#1B8798"] var width = window.innerWidth; var height = window.innerHeight; var cursor = { x: width / 2, y: width / 2 }; var particles = []; function init() { bindEvents(); loop(); } // Bind events that are needed function bindEvents() { document.addEventListener('mousemove', onMouseMove); window.addEventListener('resize', onWindowResize); } function onWindowResize(e) { width = window.innerWidth; height = window.innerHeight; } function onMouseMove(e) { cursor.x = e.clientX; cursor.y = e.clientY; addParticle(cursor.x, cursor.y, possibleColors[Math.floor(Math.random() * possibleColors.length)]); } function addParticle(x, y, color) { var particle = new Particle(); particle.init(x, y, color); particles.push(particle); } function updateParticles() { // Updated for (var i = 0; i < particles.length; i++) { particles[i].update(); } // Remove dead particles for (var i = particles.length - 1; i >= 0; i--) { if (particles[i].lifeSpan < 0) { particles[i].die(); particles.splice(i, 1); } } } function loop() { requestAnimationFrame(loop); updateParticles(); } /** * Particles */ function Particle() { this.character = "*"; this.lifeSpan = 120; //ms this.initialStyles = { "position": "fixed", "display": "inline-block", "top": "0px", "left": "0px", "pointerEvents": "none", "touch-action": "none", "z-index": "10000000", "fontSize": "25px", "will-change": "transform" }; // Init, and set properties this.init = function (x, y, color) { this.velocity = { x: (Math.random() < 0.5 ? -1 : 1) * (Math.random() / 2), y: 1 }; this.position = { x: x + 10, y: y + 10 }; this.initialStyles.color = color; this.element = document.createElement('span'); this.element.innerHTML = this.character; applyProperties(this.element, this.initialStyles); this.update(); document.querySelector('.js-cursor-container').appendChild(this.element); }; this.update = function () { this.position.x += this.velocity.x; this.position.y += this.velocity.y; this.lifeSpan--; this.element.style.transform = "translate3d(" + this.position.x + "px," + this.position.y + "px, 0) scale(" + (this.lifeSpan / 120) + ")"; } this.die = function () { this.element.parentNode.removeChild(this.element); } } /** * Utils */ // Applies css `properties` to an element. function applyProperties(target, properties) { for (var key in properties) { target.style[key] = properties[key]; } } if (!('ontouchstart' in window || navigator.msMaxTouchPoints)) init(); })(); </script> </body> </html>{/collapse-item}{/collapse}{dotted startColor="#ff6c6c" endColor="#1989fa"/}{collapse}{collapse-item label="鼠标笑脸跟随+仙女棒+泡泡+雪花+点击烟花效果(自由组合)"}<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Document</title> </head> <body> <!--光标特效仙女棒--> <script src="https://blog-static.cnblogs.com/files/axqa/fairyDustCursor.js"></script> <!--光标之泡泡--> <script src="https://blog-static.cnblogs.com/files/axqa/bubbleCursor.js"></script> <!--笑脸--> <script src="https://blog-static.cnblogs.com/files/axqa/emojiCursor.js"></script> <!--雪花--> <script src="https://blog-static.cnblogs.com/files/axqa/snowflakeCursor.js"></script> <!-- 点击后出现烟花效果 --> <script src="https://blog-static.cnblogs.com/files/axqa/cursor-effects.js"></script> </body> </html>{/collapse-item}{/collapse}
2023年06月29日
39 阅读
0 评论
0 点赞
2023-06-29
SQL注入介绍看这一篇就够了
SQL注入会引发什么问题?SQL注入 是一种 对数据库的恶意攻击 ,注入进去的恶意指令就会被误认为是正常的SQL指令而执行,因此遭到破坏或是入侵。什么是SQL注入?SQL注入(英语:SQL injection) ,也称SQL注入或SQL注码,是发生于应用程序与数据库层的安全漏洞。简而言之,是在输入的字符串之中注入SQL指令,在设计不良的程序当中忽略了字符检查,那么这些注入进去的恶意指令就会被数据库服务器误认为是正常的SQL指令而执行,因此遭到破坏或是入侵。为什么会发生SQL注入?在设计不良的应用程序中,对用户输入数据的合法性并没有判断或过滤不严导致。如图中所示,没有对客户端用户输入的数据合法性进行检查或过滤,导致客户端用户可以任意构造自己想要的参数,达成SQL注入条件,最终引发严重的后果,如果在账号登录成功SQL注入,那么就可以成功登录他人的账号,使用对他人的账号进行一系列破环手段,比如黑客通过SQL注入成功登录你的微信,可以使用你微信里面的余额,给你的家人朋友发钓鱼链接等等。当然SQL注入的危害远不止可以成功登录他人的账号,还有可能造成的伤害如下资料表中的资料外泄,例如企业及个人 机密资料,账户资料,密码 等;数据结构被黑客探知,得以做进一步攻击(例如 SELECT * FROM sys.tables );数据库服务器被攻击,系统管理员账户被窜改(例如 ALTER LOGIN sa WITH PASSWORD='xxxxxx' );获取系统较高权限后,有可能得以在网页加入恶意链接、恶意代码以及 Phishing 等;经由数据库服务器提供的操作系统支持,让黑客得以修改或控制操作系统(例如 xp_cmdshell "net stop iisadmin" 可停止服务器的 IIS服务 );攻击者利用数据库提供的各种功能操纵文件系统,写入Webshell,最终导致攻击者攻陷系统;破坏硬盘资料,瘫痪全系统(例如 xp_cmdshell "FORMAT C:" );获取系统最高权限后,可针对企业内部的任一管理系统做大规模破坏,甚至让其企业倒闭;网站主页被窜改,导致声誉受到损害。总之作为程序设计者,需要保证程序的健壮性避免被 SQL注入攻击 。如何避免SQL注入?所有的查询语句都使用数据库提供的 参数化查询(Parameterized Query) 接口,参数化的语句使用参数而不是将用户输入变量嵌入到SQL语句中,当前几乎所有的数据库系统都提供了 参数化SQL语句 执行接口,使用此接口可以非常有效的防止 SQL注入攻击 ;set @name := xxx; set @pwd := xxx; select id from users where name = @name and pwd = @pwd在组合SQL字符串时,先针对所传入的参数加入其他字符,对进入数据库的特殊字符('<>&*;)等等进行转义处理;确认每种数据的类型,比如数字型的数据就必须是数字,数据库中的存储字段必须对应为int型;try: pwd = int(param.get("pwd")) except (TypeError, ValueError): return "pwd type must be int"数据长度应该严格规定,能在一定程度上防止比较长的SQL注入语句无法正确执行;name_max_length = 12 if len(param.get("name", "")) > name_max_length: return "name length cannot be greater than 12"网站每个数据层的编码统一,建议全部使用 UTF-8编码 ,上下层编码不一致有可能导致一些过滤模型被绕过;严格限制网站用户的数据库的操作权限,给此用户提供仅仅能够满足其工作的权限,从而最大限度的减少注入攻击对数据库的危害;避免网站显示SQL错误信息,比如类型错误、字段不匹配等,防止攻击者利用这些错误信息进行一些判断。案例这里分析一个案例1.数据库中先创建用户表及数据-- 创建一张用户表 CREATE TABLE `users` ( `id` INT(11) NOT NULL AUTO INCREMENT, `username` VARCHAR(20), `password` VARCHAR(50), PRIMARY KEY (`id`) ) ENGINE=INNODB DEFAULT CHARSET=utf8; -- 插入数据 INSERT INTO users(username,`password`) VALUES('张三','456123'),('李 四','qqatfv'),('王五','Qwe123'); INSERT INTO users(username,`password`) VALUES('小张','987456'),('小 王','ngjplg'),('小李','!@#$%^'); -- 查看数据 SELECT * FROM users; +----+----------+----------+ | id | username | password | +----+----------+----------+ | 1 | 张三 | 456123 | | 2 | 李四 | qqatfv | | 3 | 王五 | Qwe123 | | 4 | 小张 | 987456 | | 5 | 小王 | ngjplg | | 6 | 小李 | !@#$%^ | +----+----------+----------+ 6 rows in set (0.00 sec)2.编写一个登录程序import pymysql def login(): # 打开数据库连接 db = pymysql.connect(host='127.0.0.1', port=3306, user='root', passwd='12345', db='test', charset='utf8') # 使用 cursor() 方法创建一个游标对象 cursor cursor = db.cursor() username = input('请输入用户名:') password = input('请输入密码:') sql = "select * from users where username = '%s' and password = '%s'" % (username, password) print(sql) # 执行SQL语句 cursor.execute(sql) results = cursor.fetchone() if results: print('登录成功') else: print('登录失败') # 关闭数据库连接 db.close()2.1.正常登录>>> login() 请输入用户名:>? 张三 请输入密码:>? 456123 select * from users where username = '张三' and password = '456123' 登录成功, 你好:张三2.2.登录失败>>> login() 请输入用户名:>? 张三 请输入密码:>? 123456 select * from users where username = '张三' and password = '123456' 用户名或密码错误,请重新输入2.3.模拟注入此处我们给SQL注入了一个 or '1' = '1' 的条件,此时不管密码是否正确都可以成功登录login() 请输入用户名:>? 张三 请输入密码:>? 123456' or '1' = '1' select * from users where username = '张三' and password = '123456' or '1' = '1' 登录成功, 你好:张三3.解决方法,采用参数化查询import pymysql def login(): # 打开数据库连接 db = pymysql.connect(host='127.0.0.1', port=3306, user='root', passwd='12345', db='test', charset='utf8') # 使用 cursor() 方法创建一个游标对象 cursor cursor = db.cursor() username = input('请输入用户名:') password = input('请输入密码:') sql = "select * from users where username = %s and password = %s" # 执行SQL语句 cursor.execute(sql, (username, password)) results = cursor.fetchone() if results: print('登录成功, 你好:', username) else: print('用户名或密码错误,请重新输入') # 关闭数据库连接 db.close()3.1.正常登录>>> login() 请输入用户名:>? 张三 请输入密码:>? 456123 登录成功, 你好:张三3.2.登录失败>>> login() 请输入用户名:>? 张三 请输入密码:>? 123456 用户名或密码错误,请重新输入3.3.继续模拟注入此处我们给SQL注入了一个 or '1' = '1' 的条件,此时我们使用的是 参数化查询 方式有效的防止了SQL注入login() 请输入用户名:>? 张三 请输入密码:>? 123456' or '1' = '1' 用户名或密码错误,请重新输入
2023年06月29日
25 阅读
0 评论
0 点赞
2023-06-29
备用机消息转发神器:小转发
最近我新弄了一台水墨屏的手机看小说,同时因为它待机时间相对久一点,也可以作为备用机使用。为了保证它能上网,我从双卡双待的主力机中拿出了一张卡放了进去。但我并不想随时都带着两个手机,电话可以做来电转移,但是最常用的短信验证码很麻烦。幸好我们有 「小转发」 。安装 「小转发」 貌似很低调,没有找到它的官网,不过我们可以从酷安下载。如果你是在微信中阅读这篇文章,长按下图应该可以识别到二维码。什么是小转发 「小转发」是一个Android应用,它可以读取手机收到的短信和未接来电,并转发到微信。有了它,我们只需要把备用机接上电,扔到有网络的地方就可以不管它了(如果你担心长期充电不好,还可以接一个定时电源,每天充2个小时)使用 「小转发」 的界面很简单,安装完成后直接点击 「规则设置」 。再点击 「转发模式设置」 选项。输入 Sendkey 点击右上方的测试,如果能收到测试推送就发送成功了。优化 这个时候如果有短信发过来,我们就能收到微信通知了。但是很多手机厂商为了省电,会把长时间没有互动的应用从后台杀掉。这会让我们收不到新的转发,所以我们需要配置下系统权限。回到应用首页,点击 「白名单」 。点击 「确定」 按钮,对电池优化进行授权。需要注意的是,不同的手机厂商在这一块的优化策略不同,有时候可能无法弹出窗口,这就需要我们手动添加了,总之能保证「小转发」 一直在后台 就可以。最终效果 找台手机发条短信试试:
2023年06月29日
159 阅读
0 评论
0 点赞
2023-06-28
Linux 服务器必备的安全设置,建议收藏!!!
好不容易买了服务器,如果因为自己的疏忽,被黑客黑掉的话,那真的是太糟糕了!下面告诉你一些简单的方法提高服务器的安全系数,我的云服务器就是这么配置的,虽然有些麻烦,但是感觉安心一些。修改 ssh 登陆配置打开 ssh 配置文件vim /etc/ssh/sshd_config #修改以下几项 Port 10000 #更改SSH端口,最好改为10000以上,别人扫描到端口的机率也会下降。防火墙要开放配置好的端口号,如果是阿里云服务器,你还需要去阿里云后台配置开发相应的端口才可以,否则登不上哦!如果你觉得麻烦,可以不用改 Protocol 2 #禁用版本1协议, 因为其设计缺陷, 很容易使密码被黑掉。 PermitRootLogin no #尝试任何情况先都不允许 Root 登录. 生效后我们就不能直接以root的方式登录了,我们需要用一个普通的帐号来登录,然后用su来切换到root帐号,注意 su和su - 是有一点小小区别的。关键在于环境变量的不同,su -的环境变量更全面。 PermitEmptyPasswords no #禁止空密码登陆。最后需要重启 sshd 服务service sshd restart禁止系统响应任何从外部 / 内部来的 ping 请求echo "1"> /proc/sys/net/ipv4/icmp_echo_ignore_all其默认值为 0用户管理下面是基本的用户管理命令查看用户列表:cat /etc/passwd 查看组列表:cat /etc/group 查看当前登陆用户:who 查看用户登陆历史记录:last一般需要删除系统默认的不必要的用户和组,避免被别人用来爆破:userdel sync userdel shutdown # 需要删除的多余用户共有:sync shutdown halt uucp operator games gopher groupdel adm groupdel games # 需要删除的多余用户组共有:adm lp games dipLinux 中的帐号和口令是依据 /etc/passwd 、/etc/shadow、 /etc/group 、/etc/gshadow 这四个文档的,所以需要更改其权限提高安全性:chattr +i /etc/passwd chattr +i /etc/shadow chattr +i /etc/group chattr +i /etc/gshadow如果还原,把 +i 改成 -i , 再执行一下上面四条命令。注:i 属性:不允许对这个文件进行修改,删除或重命名,设定连结也无法写入或新增数据!只有 root 才能设定这个属性。创建新用户创建新用户命令:adduser username 更改用户密码名:passwd username个人用户的权限只可以在本 home 下有完整权限,其他目录要看别人授权。而经常需要 root 用户的权限,这时候 sudo 可以化身为 root 来操作。我记得我曾经 sudo 创建了文件,然后发现自己并没有读写权限,因为查看权限是 root 创建的。sudoers 只有只读的权限,如果想要修改的话,需要先添加 w 权限:chmod -v u+w /etc/sudoers 然后就可以添加内容了,在下面的一行下追加新增的用户:wq 保存退出,这时候要记得将写权限收回:chmod -v u-w /etc/sudoers赋予 root 权限方法一:修改 /etc/sudoers 文件,找到下面一行,把前面的注释(#)去掉## Allows people in group wheel to run all commands # 去掉下面一句的前面的注释 # %wheel ALL=(ALL) ALL # 然后修改用户,使其属于root组(wheel),命令如下: # usermod -g root uusama修改完毕,现在可以用 uusama 帐号登录,然后用命令 su – ,即可获得 root 权限进行操作。方法二(推荐):修改 /etc/sudoers 文件,找到下面一行,在 root 下面添加一行,如下所示:## Allow root to run any commands anywhere root ALL=(ALL) ALL uusama ALL=(ALL) ALL修改完毕,现在可以用 uusama 帐号登录,然后用命令 sudo -s ,即可获得 root 权限进行操作。方法三:修改 /etc/passwd 文件,找到如下行,把用户 ID 修改为 0 ,如下所示:uusama:x:500:500:tommy:/home/uusama:/bin/bash # 修改后如下 uusama:x:0:500:tommy:/home/uusama:/bin/bash保存,用 uusama 账户登录后,直接获取的就是 root 帐号的权限。
2023年06月28日
61 阅读
0 评论
1 点赞
2023-06-26
群晖DSM VideoStation视频自动刮削 手把手教程
The Movie Database API 的申请 ▲注册The Movie Database账号,并进入账户设置界面。 ▲点击网页左面的API按钮。 ▲在创建选项中选择Develop 开发者选项。 ▲根据要求填写个人信息,应用URL随便填一个网址就行。 ▲之后备份红框中的 API密钥 待用。 开启群晖端SSH▲在DSM控制面板中进入终端机和 SNMP ▲选择启动 SSH功能 ,并点击 应用。 电脑端的操作▲找一台与群晖系统同一局域网的电脑,进入Winodws PowerShell。 ▲首先输入 ssh 群晖用户名@群晖的局域网IP -P 22 然后输入对应密码,连接上SSH后再输入 sudo -i 再输入管理员密码。 ▲再输入 cd /etc vi hosts ▲如果 .hosts.swp 文件已经存在,则需要按 E 进入。 ▲紧接着在 hosts 界面中按下 i 键盘进入 输入模式 ,将 13.226.238.82 api.themoviedb.org 加进 hosts 中,并按 ESC 退出输出模式,并输入 :wq 保存并退出hosts ▲最后,输入 rm .hosts.swp 删除hosts文件,之后一路输入 exit 直到退出Windows PowerShell。 群晖DSM Video Station中的设置▲进入VideoStation ▲在Video Station中依次点击设置按钮,选择视频信息插件页面,选择The Moive Database,点击编辑。 ▲将之前准备好的The Movie Database的API粘贴到这里,点击确定。 ▲紧接着进入视频库页面,点击再次搜索所有视频信息。 ▲刷新一下网页,你就可以发现Video Station已经可以自动刮削影视信息了。 最后为了方便大家设置,我把部分代码放在下面,方便大家复制: cd /etc vi hosts 13.226.238.82 api.themoviedb.org :wq rm .hosts.swp
2023年06月26日
45 阅读
0 评论
0 点赞
2023-06-26
ZeroTier——内网穿透工具
传统的内网穿透内网设备<——>中转服务器<———>网络设备(手机、电脑)弊端:中转服务器需要一定的费用进行支撑,如果是外网的服务器还可能存在被墙的风险。中转服务器直接决定了中转的“速度”,而这个“速度”越快其对应的服务器带宽就越大,通常来说价格也就越高。需要一定的知识储备来搭建内网穿透的服务端,虽然目前由于各种脚本的出现,门槛越来越低,但同时也会出现各种各样的问题,对于某些人来说解决起来较为繁琐、头疼。ZeroTier的内网穿透内网设备<——>移动、PC设备(手机、电脑)通常情况下是端到端的传输,如果网络环境差的话也会借助中转服务器进行传输数据。优势:操作极其简单,大体可以分为:创建账号—>创建访问密钥——>需要互通的设备安装zerotier客户端——>输入刚刚创建的访问密钥——>结束正常情况下不依赖服务器进行中转传输文件,端到端连接,理论可以达到满带宽。个人使用可以不需要额外的服务器费用开支,免费版本下可以支持一百个设备(不同或者相同网络环境)同时连入软件所创建的虚拟局域网,从而实现局域网内各个设备之间的无限制的访问。公网IP搞定群晖+ZEROTIER ONE实现内网穿透以下是官方网站和使用的方法:官方网站:https://www.zerotier.com/官方操作文档:点击进入
2023年06月26日
43 阅读
0 评论
1 点赞
2023-06-26
群晖Docker 搭建qbittorrent
qBittorrent项目旨在提供一个开源软件µTorrent的替代品。安装 qbittorrent在群晖Docker注册表中搜索 qbittorrent ,找到 linuxserver/qbittorrent ,双击加载,选择自己所需的版本,此处选择 14.2.0.99201912180418-6819-118af03ubuntu18.04.1-ls59 版本;在群晖Docker映像中双击 linuxserver/qbittorrent:14.2.0.99201912180418-6819-118af03ubuntu18.04.1-ls59 来创建一个容器;容器名称: qbittorrent点击「高级选项」进行配置「卷」选项卡Local locationContainer locationUsage/docker/qbittorrent/config/config目录/docker/qbittorrent/downloads/downloads目录此处 /downloads 是下载后文件的地址,可以根据自己的需求修改「端口」选项卡本地端口容器端口类型168816881tcp168816881udp1808018080tcp「环境变量」选项卡新增以下字段:变量赋值说明PS1$(whoami)@$(hostname):$(pwd)$运行目录TempPath/downloads临时文件的保存路径SavePath/downloads下载保存的路径HOME/config配置文件目录WEBUI_PORT18080网页访问的端口号PUID1024设置权限配置 qbittorrent值得注意的是,第一、这里qbittorrent不支持ssh;第二、你必须确保容器端口和本地端口一致。设置路由端口映射 18080防火墙开放 18080 端口访问 qbittorrent地址栏输入:http://www.exampe.com:18080默认的用户名:admin,默认密码:adminadmin
2023年06月26日
63 阅读
0 评论
0 点赞
2023-06-26
群晖部署Alist将云盘装载为本地硬盘
Alist一个支持多种存储的文件列表程序,使用 Gin 和 Solidjs。项目地址:https://alist.nn.ci/zh/打开Docker仓库,搜索 xhofe/alist 选择 latest 点击下载 下载完成以后双击打开我们的镜像,直接下一步 容器端口5244,本地端口可以自定义,这里我用默认的5244端口 映射目录到 /opt/alist/data 点击 完成 打开日志找到 password 登录浏览器输入群晖的IP+设置的本地端口号默认用户名admin,输入刚才日志的密码进入首页后还没有添加存储启动器,点击下面的管理进行设置先修改下默认的用户名密码 添加云盘选择要添加的云盘即可!!
2023年06月26日
120 阅读
0 评论
0 点赞
2023-06-26
centos 安装golang 1.18
# 下载安装 cd /usr/local/src wget https://golang.google.cn/dl/go1.18.linux-amd64.tar.gz tar -zxvf go1.18.linux-amd64.tar.gz -C /usr/local/ # 增加配置文件 vim /etc/profile export GOROOT=/usr/local/go export PATH=$PATH:$GOROOT/bin export GOPATH=/opt/go export PATH=$PATH:$GOPATH/BIN export GO111MODULE=on export GOPROXY=https://goproxy.cn # 应用改变 source /etc/profile # 查看版本 go version - go version go1.18 linux/amd64
2023年06月26日
26 阅读
0 评论
0 点赞
2023-06-25
微信抖音快手三合一壁纸小程序源码 后端管理设置功能丰富
三合一壁纸小程序源码 这是一款支持快手端微信端抖音三端的一个壁纸类型的小程序源码。一个后台同时管理三端,内有丰富的后端设置,安装也是特别的简单(压缩包里面也有文本安装教程),另外支持静态壁纸显示,动态壁纸显示或者头像表情包等等前端自适应识别所属内容然后根据内容来自适应展示另外后端可以开关模糊下载,所以支持用户模糊下载和激励高清原图下载另外支持编号取图也就是标签取图支持设置首页热门标签编号取图也是抖音非常火的一个营销方式另外可以是一张图(例如壁纸)也可以是多张图集(如多个头像、表情包)前端会根据文章内图片的数量进行不同显示一张图时,全屏显示用户下载也仅获得此图,多张图时会以轮播形式展示,用户点击下载会一次保存所有图片源码地址隐藏内容,请前往内页查看详情
2023年06月25日
45 阅读
0 评论
0 点赞
1
...
13
14
15
...
27