21 Commits

Author SHA1 Message Date
ae5d4d5a8e Create 2023-04-05-ai.md 2023-04-05 15:12:50 +08:00
7b2a1df6ef Update 2 files
- /index.html
- /_posts/2023-03-12-php-async.md
2023-03-12 14:53:07 +00:00
b7ec2f390f Update index.html 2023-03-01 06:14:56 +00:00
4da70fb10f Update index.html 2023-03-01 06:06:58 +00:00
3248be8d53 Update file 2023-02-22-cron.md 2023-02-22 13:36:12 +00:00
afc549167c Update file 2023-02-03-mbp.md 2023-02-02 18:30:30 +00:00
8772648878 Update file 2023-01-01-summary.md 2023-01-01 08:55:40 +00:00
2d68e34467 Update proxylist.md 2022-12-26 18:29:09 +00:00
dd5ab4867c Update file 2022-12-26-i2p-ssl.md 2022-12-26 15:20:43 +00:00
033f7ce32b 更新 _posts/2022-12-12-bt-s3-comp.md 2022-12-12 13:23:54 +00:00
2d4609d0ab 更新 links.md, proxylist.md 2022-12-02 18:11:38 +00:00
c61e461e5b 更新 _posts/2022-11-29-free-server.md 2022-11-29 15:59:11 +00:00
5d1c867bf5 Update proxylist.md 2022-11-26 18:30:22 +00:00
b2968c3001 Update proxylist.md 2022-11-23 13:03:34 +00:00
e5e81ca40b 更新 _posts/2022-11-23-i2p.md 2022-11-23 12:45:55 +00:00
4579da904a Update proxylist.md 2022-11-16 15:53:04 +00:00
537c25eaa8 Update 2022-11-16-tor.md 2022-11-16 19:57:20 +08:00
9f81162cb9 更新 _posts/2022-11-16-tor.md 2022-11-16 11:32:50 +00:00
f87ba583aa 更新 _posts/2022-11-08-cf-acc.md 2022-11-08 05:21:31 +00:00
28a80e08d5 Update 2022-10-19-web3.md 2022-10-19 16:06:13 +00:00
93d07f16d4 更新 _posts/2022-10-19-web3.md 2022-10-19 15:14:20 +00:00
14 changed files with 615 additions and 5 deletions

27
_posts/2022-10-19-web3.md Normal file
View File

@ -0,0 +1,27 @@
---
layout: post
title: 在Web3上搭建一个自己的博客
tags: [Web3, 博客, 搭建]
---
感觉Web3可以真正的为现在的人们使用了呢。<!--more-->
# 起因
最近偶然看到了一个很有意思的东西,叫[xLog](https://xlog.app/)大概试了试这是在一条叫Crossbell的区块链上使用智能合约操作和存储元数据并把实际数据存到IPFS上的项目。看了一眼还挺有意思就在上面搭了一个自己的[另一个博客](https://mayx.xlog.app/)另外他们还使用这套方案写了一个类似Twitter的社交系统也叫Crossbell非常的人性化可以说是把Web3真正的带给了普通用户。至于怎么搭他们的项目成员写了篇教程[5分钟就能搭好在Web3的博客](https://song.xlog.app/5m-zh)。
不过使用xLog那就不是技术人员的事了而是让一个不怎么懂电脑的人来做的事情了。另外他们宣称数据是“Permanently stored on the blockchain”这一点我不太认同要是说存到了Web3成为了其他人无法修改的数据这倒是没什么问题但是存到IPFS上只要没有被Pin就有可能在节点GC的过程中永远消失。另外我其实对区块链接触不多不清楚能不能完整的同步他们的链如果不能那就是私链了那样元数据也不能永久保留了……所以我只能说这个平台是Web3可以保证不因为审查而404但是不能在时间的长河中保留信息。
# 技术人员的方法
所以作为技术人员我的博客当然直接上IPFS那更好啦因为他们的平台毕竟可定制性不高而且好多组件不知道有没有可替代性比如以太坊JSON-RPC不过他们的服务好像是都开源了只要这个链可以被同步能搭属于自己的RPC那倒是问题不大。
直接用IPFS客户端直接上传是最原生的办法但是我不喜欢在自己电脑上安一堆莫名其妙的软件像我现在写博客都是直接在Github或者Gitlab上写好然后直接用[之前提到的静态页面服务商](/2022/02/14/move.html)一次性部署好。所以我也希望能有一个类似的服务商能帮我把我的博客上传到IPFS上。最后我找到的服务商就是[4EVERLAND](https://www.4everland.org/)。它可以绑定Git仓库并监听变化当有变化的时候就会自动部署到IPFS上并且他们提供免费的Gateway来直接访问在IPFS上的内容非常的不错。不过有个问题就是不知道什么原因它的部署模板里面没有Jekyll的语句然后前端还不能自定义……所以只能靠抓包的方式来修改成自己想要的部署语句。
# 从IPFS直接访问
使用4everland部署完之后直接访问当然也很好但是总感觉和其他服务商差不多谁知道它读取网页到底是从自己服务器上还是IPFS网络上读取呢所以我还想整个更好的方式从IPFS上读取也能证明它确实在IPFS上了。
直接通过Gateway去访问我的博客当然也没问题但是每次部署的时候CID是会变化的那这样我想访问也不方便啊……后来我听说可以把CID用一种叫dnslink的方式记录到DNS里这样就能通过固定又好记的方式来访问。不过那时候我不知道怎么访问dnslink记录的网站……而且每次部署CID会变那部署完我还要更新我的DNS记录啊后来我查了查原来还有一种叫IPNS的东西看了一眼4everland的控制台原来每个网站它也会生成一个固定的IPNS然后用dnslink可以指向IPNS。那如何访问呢IPFS又没有一个IP地址光TXT记录肯定不够的吧后来我才知道原来要用CNAME解析到Gateway才能访问设置之后每次访问Gateway就会自动解析在TXT记录里的dnslink了。现在 <https://ipfs.mayx.eu.org> 这个网站就可以直接访问我博客在IPFS上的数据了。这不比xLog自由度高不过我这个没办法存评论数据可能xLog的特色就是社交吧毕竟他们的主项目Crossbell就是主打的社交。希望可以整一个单独的插件专门用他们的网络来为我这种静态博客提供评论功能也是一个不错的选择毕竟ETH公链上的手续费太贵啦😂
# 更好的永久存储
前面我说过IPFS只能防止篡改但不是作为永久存储的方案上公链当然是也一种永久存储的方案但是成本太高了我付不起。后来我了解到一种叫做Arweave的东西可以永久存储你的数据不过这不是免费的想存得要付AR币到链上才可以。还好4EVERLAND提供了一些免费上传到AR网络的额度非常的不错这样我以后每次上传我会把地址写到[Github的Releases](https://github.com/Mabbs/mabbs.github.io/releases)里面,进一步的提高我博客永久存储的可能性。
另外我还听说似乎还有一种叫做ZeroNet的东西也是通过分布式的方式存储数据据群友所说也能在一定程度上永久存储。不过我试了试访问实在是太困难了😂而且现在程序也不在维护了所以也就放弃了。
# 感想
Web3真是发展的越来越好了希望能有更多的人参与其中一起创建不受管束的网络吧。还有实现我的Mayx Forever计划😝
不过说来我也挺担心那个Crossbell的项目作为不受监管的平台只要知名度上来肯定会被滥用到死希望他们能活得更长一些吧。

View File

@ -0,0 +1,32 @@
---
layout: post
title: 提高Cloudflare站点在中国的体验
tags: [Cloudflare, 加速]
---
从此Cloudflare不再是减速CDN了<!--more-->
# 起因
众所周知因为很多人用Cloudflare当作梯子中转之类的原因中国对Cloudflare网络的速度会有很大程度的劣化所以在上面的网站访问速度也会非常烂。最近我发现了一个不错的办法可以在一定程度上避免这个问题所以今天就来说一说。
# 普通用户的解决方法
对于网站的访问者来说,使用[CloudflareSpeedTest](https://github.com/XIU2/CloudflareSpeedTest)这个工具就挺不错的它能检测到当前网络连哪个IP是最好的。因为Cloudflare网络用的是Anycast无论从哪个IP进入都可以所以用这个检测出来的IP直接改Hosts访问就能解决访问网站慢的问题。
不过有些地区可能是服务商主动对Cloudflare的IP段进行限速那这样有可能测试出来没有可以使用的节点那么还有一种方法网络上有些可能是企业之类的人会反代Cloudflare的网站用于解决在国内访问慢的问题并且没有对host头做限制那么这些第三方的节点同样也可以作为访问Cloudflare网站的方法。具体怎么找到这样的IP有一个[仓库](https://github.com/ip-scanner/cloudflare)每天都会扫描全网去找像这样的节点。
当然这些节点也不是所有的IP从中国连接速度都很好这时候可以把这个仓库的所有IP收集起来然后再丢给CloudflareSpeedTest去测试具体我写了个简单的脚本来处理
```bash
git clone https://github.com/ip-scanner/cloudflare.git
cat cloudflare/*.txt > proxy.txt
./CloudflareST -allip -sl 0.1 -f proxy.txt -n 500
```
这样获得的第三方IP就基本上不会被限速里面甚至有可能有通过IPLC或者IEPL的节点包括拿来当梯子中转速度都几乎可以跑满带宽另外还有一个优点是这样Cloudflare获得的IP就是第三方节点的IP可以起到匿名的作用。
# 对于站长的解决方法
上面的方法相当于是用户自己去解决访问的问题但是操作可能还是会有点复杂所以对于网站站长来说不可能去期待访客通过这种方法来提高访问自己网站的速度。不过Cloudflare网站接入只能通过NS方式接入这样接入的话域名解析的IP就是自动分配的没办法自己设定解析也就不能选择更合适的IP另外之前用CF Partner通过CNAME接入的方法基本上都全死光了那现在应该怎么办呢后来我搜了一下Cloudflare原来已经提供了官方通过CNAME接入的方法应该是新加的功能除了要绑信用卡之外就没别的要求了。
在使用这个功能之前必须先有2个域名一个是不重要的域名通过NS方式接入Cloudflare另一个是主要使用的域名可以接到Cloudflare上也可以接到别的NS服务商上。然后在那个不重要的域名中先设定好源站的解析可以解析到“@”或者随便一个二级域名也可以并且打开代理。然后点开SSL/TLS->自定义主机名第一次使用需要绑定信用卡或者PayPal好像是因为它是个什么预付费的项目免费100个CNAME超过100个每个0.1USD。打开以后在回退源中输入刚刚设置好解析的那个域名当回退源状态显示有效后就可以添加自定义主机名了。这里添加的主机名就是主要使用的域名输入后根据提示在主域名上设定好TXT记录完成后只要看到刚刚设定的主机名后面跟了两个有效就可以了。
这样准备工作就做完了现在只要把主域名的解析设定到Cloudflare网络的任意节点它就会自动连接到不重要的域名所解析的IP上。至于怎么获得优秀的IP就可以像普通用户那样操作了获得优秀的IP以后我们就可以设定一个A记录解析过去。
不过这里需要注意一些地方如果使用的优选IP是Cloudflare官方的IP那基本上也不会有什么问题只是这个IP可能有些地区还是会访问缓慢毕竟它也算是在重点关注对象中。如果是选择第三方节点IP大多数情况速度都能保障但是有个很大的问题就是那些节点的主人如果发现了你在使用他们的节点他们是可以很轻易的进行中间人攻击的毕竟域名都解析过去了整个SSL证书也很简单为了能避免这个问题一定要开启“证书透明度监视”保证能在第一时间避免有人进行中间人攻击。另外还有一个问题就是既然第三方IP可以匿名那么网站也没办法获取到用户的真实IP地址了像Cloudflare一些根据IP的防火墙也会无法生效像WAF中的速率限制规则是万万不能开的开了很大可能网站就访问不了了。还有就是DDoS是可以击垮第三方节点的可能会使网站的可用性下降。所以如果对速度没有特别在意的情况下还是解析到官方IP上更好一些。
所以为了避免节点可能会用不了的情况我有个想法因为我没有大陆地区的服务器所以只是设想之前我用过一个可以给Cloudflare设定DDNS的脚本叫[cloudflare-api-v4-ddns](https://github.com/aipeach/cloudflare-api-v4-ddns)原本它是去请求获取本机IP的API设定解析的那么如果把上面优选IP的结果输入到这个脚本中放到国内的服务器上每天自动执行一次那这样我的网站不就会一直使用最优秀的IP了嘛可惜我没有国内的服务器改起来还要费点事就算了吧。
# 感想
有了很多辅助的工具能让Cloudflare不再成为减速CDN那它岂不是可以吊打国内其他CDN厂商了😆果然还是良心厂商啊。

119
_posts/2022-11-16-tor.md Normal file
View File

@ -0,0 +1,119 @@
---
layout: post
title: Tor在服务器上的使用体验
tags: [tor, 网络]
---
就像和普通网络一样使用Tor吧<!--more-->
# 起因
前段时间全世界最大的电子书图书馆——Zlibrary的域名被FBI回收了以致于想要访问它只能用Tor洋葱路由器或者Tor2Web访问它的Onion域名。 ~~众所周知只有恋童癖瘾君子和读书人才会用Tor🤣~~ 当然想要访问洋葱网络用Tor2Web最简单但是最不安全太容易被中间人攻击了或者安装洋葱浏览器也很简单只不过我有个理念就是一个设备不应该安装超过一个浏览器正因如此我也很不喜欢Electron的软件。既然我使用Windows本身就已经有个Egde浏览器了我为什么还要安装其他浏览器呢所以我就想能不能用更加简单的方式来访问Onion域名。
# 探索过程
要想不使用洋葱浏览器访问也可以只要装一个Tor核心然后让浏览器去连它的Socks代理就可以了只不过……在国内想要连接洋葱网络实在是太麻烦了还要整网桥前置代理啥的。不过要说代理……我自己倒是有一个那这么说来我干脆把代理和Tor组合到一起都放到服务器上然后我只要连代理就可以同时访问外网和洋葱网络了吧还不影响我访问其他网站的速度。
那应该怎么做呢Tor安装倒是很简单大多数软件包管理器都能直接安装甚至可以什么都不配置就可以用9050端口访问它的Socks5代理了我的话虽然之前用的是[wssocks](/2022/01/16/wssocks.html)但是并发效果很差也没有手机客户端所以最后还是换成了v2ray。像v2ray这种相比其他的还有一个优点就是它的路由配置功能还挺强大的这次也是用到了它的路由功能。其实去看官网文档上也有关于[将Tor和v2ray配合使用的教程](https://guide.v2fly.org/advanced/tor.html)只是不知道为什么它那个配置文件里面只有关于客户端的路由没有服务端的路由……不过不影响v2ray作为一个服务端和客户端等价的程序稍微改下那个配置文件就可以用了
```json
{
"log": {
"loglevel": "warning"
},
"routing": {
"domainStrategy": "AsIs",
"strategy": "rules",
"settings": {
"rules": [
{
"type": "field",
"domain": [
"regexp:\\.onion$"
],
"outboundTag": "tor"
},
{
"type": "field",
"outboundTag": "block",
"protocol": [
"bittorrent"
]
}
]
}
},
"inbounds": [
{
"sniffing": {
"enabled": true,
"destOverride": [
"http",
"tls"
]
},
"listen": "/dev/shm/proxy.sock",
"protocol": "vless",
"settings": {
"udp": false,
"clients": [
{
"id": "***",
"alterId": 0,
"flow": ""
}
],
"decryption": "none",
"allowTransparent": false
},
"streamSettings": {
"network": "ws",
"security": "none",
"wsSettings": {
"path": "***",
"headers": {
"Host": "***"
}
}
}
}
],
"outbounds": [
{
"protocol": "freedom"
},
{
"protocol": "socks",
"settings": {
"servers": [
{
"address": "127.0.0.1",
"port": 9050
}
]
},
"tag": "tor"
},
{
"protocol": "blackhole",
"tag": "block"
}
]
}
```
顺便我为了避免不小心服务器被封也屏蔽了bt下载其实也许把bt流量转发到洋葱网络里面也可以。配置好之后试着找了些Onion网站试了试还不错访问速度一般也不影响我访问其他网站。
不过需要注意的一点是这个方法**不能匿名**仅仅是作为访问Onion网站的手段因为普通的浏览器不会有那么多保护隐私的机制这样的配置方法很容易会导致IP泄露就算是有代理也会有WebRTC泄露的可能性想匿名还是用洋葱浏览器+前置代理或者Tor做透明代理会更好一些。
# 使用Tor进行建站
既然在服务器上安装了Tor正好我之前用[mkp224o](https://github.com/cathugger/mkp224o)算了几个vanity address这次可以直接拿已经算好了私钥开网站。方法也很简单`HiddenServiceDir`后面加私钥的存放位置,然后在`HiddenServicePort`后面加想要服务的端口号和被映射的端口一般教程会说用nginx映射127.0.0.1:80而我会建议使用Unix domain Socket更加安全性能也会更好像我就会配成
```
HiddenServiceDir /var/lib/tor/hidden_service/
HiddenServicePort 80 unix:/dev/shm/nginx.sock
```
顺便加两句反蜜罐配置:
```
ExcludeNodes {cn},{hk},{mo},{kp},{ir},{sy},{pk},{cu},{vn}
StrictNodes 1
```
nginx的监听也要注意监听/dev/shm/nginx.sock这样能保证即使在服务器内扫描端口也不会泄露你的网站😆。
其实我本来想让v2ray的连接Tor也通过Unix domain Socket走但是很遗憾的是我没找到v2ray的Outbound怎么样设置Unix domain Socket连接……
# 感想
感觉洋葱网络其实还是对用户挺友好的,使用起来还是挺方便的,就像访问普通网络那样,大概也正是这种原因它才能成为匿名网络中最受欢迎的吧。

129
_posts/2022-11-23-i2p.md Normal file
View File

@ -0,0 +1,129 @@
---
layout: post
title: i2pd在服务器上的使用体验
tags: [i2p, 隐私, 网络]
---
Java果不其然是垃圾😁i2p还是得靠其他语言支撑<!--more-->
# 起因
前几天[我在服务器上体验了Tor](/2022/11/16/tor.html)让我的代理在访问互联网的同时也能访问洋葱网络上的网站。其实我整完这个之后也想整出能访问i2p的功能只是我之前体验了下官方的I2P客户端体验不是一般的差再加上还是Java写的导致我对i2p的印象不怎么好。
不过最近我看到有一个使用C++实现的i2p叫[i2pd](https://github.com/PurpleI2P/i2pd)。其他先不说只要不是Java写的首先加一分闭着眼睛都知道它的体验一定比官方的Java I2P体验要好得多。随后我就按照官网的文档在我的服务器上安装了一下。
# 探索过程
安装完成之后使用也非常的简单虽然它也有Web管理界面但是为了安全我的服务器上开了几层防火墙也懒得配置所以也没有登进去看一眼。不过使用还是相当简单的它和官方的I2P一样也是可以直接用4444端口的HTTP代理连接隐形网络为了能让我的电脑也能上我也在我的v2ray配置文件基于上次写的照猫画虎的加了几句规则
```json
{
"log": {
"loglevel": "warning"
},
"routing": {
"domainStrategy": "AsIs",
"strategy": "rules",
"settings": {
"rules": [
{
"type": "field",
"domain": [
"regexp:\\.onion$"
],
"outboundTag": "tor"
},
{
"type": "field",
"domain": [
"regexp:\\.i2p$"
],
"outboundTag": "i2p"
},
{
"type": "field",
"outboundTag": "block",
"protocol": [
"bittorrent"
]
}
]
}
},
"inbounds": [
{
"sniffing": {
"enabled": true,
"destOverride": [
"http",
"tls"
]
},
"listen": "/dev/shm/proxy.sock",
"protocol": "vless",
"settings": {
"udp": false,
"clients": [
{
"id": "***",
"alterId": 0,
"flow": ""
}
],
"decryption": "none",
"allowTransparent": false
},
"streamSettings": {
"network": "ws",
"security": "none",
"wsSettings": {
"path": "***",
"headers": {
"Host": "***"
}
}
}
}
],
"outbounds": [
{
"protocol": "freedom"
},
{
"protocol": "socks",
"settings": {
"servers": [
{
"address": "127.0.0.1",
"port": 9050
}
]
},
"tag": "tor"
},
{
"protocol": "http",
"settings": {
"servers": [
{
"address": "127.0.0.1",
"port": 4444
}
]
},
"tag": "i2p"
},
{
"protocol": "blackhole",
"tag": "block"
}
]
}
```
顺便再提醒一下,这样的配置**不能**匿名仅仅是一种更方便访问隐形网络的方式如果有匿名需要建议使用Firefox或者Tor浏览器安装I2P的插件并设置相应的代理或者使用[i2pdbrowser](https://github.com/PurpleI2P/i2pdbrowser)也是基于Firefox的
另外如果只是访问还有一种更加不匿名的方式i2p也有类似tor2web那样的东西不过很少我找了一圈只找到了[i2phides.me](https://i2phides.me/)可以用。当然也是强烈不推荐的,在不知明细的情况下使用这种东西是会被中间人攻击+记录访问日志的。
配置好之后试着用电脑上了一下体验相当好比之前在手机和电脑上安装的官方的I2P Java客户端速度快多了随便开了几个网站感觉甚至比上次配置的Tor速度还快不过这可能只是延迟比较低之后我找了几个文件下载Tor的实际网速还是更快一些I2P虽然感觉延迟低但是实际下载速度也只有1Mb/s左右。
# 建站体验
隐形网络比洋葱网络感觉更好的一点大概就是它有一套自己的域名解析系统洋葱网络访问的时候基本上没办法记忆想整个好看的域名还得算。隐形网络的话有了域名解析系统就可以不用花大力气去算vanity address了。不过我搞这个也算是玩了算一个也挺好。想整的话可以用i2pd提供的一套工具[i2pd-tools](https://github.com/PurpleI2P/i2pd-tools)里面有个叫vain的工具可以用来算vanity address。不过实际上试了一下感觉没有Tor里的[mkp224o](https://github.com/cathugger/mkp224o)好用速度慢是一方面比较离谱的是它还能计算出错6位以下的自定义字母倒是能正常计算6位以上的就会计算错误好不容易计算出一个结果检验的时候报“bad key file format”……看那个仓库好像人家也不怎么想解决的样子大概也因为有域名解析系统的原因网上也没有其他人开发这样的程序……
算好喜欢的私钥之后就可以进行建站了他们这个配置文件感觉比Tor客户端的要好配置也很简单按照[i2pd的文档](https://i2pd.readthedocs.io/en/latest/tutorials/http/#host-anonymous-website)就行了不过他们这个有个缺点就是好像不支持Unix Domain Socket连接这样我就得再占掉一个端口比较令人遗憾……另外这个私钥官方没有说放到哪里我找了一下需要放到“/var/lib/i2pd/”路径下,这个应该是它以服务形式启动之后默认的工作目录。
配置好之后网站就可以访问了不过既然它有域名解析系统还是免费的肯定还是要注册一个的。注册也很简单上面提到的i2pd-tools里面有个regaddr程序把自己想要的域名和私钥按照说明传进去把输出的结果粘贴到 <http://reg.i2p/add> 或者 <http://stats.i2p/i2p/addkey.html> 里面,然后过段时间等他们收录了之后就可以使用了。
# 感想
虽然i2pd的体验还不错不过也许是官方使用的是Java编写的客户端导致用户量很少网站也非常少以致于感觉访问i2p的网站都似乎失去了意义……不像洋葱网络那样随便搜一搜就能找到互联网肯定找不到的东西。 ~~所以Java什么时候死啊😂~~

View File

@ -0,0 +1,77 @@
---
layout: post
title: 体验小白也会使用的免费容器云
tags: [Docker, 容器, 免费]
---
Heroku虽然倒了但是我们还有更多的选择<!--more-->
# 起因
从昨天开始Heroku就不再提供免费的容器云服务了虽然我有Github的学生包但是试了一下要绑银行卡就算了。不过虽然这么说我其实一次也没用过Heroku因为它要安装奇奇怪怪的软件用起来很不人性化。不过最近也正好需要一个服务器来供我测试那应该怎么办呢
# Koyeb的体验
后来我在寻找的时候找到了一家叫做[Koyeb](https://www.koyeb.com/)的平台也是容器云还是免费的。用Github登录之后就可以使用了试了一下感觉很不错啊它和其他免费容器云最不一样的可能就是它能直接部署Docker Hub上的项目不用在Github上新建乱七八糟的仓库也不用安装乱七八糟的软件非常的人性化啊。
既然能部署Docker Hub的项目那可选择的余地就太大了我直接随便部署一个发行版就能当免费的VPS来用不过既然能直接部署了还是安点什么好吧……我想了想干脆安装个宝塔面板吧正好他们官方也提供了[Docker镜像](https://hub.docker.com/r/btpanel/baota)直接部署就行另外为了正常访问需要映射8888端口另外为了方便访问网站还要映射一个80端口。不过它只给了一个地址所以如果要映射多个端口就只能设定路径……像我是给面板设定的根目录方便我配置至于网站嘛……之后再考虑吧这里我先填了一个`/app`的路径便于之后使用。
这样安装出来的面板直接根据镜像文档的说明就可以登录了不过登录之后会要求绑定手机号……我不太想整这个东西于是在网上找了个宝塔纯净版在Koyeb的Console里面执行
```bash
curl http://v7.hostcli.com/install/update6.sh|bash
```
运行之后就可以跳过绑定宝塔账号的步骤了还能安装企业版插件还是挺不错的。不过不知道是什么问题网页端的SSH好像用不了……这个建议使用frp等方式反代一下再用免费的frp服务器还是比较好找的。
## 建站方法
因为之前已经映射了80端口所以直接用提供的链接就能打开之前建好的网站例如example.koyeb.app/app。不过对于有些网站来说有个问题那就是它的程序可能资源不允许在不是根目录的地方这样它读取文件的时候就会从宝塔面板的路径读取了然后就会出现例如404的错误。为了解决这个问题我想了一下干脆让Cloudflare Workers反代它吧理论上应该绑定域名然后在Cloudflare上配置重写规则应该也行所以就写了个简单的脚本
```javascript
addEventListener(
"fetch",event => {
let url=new URL(event.request.url);
url.protocol="https";
url.hostname="example.koyeb.app";
url.pathname="/app" + event.request.url.substring(event.request.url.indexOf('/',8),(event.request.url + "?").indexOf('?'));
let request=new Request(url,event.request);
event. respondWith(
fetch(request)
)
}
)
```
这样访问网站的时候就不会遇到404的情况了。不过这样做还有一个缺陷就是HTTP_HOST环境变量会是错的有些程序会读取它导致链接可能会出问题这种情况就只能通过修改fastcgi的环境变量配置文件来解决了……
## 搭梯子的方法
一般租服务器,可能除了搭网站,就是搭梯子了。所以我想在建站的同时搭个梯子,正好网站也算是梯子的伪装了。
这次我搭梯子不想用v2ray了我想换个之前在Github上看到的一个重新实现的v2ray叫[verysimple](https://github.com/e1732a364fed/v2ray_simple)据说速度比v2ray要快很多不过它用的那个toml我看的不是很明白因为之前配了[Tor](/2022/11/16/tor.html)和[i2p](/2022/11/23/i2p.html),用到了路由功能,它这个路由功能……也没个文档,本来想给自己的服务器换一下,这看起来不知道怎么配就算了。不过在这个免费的测试机上不需要有那么多功能,只是当个普通梯子还是很简单的,而且它的配置文件能通过交互模式生成还挺有意思的。
像我的话配置文件很简单,就是这个样子:
```toml
[[listen]]
tag = "my_proxy"
host = "***"
ip = "0.0.0.0"
port = 8080
xver = 0
tls = false
path = "***"
advancedLayer = "ws"
protocol = "vless"
uuid = "***"
version = 0
[[dial]]
port = 0
xver = 0
protocol = "direct"
version = 0
```
然后在我的网站的nginx里配置相应的路由
```conf
location /***{
proxy_set_header X-Original-Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host ***;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "Upgrade";
proxy_pass http://127.0.0.1:8080;
}
```
就可以正常使用了试了一下效果还不错不知道这个流量是怎么算的Koyeb的面板上也没有关于流量费的介绍……难不成是不限流量
# 感想
免费的东西虽好不过既然Heroku都被薅没了Koyeb这种小白都能免费用的容器云……只能说且用且珍惜了……

View File

@ -0,0 +1,20 @@
---
layout: post
title: 如何自定义宝塔亚马逊S3云存储插件的端点
tags: [S3, 插件]
---
会点Python就可以自己改插件啦<!--more-->
# 起因
上次[用Koyeb安装了宝塔面板](/2022/11/29/free-server.html)之后在上面写了些测试用的网站,不过因为我开发网站的时候喜欢直接在面板上面改,本地基本上都是没代码备份的,不过最近宝塔面板好像有不少关于漏洞的传言,为了避免由于各种奇怪的事情把我的网站搞没,我想整点备份用的插件。
# 插件的使用与修改
宝塔面板的插件还是挺多的,想要备份的话支持的平台也挺多的,而且都很人性化,功能啥的小白也能操作的来。不过考虑到宝塔面板的不安全性,我也不希望我常用的网盘挂在上面当备份,万一被攻破了我网盘上的文件就被别人拿走了。
综合考虑下来什么OSS还是什么云盘感觉还是不太好选择但是S3 API兼容的平台还挺多的比如我[之前用过的4EVERLAND](/2022/10/19/web3.html)也有存储桶。另外之前随便逛的时候注册了一个Filebase也支持都是0门槛免费5GB。所以想用这个存我的备份文件。
不过宝塔面板上带的亚马逊S3云存储插件只能用亚马逊的云服务不能改endpoint……但是我也不想注册AWS除了看着难受不人性化而且好像免费用要绑信用卡最主要是我想备份到Filebase ~~不然白注册了?😂~~
所以我就去看了看这个插件的源代码还好代码是Python的理解起来倒是不难。最开始我是想着它会不会是直接通过HTTP API访问AWS S3的端点所以就直接各种搜索但是找了半天没看到一个和AWS有关的域名……看来投机取巧不太行……就只能慢慢看代码了。最终找了半天发现它好像用的一个叫boto3的库来连接AWS的……这名字起的是真的……我完全没法从这个名字中看出来它和AWS有半毛钱关系好像因为Boto是亚马逊河豚据说是粉色的尤其它代码里是通过`from boto3 import client`这种方式引入的代码里就没有和boto3有关系的词了……client这个词又很通用这代码看着是真的难受啊……
不过还好最终起码找到要改的地方了,其实很简单,它的“/www/server/panel/plugin/aws_s3/s3lib/client/aws_s3.py”这个文件是引入的关键其中`build_auth()`方法是连接S3的关键我在网上搜了一下boto3它也是支持自定义端点的只要在第100行后面加一个endpoint_url参数就可以了比如Filebase就加一句`endpoint_url="https://s3.filebase.com"`,保存之后其他的就在面板上配置就行了。
# 感想
这下就能看出来宝塔是有多垃圾了吧,明明就一个参数就能搞定的事情,它偏偏不给你加,而且就这样还啥功能都不支持,文件夹也删不了,也没法在面板里上传/下载文件而且还要给你装个boto3的依赖啥都不支持还要装个全功能的依赖实在是太垃圾了。不过小白不会写代码再垃圾的东西该用还得用吧🤣。

View File

@ -0,0 +1,44 @@
---
layout: post
title: 为自己的i2p站点添加一个SSL证书
tags: [SSL, i2p, 隐私, 网络]
---
虽然没啥用,不过很有意思所以还是整一个!<!--more-->
# 起因
在上个月,我用[i2pd](/2022/11/23/i2p.html)和[tor](/2022/11/16/tor.html)在两个不同的匿名网络上试着建了网站不过因为这些网络的特性他们不需要使用HTTPS访问就能保证内容不被窃取和篡改。不过SSL证书的意义不止这些还有一个很重要的意义是验证网站身份比如[Facebook](https://www.facebookwkhpilnemxj7asaniu7vnjjbiltxjqhye3mhbshg7kx5tfyd.onion/)就有一个被信任的EV SSL证书它的意义就是在保证其他人也偷偷算了一个facebook开头的域名家用电脑大概花1天左右的时间就能算出来时能很轻易的知道这个网站是不是真的Facebook的网站因为EV SSL证书的审核很严格基本上没办法去伪造一个相同公司的。Onion的DV SSL我查了一下普通人倒是也能整有家叫[HARICA](https://www.harica.gr/en/Products/SSL)的证书商家每年花30EUR就可以在上面买一个。不过我嘛……肯定是不愿意花钱的所以就打消了整Onion的证书的想法。
# 探索I2P的SSL证书
那i2p域名呢因为Tor有一定的政府背景而且有大公司撑腰所以受到了那些管理互联网的组织的承认才会被允许注册可信的SSL证书。而i2p怎么说还是一个比较小的项目虽然它可能是除了Tor外第二大的匿名路由网络不是Freenet之类的共享内容的网络那种东西没法交互不过没有靠山就不会被那些管理互联网的组织所承认也就不可能允许注册可信的SSL证书……那难道就没有办法了吗作为社区动力的项目什么政府啊还是什么标准化的组织都是没用的东西不被承认可以自己承认正好我在逛i2p那些网站的时候看到了一个由i2pd的开发团队PurpleI2P所维护的一个[CA](http://ca.i2pd.i2p/)从这个CA签名的证书虽然也只是自签名的但是他们开发的浏览器[I2PdBrowser](https://github.com/PurpleI2P/i2pdbrowser)内嵌了这个CA证书所以也可以看作是可信的证书了至少在这个浏览器上是。具体的申请方法很简单网站上都有说给作者发邮件申请就行了至于怎么用普通的邮箱给mail.i2p发邮件……只要把它替换成官方网关i2pmail.org就可以了。
虽然证书很容易申请但是申请下来的证书部署到网站上之后怎么才能被访问那还是挺麻烦的。因为网络上完全没有相关的教程毕竟i2p用的人就少i2pd更少用i2pd还整SSL证书的人可能全世界一只手都数得过来😂。这没办法我只能先看着i2pd的文档先自己琢磨结果怎么整效果都不对……没办法就只好问作者了他回复的原文如下
> It must be added like current tunnel for HTTP with same key. Example with HTTP and HTTPS:
> ```
> [website]
> type = http
> host = 127.0.0.1
> port = 8080
> inport = 80
> inbound.length = 2
> outbound.length = 2
> inbound.quantity = 3
> outbound.quantity = 3
> gzip = false
> keys = website.dat
>
> [website-SSL]
> type = server
> host = 127.0.0.1
> port = 8443
> inport = 443
> keys = website.dat
> ```
> Note that I use same key file both for HTTP and HTTPS tunnel, and HTTPS (443 port) using type `server`, because i2pd mustn't interact with encrypted by SSL data.
> Also, you can skip the i2cp options in the second tunnel, because they apply to all tunnels with the same key. The main thing is to write them only in the first tunnel.
这下我总算搞明白我之前配置的问题出在哪了😂它文档里写的关于inport的说明是“what port at local destination server tunnel listens to. Same as port by default”我看到它说的“local destination”以为是隧道访问的那个端口结果是面向隐形网络的端口……怪不得我配置之后返回的证书老是443端口的证书……而且http隧道文档里也没有说到关于inport的参数啊还有那个莫名其妙的ssl参数……这文档写的真是有点不太行……
按照邮件说明配置好之后总算可以正常访问了试了一下用I2PdBrowser访问我的网站终于出现了代表加密的小锁。
# 感想
不过他们对生成证书的要求实在是不严格我不需要证明任何东西就能获得任意i2p网站的SSL证书当然也起不到验证网站身份的功能不过由于这个网络的特点也没办法中间人攻击而且本来用的人就少估计他们也是当玩吧😂所以也没有认真搞。另外其实那个域名系统也一样注册也很随便……
不过搞的过程还是挺有意思的,如果有谁有兴趣也可以搞一个玩玩。

View File

@ -0,0 +1,23 @@
---
layout: post
title: 年终总结
tags: [总结]
---
&lt;/2022&gt;&lt;2023……<!--more-->
# 无止尽的……?结局?
本来这篇文章打算昨天就写的……结果昨天不知道什么原因发烧了😂。想着是不是感染了COVID-19不过拿抗原试纸测了一下好像也没事。emmmm本来就很糟糕的一年在最后也不忘送我一份礼物是吧😂。
# 2022年都干了什么
2022年我感觉更加的什么都不记得了……这种问题的严重程度就像从没有经历过这些事情一样。对于电脑来说什么东西最重要呢应该是硬盘上面存储的数据吧毕竟电脑有价数据无价。而对于人来说那就是记忆了吧。在我看来所有的想法和情感都是基于记忆实时演算出来的结果不过很遗憾的是人的记忆不能备份坏了就再也找不回来了就算用日记记录也只是生成了新的记忆而已。所以虽然能知道发生了些什么不过心中却毫无波动。
我看了看2022年写的文章基本上都是些解决问题的方案文章也比之前写的少了大概是因为记忆的积累变少了所以也想不出更多的东西了不过这也许不是一件坏事毕竟没有记忆就没有烦恼了这也就是为什么我现在内心毫无波动吧。
至于2022年周围发生的事情……可能是越来越糟糕了以致于我感觉再有两年差不多人类该灭绝了🤣不过如果能在有生之年看到人类的末日也不算坏事毕竟人类已经在这个星球也存在了几十万年了按平均100年左右的寿命来算在有生之年遇到人类末日假设在2024年的概率大概有个几十万分之一吧 ~~(感觉不太清醒,算错了不要叫我“数学奇才”,还有预言如果成真了也别🔪我🤣)~~
# 2023年想要做什么
毕竟没有过去就看不清未来当然如果就只是正常的活下去感觉也就是发生了什么去应对什么吧。2022年的Mayx Forever计划因为[Github](/2022/01/04/banned.html)的激励完成的还是挺不错的,看看博客的[代理列表](/proxylist.html)反代先不论镜像站也整了不少而且还在IPFS、AR和IC上整了备份尽可能保证了博客能存活的概率。不过要是说不止发生了人类灭绝的问题世界也毁灭了那当然所作的所有事情都失去了任何意义。当然如果考虑意义的话就没有意义了其实就算啥也没有死了还是啥也没有本来也看不见未来期望其他人看到也只是活着的时候在做梦罢了。不过也不是完全没意义毕竟这套方案除了在自己遇到问题保留信息之外还有反审查的的功能当我整出一套成熟的方案时其他人也可以用我曾经发现过的东西来做自己想做的事情。
至于其他的事情……也快到毕业的时候了,最后只要能正常的毕业那就还能继续漂流下去(不然就只能靠接单养活自己了(可能也不完全是坏事))。
总之接下来也没什么可期待的,我就想见证末日而已。
# 总结
这下感觉……总之接下来无论是我还是其他人可能都不会变得更好吧。其他的我也想不出来什么了。

37
_posts/2023-02-03-mbp.md Normal file
View File

@ -0,0 +1,37 @@
---
layout: post
title: MacBook Pro 2022 13寸使用体验
tags: [Apple, MacBook, 体验]
---
好用,但又不完全好用<!--more-->
# 起因
最近家里人送了我一台搭载了Apple M2芯片的MacBook Pro 2022 13寸笔记本电脑虽然我以前没用过MacOS不过我其实本来就打算买一台的只是我打算在我现在使用的天选坏了或者彻底过时的时候再换……不过问题也不大早有早享受嘛。
# 想买MacBook的理由
其实以前我是不喜欢买像苹果这种性价比低的产品的而且以前的MacBook确实也很烂CPU是很垃圾的Intel几款核心数少就很普通的那种电脑然后要是刷成Windows……估计花一半的价格就能买个同等性能的Windows轻薄本了。而且还有什么“梦幻单热管”之类的问题性能和寿命都非常差。不过2020年出的Apple Silicon M系列芯片还是相当厉害的性能提升是一方面功耗发热之类的表现都非常的不错不仅使用很安静续航还很长。这时候就让我回想起我以前想整的[云游戏](/2021/09/28/cloudgame.html)+轻薄本方案了当然MacBook在轻薄本里实在是太贵了毕竟我在用游戏本的这几年里感觉游戏本还是挺不方便的重倒是还好主要是续航不太行我的游戏本开省电模式基本上用4个小时就没电了而且风扇声音也很大有时候想不插电使用效果都不太好。另外我也不怎么打游戏很多时候我其实不需要性能有多强需要的时候再租服务器还是租云电脑都是个不错的选择。
# MacBook的使用体验
## 初体验
刚拿到这个MacBook之后从使用上来说倒是没有特别的不适应我不知道是苹果有优化过用户体验还是单纯因为自己用了一下上手还是挺容易的没有因为是第一次仔细使用MacOS以及Windows不一样的操作方式而不会用要硬说的话感觉也就是标题栏的关闭键在左边不太熟悉吧用两天就好了不过ctrl弄成两个还是挺不熟悉的搞了control和command两个按键导致在远程连接Windows以及使用终端时操作都挺别扭的比如复制文本在Windows上按control+c复制然后在MacOS上按command+v粘贴……不是很人性化。
除了系统本身的体验之外MacBook的触控板使用也非常的不错。大是一方面可以不抬手就完成移动鼠标和单击这个操作也很不错因为整个触摸板都可以按下去而且还有两段只不过重击我还没用过关于手势和快捷键估计得用很长一段时间才会熟悉吧不过还好就算不熟悉也不怎么影响使用。
## 应用体验
刚开始使用的时候我最想安装的就是Microsoft Remote Desktop因为之前有说要配合“云”一起使用那自然是要有个能远程连接的东西。那个软件国区Apple账号还没有我还得搜教程把地域改成其他国家……安装好之后连接上我办公用的电脑效果还不错用起来的感觉就像在MacBook上安装了Windows一样不过问题就是我前面说的ctrl键问题感觉比较难受……
随后我就安装了VSCode之前我在Windows电脑上安装的是Notepad++我之所以不想用VSCode就单纯因为它多整了一个浏览器感觉不太爽那个Notepad++作者搞什么键政辱华啥的我都不在乎但是他声明有可能会随机修改用户数据这个我就不太能接受了无论这是不是个玩笑但是但凡有一点点这种可能性我都不太敢相信这个软件了当然MacOS本来也装不了🤣另外我还想要用Github Copilot插件所以就考虑了一下还是用VSCode吧。
然后在操作的过程中感觉连接不是很通畅,下了个[V2rayU](https://github.com/yanue/V2rayU)。看着还挺不错结果导入的时候不支持自定义SNI搞得我只能自己修改配置文件感觉不太好……不过配置好了之后还是挺不错的总比自己运行V2ray然后设置代理方便吧。
然后就是虚拟机了毕竟MacOS支持的软件很少有时候可能无论如何都要使用Windows如果手头没个Windows就麻烦了所以还得装个Windows的虚拟机。不过我这个MacBook是8G内存的版本分配的时候只能分个4GWindows11启动大概吃掉12G现在软件吃内存也很厉害8G MacBook装虚拟机还是有点吃力了……当然为了应急吃力也还是得装吧。然后就是创建虚拟机的软件MacOS一般推荐的是Parallels Desktop不过那是个付费软件我买不起那种东西那对于ARM64架构的目前应该就VMWare Fusion Player、VirtualBox和[UTM](https://github.com/utmapp/UTM)吧据说UTM基于QEMU功能更加强大我也懒得三款都测一遍了而且UTM有上架Apple Store的版本用着也更放心。
整虚拟机的时候为了搞Windows11的镜像我按着教程又下了个HomeBrew据说这个就相当于在MacOS上的apt一样的东西了之后安装命令行需要的软件就方便很多了。
另外为了能看Bilibili港澳台的动画我还需要安装Tampermonkey插件看了一眼还要2USD……看了看旁边还有一个叫做Stay的插件能提供差不多的功能还是免费的于是也装了一个。虽然也不是不能装Chrome不过对我来说只要系统自带的浏览器不是IE那种大多数网页都没法访问的情况那就不会去安装第三方的浏览器了不过Safari装插件还是挺麻烦的也没有Chrome的插件多还好油猴的脚本很多就可以代替那些插件的功能了所以装个Stay就够用了。
还有为了处理文档Microsoft Office试了一下要花钱还不能用E5试用的订阅没办法就只能再装个WPS Office了MacOS上的WPS Office倒是还好没有Windows上那么多广告不过好多模板还有些什么转换之类的功能还是付费的不过我一般用不上应该影响也不大。
最后为了能连接手机传输文件安装了一个Android文件传输MacOS居然原生不支持MTP协议实在是不太行……这个电脑就两个Type-C的USB口充电线是两边都是C口的用来连接手机还挺不错的。
## 游戏体验
众所周知MacBook很不适合用来打游戏因为大多数游戏都是在Windows上编写的。不过我已经安装了Windows11ARM的虚拟机如果用来跑游戏效果会怎么样呢我从我原来用的电脑上传了一个Galgame过来打开试了一下卡的不得了不知道是因为没法调用显卡还是怎么回事感觉帧率就10fps的样子我在我原来的电脑上运行了一下试了试运行非常流畅。连运行Galgame都这么垃圾其他游戏估计更不用说了。不过这估计也是因为是虚拟机的缘故所以我想找找MacOS支持的游戏。去Apple Store下载游戏……都要花钱不过我看到我的MacBook作为Pro有个Touch Bar所以想整个Touch Bar的游戏正好看到了个打砖块试了试效果还不错。
当然用MacBook光看打砖块流畅那就没啥意义了所以再升点级试试三维弹球吧😝之前我在网上看到一个开源版本的三维弹球叫做[SpaceCadetPinball](https://github.com/k4zmu2a/SpaceCadetPinball)是用Windows XP自带的那个版本逆向出来的我看了一眼是支持在MacOS上运行的于是就下载下来编译了一下效果确实不错不过我又试了一下在Windows原生的版本一样很流畅啊😂而且不知道为什么感觉开源的这个版本缓冲器不太对劲弹的没原生的舒服……这试游戏没必要针对弹球游戏吧😂。
不过我也不知道MacOS支持什么游戏想了想我在Epicgames上白嫖了不少游戏干脆下载下来看看都有啥支持吧。看了一圈while True:learn()居然支持然后就下载下来试了一下不过这个基本上也没啥特效啥的就是那种逻辑推理游戏也展现不出什么不过我原来的电脑运行这个游戏的时候风扇就开始高速转起来了MacBook能完全没声音应该还是证明有点东西的。
不过我也不一定非要考虑电脑游戏我也可以考虑一下手机游戏毕竟MacOS在M系列芯片上是可以运行iOS软件的不过系统做了一些限制不是所有都支持所以我就下了一个[PlayCover](https://github.com/PlayCover/PlayCover),在上面安装了公主连结 Re:Dive。效果还挺不错的完全不卡不过运行的时候可以明显感觉有点开始发热了我浏览网页看视频的时候完全不发热看来这个游戏还是挺费资源的。
## 综合体验
经过这些天的使用我感触最深的就是这台电脑的续航了别说一天不充电感觉两三天不充电都没问题毕竟标称续航是20小时可以算是续航最强的笔记本电脑了。不过这样的话感觉就更像是大号手机/平板那样了用的时候不充电24小时不用关机感觉和手机差不多相比平板功能还是更多要是说用iPad那个东西可没有终端越狱也还是比不了MacOS。而相比Android平板我之前还在上面[试过Termux](/2022/02/15/termux.html)不过问题和越狱差不多支持的东西还是不如MacOS虽然MacOS也不是开源的但是对我来说我感觉那个终端就像Linux那个终端差不多加上HomeBrew效果还是挺不错的另外MacBook比平板的续航更长就是重量也更重了。
# 感受
总的来说从体验上来说还是挺不错的触控板的操作还有续航啥的都挺不错的还有虽然这款MacBook是用的2016年的模具但是我真没用过Touch Bar可能确实挺鸡肋的但是还是挺好看的Fn功能键也没有很高的使用频率不过感觉可能也就这样了只能拿来看看视频写点代码啥的有些关键性的东西以及打Galgame都还只能用我原来的Windows电脑还好这些可能不是用的特别多的情况也许调整好之后我可以把我所有的东西都迁到这个MacBook上然后关键的东西用云电脑呢。

51
_posts/2023-02-22-cron.md Normal file
View File

@ -0,0 +1,51 @@
---
layout: post
title: 使用CF Workers Cron触发器进行签到
tags: [Javascript, Cloudflare, cron, workers]
---
Github Actions(×)Cloudflare Workers(√)<!--more-->
# 起因
前几天,我的[云·原神签到脚本](https://github.com/Mabbs/MHYY-AutoCheckin)被Github Ban掉了其实我非常能理解这种情况实际上用Actions做签到确实太重了。毕竟启动一个Actions需要的资源还算比较多相当于开一个Docker容器然而实际上做的事情却是很简单的请求一个接口罢了。而专业的全自动签到者有更专业的选择比如[QianDao](https://github.com/qiandao-today/qiandao)可以挂很多签到脚本而且操作非常简单只是需要服务器……而我为了能保证优质的签到水平用这种东西显然还是不够稳当服务器还会到期呢所以像这种简单的事情我觉得还是应该用Cloudflare Workers来做更好。
# 使用Cloudflare Workers Cron触发器
其实有一说一我的Javascript并不怎么样不过至少文档我还是能看懂的Workers进行网络请求不需要用XHR这样奇怪的东西我感觉它应该是基于Node.js的看了一眼是用fetch函数去进行网络请求的 ~~(……又不是没用过,以前不还拿[Workers写反代](/2021/03/02/workers.html)嘛……)~~ 另外又看了看Cron触发器的文档然后根据之前那个Python版因为懒得分析哪些请求有用没用了反正就三个都弄上吧……最终总算是知道怎么写了。于是代码如下
```javascript
addEventListener('scheduled', event => {
event.waitUntil(
handleSchedule(event.scheduledTime)
)
})
async function handleSchedule(scheduledDate) {
const init = {
headers: {
'x-rpc-combo_token': '填入Token',
'x-rpc-client_type': '2',
'x-rpc-app_version': '3.4.0',
'x-rpc-sys_version': '11',
'x-rpc-channel': 'mihoyo',
'x-rpc-device_id': '填入设备ID',
'x-rpc-device_name': '填入手机名称',
'x-rpc-device_model': '填入手机型号',
'x-rpc-app_id': '1953439974',
'Referer': 'https://app.mihoyo.com',
'Host': 'api-cloudgame.mihoyo.com',
'Connection': 'Keep-Alive',
'Accept-Encoding': 'gzip',
'User-Agent': 'okhttp/4.9.0'
},
};
console.log(scheduledDate);
console.log(await fetch("https://api-cloudgame.mihoyo.com/hk4e_cg_cn/wallet/wallet/get", init));
console.log(await fetch("https://api-cloudgame.mihoyo.com/hk4e_cg_cn/gamer/api/getAnnouncementInfo", init));
console.log(await fetch("https://api-cloudgame.mihoyo.com/hk4e_cg_cn/gamer/api/listNotifications?status=NotificationStatusUnread&type=NotificationTypePopup&is_sort=true", init));
}
```
至于怎么获取Token之类的参数用HttpCanary之类的抓包就好了不过要先启动云·原神之后再抓包不然程序貌似会检验SSL证书是不是合法的然后就退出登录了……抓到之后随便点开一个请求里面就有上面的值了根据情况填到上面就行了。
还有Workers的配置就很简单了把代码粘到Workers里面之后在触发器里面的“Cron 触发器”中设定时间就行了一般就一天一次反正它能自动生成Cron表达式也不用自己写要不写“0 0 * * *”也行,然后就什么都不用做了。
# 感想
写完这个签到脚本之后我觉得应该鼓励大家都去使用Workers这种方法去进行签到Cloudflare可不会因为这种东西去Ban你的东西至于Actions应该更多用于更需要计算资源的事情比如编译代码啊或者生成静态HTML还是日报之类的签到啥的确实是太浪费了而且还会Ban
还有就是云函数啥的……不过那个貌似本质来说还是Docker它运行时是一个完整的环境不像Workers那样应该是运行在一个更加轻量的沙箱里的也许还更环保呢XD。

View File

@ -0,0 +1,21 @@
---
layout: post
title: PHP异步执行的探索
tags: [PHP, 异步]
---
看来异步总是个难以解决的问题啊……<!--more-->
# 起因
最近我在写一个ThinkPHP框架为基础的代码时遇到了一个问题我希望在执行完一个操作后立马返回数据然后在后台继续运行一个比较耗时的东西。我以前写的一个[图片机器人](/2021/02/23/picbotpro.html)其实也遇到过这种问题为了解决返回很慢的问题我采用了“离弦之箭”——使用file_get_contents函数请求自己并且使用'timeout'参数来防止页面挂起,另外接收的部分使用`ignore_user_abort(true)``set_time_limit(0)`保证在请求结束时让程序依然继续运行。不过我用的是TP框架啊不知道用那两个函数会不会出问题还有这个“timeout”到底填多少比较合适也不确定所以就想试试别的方法。
# 探索异步的方法
对于正规的情况来说直接去网上搜如何让PHP异步执行代码估计大多会说使用什么消息队列或者用什么Swoole框架吧或者简单点用popen函数来fork一个进程或者用什么fsockopen貌似原理和我用file_get_contents函数差不多其实吧我觉得从本质来说那个所谓的Swoole框架已经不算PHP的东西了我觉得它更像是一个能通过http请求的popen函数通过某种方式也一样是在本地去调用PHP脚本只是可能用了些什么比如线程啥的特性提高了性能而已。
我看完这些选择之后很不满意我不希望代码里出现popen这样的函数说实话这是个危险的函数绝大多数情况下服务器应该要禁用这种函数的毕竟如果因为某些原因被人上传了PHP木马他们可以直接用这个函数去执行命令了。至于什么乱七八糟的异步框架想不想学是一方面主要是我的项目还没有达到用这种东西的规模。那难不成我只能继续用之前图片机器人的那个“离弦之箭”的办法了吗
后来我找到了一个很不错的函数,叫做[fastcgi_finish_request](https://www.php.net/manual/zh/function.fastcgi-finish-request.php)它可以在程序结束前把要输出的东西输出并且结束请求不过使用它以后看文档说明好像说推荐再执行一下session_write_close函数不然在这个程序执行完成前session会被锁住没法操作。
不过这个函数只能在使用PHP-FPM的时候使用如果是像Apache那样使用模块的方式运行PHP估计就用不了了当然目前大多数环境应该都用的是Nginx+PHP-FPM吧我反正是很少见到有人用Apache虽然听说那样性能似乎会更好
还有一个问题就是如果这个需要运行的脚本的时间太长了以至于同时运行这个脚本的进程数量超过了pm.max_children那么PHP-FPM就不能接受新的请求了这也是一个缺陷。
另外在这种情况下我使用了TP框架还会遇到一个问题那就是我不能使用return返回内容了毕竟return了之后就不能执行其他函数了啊所以就只能提前用echo之类的东西输出执行完fastcgi_finish_request和所有需要长时间运行的代码后就只能return空值或者直接exit吧。
# 感想
看来用PHP来做异步果然是难事啊不如说大多数程序想要处理好多线程的问题都挺难的吧也许如果项目经常遇到这种问题应该考虑用其他语言来编写了呢。

26
_posts/2023-04-05-ai.md Normal file
View File

@ -0,0 +1,26 @@
---
layout: post
title: 关于最近人工智能的探索
tags: [AI, LLM, 人工智能]
---
最近人工智能发展的还真是不错啊……<!--more-->
# 起因
最近ChatGPT为代表的人工智能发展的越来越好了而且因为它对生产力的提升使得了解AI的人也越来越多了。虽然我也不算是对AI很感兴趣但是我在Github Copilot刚出的时候就已经用上了到现在一直在用不过毕业了以后估计就用不了了吧😂。不过那时候Copilot毕竟专业性比较高知道的人也比较少不像现在ChatGPT能在各行各业使用甚至还有基于类似模型的Vtuber比如[Neuro-sama](https://www.twitch.tv/vedel987),所以即使是普通人使用它,都能够减轻自己的工作压力,所以现在的人们都在讨论它。
当然在这之前还有一些很厉害的画图AI比如使用了Stable Difusion的NovalAI以及Midjourney啥的不过因为我对画图并不感兴趣所以它发展的有多好也基本上和我没有关系。其实除了这些能够AIGC的模型之外在那之前还有下围棋的AlphaGO啥的那个我就更不感兴趣了相信大多数人也不感兴趣所以总的来看也就只有现在才能证明AI发展到了能够让大家觉得能干涉到更多人的地步吧。
也正因为现在以ChatGPT为代表的LLM的发展开源社区也开始搞起来一些有意思的东西。不过LLM的训练成本比较高所以现在开源社区在这一块的发展也许得感谢比如Facebook的[LLaMA](https://github.com/facebookresearch/llama)之类基础的模型才能让大家能用较低的成本去训练属于自己的AI吧。
# 关于LLaMA衍生的模型体验
在刚开始LLaMA被Facebook开源的时候GitHub上就出现了[llama.cpp](https://github.com/ggerganov/llama.cpp)这个项目因为我没钱买显卡手头只有笔记本电脑上的一张非常垃圾的GTX1650Ti 4GiB显存的显卡多亏了这个项目可以让我这种没显卡的人也能体验LLM的乐趣。而且这个项目使用起来非常简单不像很多AI项目还要装什么TensorFlow啊还是什么PyTorch啥的那些东西不仅大还非常的挑版本这个项目运行的时候就什么都不用考虑对使用者来说非常的友好像清华那个[ChatGLM-6B](https://github.com/THUDM/ChatGLM-6B)我就完全跑不了它要想正常体验得要有8GiB的显存我就没法整这种东西了。
我体验了那个最开始的LLaMA-7B的模型效果其实不怎么样根本没法流畅对话不过也能理解因为它应该相当于是把一堆数据堆到一起的东西吧也没有针对对话进行训练。不过很快斯坦福大学对这个模型进行了Finetune制作出了[Alpaca](https://github.com/tatsu-lab/stanford_alpaca)当然这个仓库里面的东西是纯粹的菜谱和食材把他们加工成模型得要整一堆A100的显卡跑几个小时这个我可整不来不过还好有人根据这个原材料加工成了完整的模型现在去🤗上就能下载的到比如去[这个仓库](https://huggingface.co/chavinlo/alpaca-native)就能下载到训练好的模型,在[这里](https://huggingface.co/Pi3141/alpaca-native-7B-ggml)可以下载到已经经过量化直接可以给llama.cpp使用的版本不过现在llama.cpp升级了得要按照说明在仓库里执行那个Python脚本进行转换才能正常使用
我运行这些东西是在我的Macbook Pro上它只有8GiB的内存所以只能跑7B70亿参数的模型不过就这个模型也已经非常厉害了虽然只能说英文但是流畅程度上下文关系的能力都非常不错而且常见的知识都能正确回答效果让我很满意。不过8GiB内存实在是太小了想跑点别的也没办法……不过16GiB内存的电脑我还是能找得到的我找了台CPU是i7-11700K的台式机跑了下[使用GPT-4对话数据微调的13B模型](https://huggingface.co/Pi3141/gpt4-x-alpaca-native-13B-ggml)速度比M2芯片跑的速度感觉慢了至少5倍吧Macbook生成的速度基本上能达到对话的语速台式机跑的速度那就是一个一个词往出蹦这下就能感受到M2芯片的计算能力还是强大啊4大核+4小核比8核16线程还要厉害苹果的产品属实有点东西😝不过这个13B的模型也确实厉害有些7B的模型回答有错误的部分这个13B的都能正确回答如果我能整个16GiB的Macbook可能就能完整体验了吧可惜苹果家的内存比金子都贵实在是买不起啊……
斯坦福的这种Finetune方法成本还是有点高所以后来又有人研究出了一个叫[LoRA](https://arxiv.org/pdf/2106.09685.pdf)的办法去Finetune模型据说只要一张普通的显卡就可以进行不需要一堆高级显卡也能跑不过再低级的显卡也不是我这GTX1650Ti能碰瓷的所以我也只能看看别人训练的模型啦。在看的时候我发现了一个用的中文训练集跑的模型项目[Chinese-LLaMA-Alpaca](https://github.com/ymcui/Chinese-LLaMA-Alpaca)看起来还挺有意思的不过他们似乎担心什么版权问题只放出了LoRA权重没有完整的模型就相当于是没有面饼的泡面只有料包好在他们倒是给了去哪里找面饼。不过泡面的这个过程对我来说也挺难的合并它需要13-15GiB的可用内存16GiB的内存肯定不够用所以得找一台32GiB内存的电脑不会有人组非2次方倍数内存的电脑吧……我手头没有还好从网上找了台免费的云主机整了个32GiB内存的才成功的把这碗面泡出来了。虽然泡面的步骤不多也不算特别难只是我是觉得干嘛同一碗面泡那么多次不如我提前泡好直接放网上所以我也在🤗上上传了最终合并并量化的模型[在这里](https://huggingface.co/Mabbs/chinese-Alpaca-lora-7b-ggml)就能下载到直接就能拿来用的模型了。至于运行的参数就按照之前仓库的操作就行了。
# 让M2芯片发挥更大的作用
在我玩完那个llama.cpp项目之后我觉得让M2芯片光用CPU算好浪费啊毕竟这个芯片里面还有神经网络引擎和GPU啊这些哪个都比CPU算更好吧不过想要调那些东西进行人工智能计算貌似只能用苹果的Core ML框架。这两天我在Github看到一个苹果官方发布的[Core ML Stable Diffusion](https://github.com/apple/ml-stable-diffusion)看起来还挺有意思的我倒是也想在我的Macbook上跑一下正好🤗开发了一个示例[Diffusers](https://apps.apple.com/app/diffusers/id1666309574)可以拿来试试看可惜8GiB内存还是限制了它的发挥跑是能跑速度也挺快的就是模型没法换因为内存也只能跑小的模型跑出来可以说真的就是那种抽象的不能再抽象的东西吧……不过不管怎么说这还是发挥了一下神经网络引擎和GPU的作用吧不然感觉苹果做了这些东西就没啥作用了😂。
# 感想
从这次体验来看我对开源社区的AI发展感觉还是挺有信心的虽然相比于ChatGPT之类的来说可能还没办法当作生产力不过毕竟它比较平民化至于知识量少的问题如果开发者们能加把油能让这些模型对接网络那也许就可以在很低成本的情况代替OpenAI的ChatGPT吧也能避免他们服务器出问题之类的原因导致生产力的下降吧。不过开源这种事情还是有点……毕竟还是不希望这些东西被人拿去商业化更不希望出现国外一开源国内就自研这种糟糕情况也许开源产品比不上人家的商业产品也是正常的。

View File

@ -10,12 +10,11 @@ tags: [links]
| - | - |
| [花火学园](https://www.sayhuahuo.com/) | 和谐融洽的ACG交流以及资源聚集地 |
| [资源统筹局](https://gkdworld.xyz/) | 统筹保管用户分享的资源 |
| [贫困的蚊子](https://qwq.moe/) | *No description* |
| [贫困的蚊子](https://mozz.ie/) | *No description* |
| [极客兔兔](https://geektutu.com/) | 致力于分享有趣的技术实践 |
| [维基萌](https://www.wikimoe.com/) | 萌即是正义一名热爱acg的前端设计师的小站 |
| [7gugu's blog](https://www.7gugu.com/) | 一个用来存放我爱好的地方,编程,摄影之类的空间 |
| [云游君](https://www.yunyoujun.cn) | 希望能成为一个有趣的人。 |
| [探索子](https://beyondstars.xyz/) | 迈向未知·探索边界 |
| [云游君](https://www.yunyoujun.cn/) | 希望能成为一个有趣的人。 |
| [Kingfish404](https://blog.kingfish404.cn/) | Stay curious,stay naive. WUT. Jin Yu's Blog |

View File

@ -9,12 +9,14 @@ title: 代理列表
考虑到中国对于Github Pages在很多地区都有一定程度的解析异常所以我为我的博客做了很多反向代理。以下代理站均为官方授权
(根据可能的可用性排序)
- <https://blog.mayx.workers.dev/>
- <https://mayx.deno.dev/>
- <https://mayx.cyclic.app/>
- <https://mayx.glitch.me/>
- <https://mayx.mabbs.repl.co/>
- <https://blog.mayx.cf/>
- <https://blog.mayx.tk/>
- <https://yuki.gear.host/>
- <https://mayx.tech/>
- <https://mayx.tech/>
# 镜像列表
由于[Github已经不再可信](/2022/01/04/banned.html),所以现在提供以下镜像站:
@ -22,7 +24,9 @@ title: 代理列表
- <https://mayx.pages.dev/>
- <https://mayx.eu.org/>
- <https://mayx.vercel.app/>
- <https://mayx.4everland.app/>
- <https://mayx.netlify.app/>
- <https://mayx.4everland.app/>
- <https://xu4qy-yiaaa-aaaag-aa2iq-cai.raw.ic0.app/>
# 其他平台博客(备用)
- <https://unmayx.blogspot.com/>
@ -34,3 +38,4 @@ title: 代理列表
- <https://mayx.cnblogs.com/>
- <https://mayx.xlog.app/>
- <https://mayx.proselog.com/>
- <https://mayx.substack.com/>