chisel 是一个在 HTTP 协议上的 TCP/UDP 隧道,使用 Go 语言编写,10.9 K 星星。
工具采用 HTTP 进行数据传输,将 TCP 和 UDP 封装在 HTTP 隧道中。可以用来做 [[内网穿透工具]]。
chisel 只有一个二进制可执行文件,客户端和服务端都包含在内。
在之前的文章中,介绍过不少内网穿透的工具,比如 [[frp]],[[nps]],还有一些已经非常成熟的商业化工具 [[Tailscale]] ,[[ZeroTier]] 等等,感兴趣可以查看历史的文章。
chisel 这一类的工具可以有很多种用途,比如常见的端口转发,内网穿透等。
直接通过 GitHub release 获取二进制
或者通过 Docker
docker run --rm -it jpillora/chisel --help
或者 Go
go install github.com/jpillora/chisel@latest
macOS 下也可以
brew install chisel
比如一台内网的服务器 10.0.0.1 上有一个本地端口 8000 的服务,目前没有暴露给外部访问。如果要在另外一台机器上能访问该服务。可以执行如下的操作。
在这一台服务器上执行 chisel 服务端,暴露 12000 端口
./chisel server -p 12000
在另外一台服务器 10.0.0.2 上,保证可以访问 10.0.0.1,然后执行
./chisel client 10.0.0.1:12000 28000:127.0.0.1:8000
这样就将 10.0.0.1 的本地 8000 端口,转发到了 10.0.0.2 机器的 28000 端口,此事在 10.0.0.2 机器上到 28000 的访问,就会通过 chisel 转发到 10.0.0.1 机器的 8000 端口。
比如可以用 Python 直接起一个测试的服务 python3 -m http.server --bind 127.0.0.1 8000
刚刚上面的操作是通过在 10.0.0.2 机器作为 chisel 的 client。
同样也可以将 10.0.0.2 作为 chisel 的 server,比如在 10.0.0.2 服务器上
./chisel server -p 12000 --reverse
开启 reverse 之后,表示服务器端使用反向模式,流量转发到哪一个端口由 client 端指定。
然后在 10.0.0.1 服务器上执行
./chisel client 10.0.0.2:12000 R:28000:127.0.0.1:8000
此时 10.0.0.2 机器上也可以通过 28000 端口来访问 10.0.0.1 的 8000 端口。
除了直接转发 HTTP ,chisel 也可以设置 socks 代理。
比如在服务器中执行
./chisel server -p 12000
客户端可以
./chisel client server_ip:12000 socks
这个时候就默认开启了一个 1080 端口的 socks 代理,当然这个端口可以自己设置,结合 Socks 代理工具,或者 Proxychains 等工具就可以直接利用这个 socks。
经过上面的说明,既然 chisel 可以作为 Socks5 代理,那么其实用来作为穿透 GFW 的工具也是可以的
在公网的服务器上
chisel server -p 3000 --socks5
然后在本地执行
chisel client server_ip:3000 socks
前两天看到 Twitter 上有人发帖说求推荐 CDN,突然发现很多人其实不知道 Bunny CDN,虽然这一家 CDN 成立时间比较早了,但是很多人还是只知道大名鼎鼎的 Cloudflare。这里就简单的介绍一下这个 CDN 吧。
Bunny 是一家成立于 2014 年的 CDN 加速服务商,提供快速、强大且价格实惠的 CDN 加速服务,总计 80Tbps+网络,连接 3000 多家 ISP 和 14 家一级传输提供商,采用顶级 AMD CPU 和 NVMe+ SSD 服务器,平均 24 毫秒延迟,并提供最先进的 DDoS 缓解安全措施,帮你的网站抵御任何攻击。
Bunny 的域名 DNS 解析服务除了基本功能还具有负载均衡、地理/延迟智能解析,还可使用编写脚本的 DNS 记录简化部署、做出智能路由决策。另外,bunny.net 还提供对象存储、网站压缩优化、在线视频存储播放等服务。
Bunny CDN 提供节点非常地多,其中亚太节点在二十多个,包括日本东京、韩国首尔、中国香港等,这些节点都是连接速度快节点。
简单注册个 Bunny.net 账号就可以获得 14 天 1TB 流量免费试用,并且还可以使用优惠码免费充值 5 美元额度!按照最低 0.01 美元/GB 的定价这 10 美元免费额度可以用 1TB CDN 流量,当然也可以用于使用 Bunny 的域名 DNS 解析、对象存储、网站压缩优化、在线视频存储播放等服务。
如果你也想尝试一下 Bunny 可以点击这里 访问。
注册账号之后,记得在站内兑换优惠码,价值 5 刀,BUNNYFIVER
,如果兑换码出现问题,欢迎加入讨论群一起讨论。
和大多数 CDN 的设置一样,当注册完成账号之后,可以点击页面中的 「Add Pull Zone」 创建 CDN。
填入自定义的 Pull Zone Name,然后在 Origin URL 中填入需要加速的网站地址。接下来根据自己的需求选择 CDN 地区,页面上也会表明不同地区的价格。
然后绑定自定义域名,因为 Bunny 默认的域名是 xxx.b-cdn.net ,你可以根据自己的需求比如将静态资源全部设置为 asset.your-domain.com 这样,那么直接在 Add Custom Hostname 中添加自己的域名即可。
添加完成之后需要配置 DNS 的 CNAME 记录,比如将 asset.your-domain.com 指向 Bunny 给出的 Hostname。等待 DNS 解析完成即可使用自己的域名来访问 CDN。
Bunny 也提供免费的 SSL 证书,到页面上一键申请即可。其他 CDN 的设置根据自己的需求进行设置即可。
今天早上看到一篇 WSJ 的分享,但是点进去发现竟然只能看个开头,所以兴起整理一下这篇文章。
之前我就知道一个叫做 bypass-paywalls 的插件,但是因为因为更换电脑 所以 Chrome 上没有配置,所以立即设置起来。
git clone [email protected]:iamadamdev/bypass-paywalls-chrome.git
cd bypass-paywalls-chrome
cd build && sh build.sh
然后将此文件夹拖拽到 chrome://extensions
。
但当我安装完成之后发现,WSJ 可能检测到了该插件,查看 Chrome 的请求,直接返回 401,感觉应该就是检测并且屏蔽了该插件。
于是我就又找了一个插件 Bypass Paywalls Chrome Clean,这个插件在原来的插件基础上,增加了一个非常独特的功能,那就是当发现内容已经被 archive.is 等内容缓存的时候,就直接将网页内容替换为缓存的内容,间接实现了绕过付费墙的目的。
Bypass Paywalls Chrome Clean 的安装也非常简单,直接 clone 项目,然后拖拽到 Chrome 即可。
最后再补充一个网站,把链接直接输入进去,可以查看原文
Teable 是一个非常快,实时,专业,开发者友好的 No Code 数据库。Teable 构建在 PostgreSQL 之上,使用一个简介的,表格类似界面,可以基于此构建复杂的企业级别的数据库应用。
Spreadsheet-like 界面
多视图
以特定的方式显示数据
速度快
SQL 支持
Privacy First
实时协作
扩展性
Automation 自动化
Copilot (即将推出)
关键词说明:
在 GitHub Trending 上看到这个项目就点开来看了一下,直接拉下来代码,看到当前项目的完成度还不错,直接在服务器上就跑起来了,但看到官方的说明,项目还在构建当中,还有很多功能在慢慢推进,我自己的话还没有来得及每个功能都尝试一遍,但以当前的完成度,还是果断关注一下,这个项目的想象空间还是挺大的,毕竟有了灵活的数据库可视化,很多服务都可以被代替掉。
Devin 是 Cognition 发布的一款完全自助的 AI 软件工程师。1
Fully Autonomous AI Software Engineer Devin 完全自主人工智能软件工程师 Devin
Devin 主打的就是通过 prompt 自主的学习,编写,调试,甚至可以进行部署。在 Cognition 发布的视频来看,Devin 至少能够
和传统的 AI 对话框不一样,Devin 自带了命令行,编辑器,甚至还自带了一个浏览器。
伴随着 Devin 的发布 DHH 也发布了一篇博文《Developers are on edge》,讲述了 AI 可能对程序员造成的影响,他说到现在软件开发行业遭受着双重打击,一方面科技行业一直在裁员,而另一方面还要面临 AI 带来的巨大威胁。
That’s the trouble with The Future. It’s awfully difficult to predict when it’ll actually arrive. All we’re doing is making bets and taking guesses.
文中 DHH 做了一个非常形象的比喻,过去农业需要全球 97% 的人参与其中,而今天只需要 2% 的人口。尽管农业生产总价值上升了很多,但是从事农间生产的人却少了很多很多。归咎其原因就是因为科技发展所带来的自动化进程,使得从事农业生产的人只需要动一动手指就可以管理大面积的农田。
那未来程序员的职业何尝不可能发展成这样呢?或许 AI 的发展会使得软件开发行业面临前所未有的变化,当软件行业不再需要那么多程序员进行手动编程的事后,这一个行业可能就已经达到了顶峰,但 DHH 也说了这并不意味着这个行业的小时,而更可能会让 AI 在社会生活中被更广泛的使用和融合,软件行业可能不需要那么多的手工编码程序员,但是他所产生的价值却还是会给社会带来巨大的福利。长期来看,没有任何职业可以成功抵御因为技术进步所带来的自动化而遭淘汰的命运,积极地拥抱变化,看向未来才是当下我们所能做的最后一件事情。
长桥证券 是一家创立于新加坡和香港的证券经纪服务商,创立团队来自阿里巴巴,字节跳动等互联网企业,于 2019 年 3 月正式成立,总部位于新加坡。 集团旗下长桥证券(香港)有限公司(中央编号:BPX066)持有香港证监会第 1、4、9 类牌照。
因为开户奖励在不同的时间都不一样,截止 2024 年 3 月
点击这里 在线开户,如果你觉得本文对你有用,也可以填入我的邀请码 V24JAH。
根据不同的提款方式和到帐时间收费不同。
总体评价,作为一个初创公司,在应用的使用体验,以及出入金的友好度上,个人感觉都比[[老虎证券]]方便很多,而费用方面则要比[[富途证券]] 优惠一些,但还是没有 [[华泰证券]] 便宜。
点击这里 在线开户,如果你觉得本文对你有用,也可以填入我的邀请码 V24JAH。
开户的过程也比较简单,上传自己的身份信息,根据自己的真实情况填写即可。
如果有港卡的情况下,非常简单,通过银证转账,[[eDDA 快捷入金]],[[FPS 转数快]],网银转账等方式入金。
长桥证券支持的入金银行非常多,相信从列表里可以直接找到你的银行。
银证转账是指资金在银行账户与证券账户之间的划转服务,可以直接把银行资金转入证券账户,也可以直接把证券账户资金提取到银行账户。无需通过网银汇款,也无需在券商网站发送通知,具有方便、快捷、安全的特点。
eDDA 快捷入金是香港金管局推出的 FPS 转数快系统增值服务,支持客服授权港股证券从指定银行账户将资金存入证券账户。
eDDA 快捷入金是一种高效入金方式,基于 2018 年香港金管局推出的实时转账平台 FPS(Faster Payment System)转数快系统所研发。简单来说就是,客户完成银行账户授权后,后续可直接通过券商端发起入金。
eDDA 快捷入金目前仅支持港元。
FPS 中文名「快速支付系统」(FPS 转数快),是香港金融管理局于 2018 年 9 月 30 日推出的全面连接银行的快速支付系统,由香港银行同业结算有限公司负责运作,费用全免,可以做到 365 天 x7x24 小时即时跨行转账。
本文记录一次令我非常无语的文件上传大小限制的问题。之前也提到过我开了一档《暮色时光》的播客,那为了方便,我就直接使用 WordPress 的 Media 来管理我自己的音频文件了,但是最近一期聊《台湾》相关的内容,时长超过了 1 个小时,所以导出的文件有点大(102MB),稍微超过了我预期的 100MB ,这导致我需要调整 WordPress 文件上传的限制。那我一想这个也简单,之前也调整过,无非就是调整一下 Nginx 和 PHP 的配置,重启一下服务就行,谁知道我在这么个简单的事情上竟然又浪费了几个小时。
按照我之前的经验,无非就是调整一下 PHP 的配置文件。
因为我直接使用的 HestiaCP ,登录后台之后,点击右上角的齿轮,进入系统设置,然后在其中找到,我使用的 PHP 版本,点击编辑配置,立即就可以看到 PHP 相关的配置,HestiaCP 也非常人性化的将常用的配置列了出来。
那这个地方只需要修改
post_max_size
upload_max_filesize
memory_limit
max_execution_time
max_input_time
这几个值。然后点击保存之后, PHP 会自动重启。
这个时候我去后台看,WordPress 已经将文件上传的限制放宽到了 256 MB 大小,我尝试上传,发现上传接口 Pending。
于是我想是不是 Nginx 配置里面 client_max_body_size
配置有限制,于是直接看 HestiaCP 后台的 Nginx 配置,但发现这不是问题啊,现在的大小就已经足够。
于是我想难道是配置没有生效,在 HestiaCP 后台,通过 SSH 登录服务器,直接重启了 PHP,Nginx。
然后在 PHP 目录里面创建了文件 test.php ,直接放入
<?php phpinfo(); ?>
访问,发现 PHP 已经生效了上传限制。
重新尝试,接口还是 pending。
于是我想难道是 WordPress 自身做了什么限制?但之前也没有遇到过类似的事情?但网上查的时候有人说还需要加上一些配置,那么我也不管了,先加上再说。
define('WP_MEMORY_LIMIT', '256M');
define('WP_MAX_UPLOAD_SIZE', '256M');
重新尝试上传,接口还是 pending。
这个时候我就不知道问题出现在那里了,然后我就尝试换用 async-upload.php
为关键字,终于在一个 StackOverflow 的帖子里面看到了一个让我震惊的回答,说 Cloudflare 的基础套餐有 100 MB 的限制!
我突然意识到,确实我的站点前面确实增加了一个 Cloudflare CDN,而我的文件刚刚好超过 100MB。于是立即去 Cloudflare 后台关闭了云朵,然后我发现问题解决了!
后来仔细的研究了一下 Cloudflare,发现 Free 和 Pro 的套餐,上传文件大小限制都是 100MB。1 而 Business 是 200MB 限制,Enterprise 是 500MB 限制。
如果文件大小超过 100MB,会直接返回 413 错误,文件上传也不会到自己的服务器,我就说为什么我上面几次修改,在 PHP 和 Nginx Error 日志里面什么错误信息都没有看到!
至此文件上传的问题就得到了解决。
本文总结常见的邮件发送的错误。
450 4.1.8 Sender address rejected: Domain not found
这个错误提示表明发件人地址被拒绝,因为域名未找到。这通常是由于发件人地址的域名无法在 DNS(域名系统)中找到所致。解决这个问题可能需要以下步骤:
表示邮件被拒绝了,因为发件人的邮箱无法正确解析,因为特定的 DNS 记录(A,MX,PTR 记录) 缺失了。
50 5.1.1: Recipient address rejected: User unknown in local recipient table
这个错误表示你尝试发送邮件给一个在本地收件人表中未知的用户。
553 5.7.3 CONTENT REJCT:blockid=xx:URL
这个错误意味着你尝试发送的邮件包含被拒绝的内容,通常是因为邮件包含了被认为是垃圾邮件或恶意链接的内容。通常是如下的原因:
遇到此错误一般可以检查一下发送的邮件是否合法,是否包含恶意链接或内容。
Recipient address rejected: User unknown in virtual mailbox table
Net::SMTPFatalError: 550 5.1.1 [email protected]: Recipient address rejected: User unknown in virtual mailbox table
错误表明你尝试发送邮件给一个在邮件服务器的虚拟邮箱表中不存在的用户。
可能是如下的原因:
自从去年 EV Hosting 上线以来已经过快一周年了,过去的一年中陆陆续续推出了如下的服务。
这一些服务也是我开发独立产品的过程中不可缺少的一部分,比如说我可以在一分钟内直接创建一个博客来发布我的播客,我可以用我自己的域名注册服务来注册我自己的 life 域名,比如我的日本生活 https://ijp.life ,而我自己的域名邮箱服务已经稳定使用超过 3 年,过去我所有的域名邮箱全部都自己维护。
之前在 Twitter 上曾经看到过一篇 0 成本 Build 属于你自己的项目,其中列举了不少我也正在使用的服务,比如说 GitHub,Cloudflare 等等,但是问题的关键就在于当你自己的服务与这样的平台非常紧密地连接在一起的时候,未来带来的潜在风险也会伴随着平台的起伏而波动。
代码: @github $0
CDN: @Cloudflare $0
后端: @flydotio $0
域名: @freenomofficial $0
邮件: @Mail_Gun $0
数据库: @PlanetScale $0
日志: @AxiomFM $0 [[AXIOM]]
存储: @Cloudflare R2 $0
CDN: @BunnyCDN $0 [[Bunny CDN]]
统计: @googleanalytics $0 [[Google Analytics]]
比如过了半年当再来看这一份清单的时候,就会发现 freenom 提供的免费域名被收回了,之前也曾经推荐的 PlanetScale 将在 2024 年 4 月 8 号取消 Hobby 套餐,而 MailGun 也大幅度收窄了免费的额度。如果想要使用 PlanetScale,最低档的就是 39 USD 一个月,那如果你的应用构建于此,那必然要面临一个艰难的选择。我之前有一些自己和朋友的 21 天计划服务就放在了 PlanetScale 上,没有多少流量,所以我也不会为此付费订阅。但好在我的数据不是很多,使用 DataGrip 迁移一下就行了。并且在迁移的过程中我还发现了 PlanetScale 存在的问题,就是它并不支持 mysqldump,必需使用它专属的 cli 才能导出数据。而如果一旦服务数据量比较多,想必迁移起来就麻烦很多了。同样的,上述的所有服务虽然看起来入门是 0 USD,但其实很多服务的收费第一档就非常昂贵。
所以为什么我自己创建了 EV Hosting 的服务,也是因为来自我自己的需求,我有一些小网站需要一些邮件发送服务,比如给注册用户发送邮箱验证,比如我有一些静态或动态的网站需要托管,当然 GitHub Pages,Cloudflare Pages,Vercel,Netlify 等等都是非常不错的服务,托管自己的博客内容也完全没有问题,但同时也需要考虑比如 Vercel 的域名被屏蔽,GitHub Pages,Netlify 的访问速度等等问题。
首先我为了解决自己的托管和发邮件的问题,最早就是自建了 SMTP 和 Nginx 但我发现这个服务也能开放出来给有需求的用户用,然后就是域名的问题,不过域名的问题,我自己都是去 Google Domains(已被收购)和 Spaceship 上购买的,我建议大家先用 https://tld-list.com/ 进行比价,然后根据自己的情况来选择,现在 Cloudflare 也开放了域名注册,但我还没用起来,如果有使用感受也可以一起来分享。而我提供的域名注册服务通常来说是因为拿到了批量销售的折扣,我自己也会根据具体的促销价格来选择,我自己选择注册 .life 域名其事就是我自己拿到的售卖价格只要十几块人民币一年,已经非常便宜了,所以就直接买了一个。
为了庆祝一周年生日,现在针对独立开发者推出如下的套餐。
99 套餐 内容包括
199 套餐内容包括
我因为自己的需求所以维护了这样一套服务,如果你也是一位独立开发者,你也需要为你的早期项目接入邮件注册,也需要网站托管内容
如果你满足了如下的条件,欢迎找我,提供免费一年的 99 套餐。
Pull Request 格式
- [项目名字](项目地址)
使用的项目:
这两天看到有人分享自己的密码管理方案是通过固定 Pattern 然后根据不同的网站设定一个随机可记忆字串来防止密码泄漏之后影响其他网站,于此同时也一定程度上可以摆脱密码管理器的约束。这也是我这 10 多年来的密码管理方案,虽然我还是会强烈推荐 Bitwarden,当一些重要的网站我还是会选择自己记住密码,并且加上二步验证保护安全,而其他网站则是通过密码管理器来管理。
但是我明明记得我写过一篇关于密码管理的文章,但就是怎么都没有找到,后来一想这已经是十年前写在 Blogger 上面的文章,于是突然想把沉积多年的 Blogger 内容备份出来,并转成 Markdown ,导入到 Obsidian,因为我一直认为只有被反复唤起(搜索)的内容才有价值。
既然有了这个目标,那么说干就干,首先是导出 Blogger 的内容,这一点在设置中,直接可以选择 Backup,下载获取到一个特殊格式的 XML 文件。
然后我用 Google 简单的搜索了一下 Blogger to Markdown,发现原来已经有人使用 NodeJS 实现过了。但代码直接运行有一些异常,打开代码看看,做了一下修复。
然后再运行命令,不到一分钟的时间就把 2010 年到 2019 年的内容转成了 Markdown。
在这个时间点又不免再感慨一下,Blogger 当年作为一个非常流行的博客平台,如今却半死不活,很多年没有更新,Google 内部可能也放弃维护了,并且非常无语的是,我登录了后台才发现,以前明明发布的内容,却告诉我有一些文章被 Blogger 自动取消发布了,说违反了社区规则,但我仔细地看了一下这几篇文章,是 2014 年发表的一篇《继续折腾 WNDR3800 之 shadowsocks》,这篇文章已经存在互联网上 6 年,但却告诉我在 2020 年违反了社区规则?实在没有搞懂 Google。
我仔细的检查了一下文章内容,无非就是几行代码,以及一些 iptables 的配置,完全看不出任何违反社区规则的内容。
在把文件导出来之后,也看了几篇当时写的文章,感慨物是人非,那个时候我还是非常喜欢 Google,也会在第一时间去尝试 Google 的所有的服务,当时也写了很多 Google+ 的使用感受,当时也确实在 Google+ 认识了一些朋友,但后来的事情其实大家也都知道,自从 Google+,Google Reader 关闭以来,我就已经开始自主的脱离 Google 的生态,将所有我自己产生的数据慢慢地从 Google 从移走,Google Photo 等等。
而到了 2024 年,Google 突然遇到 OpenAI 的「劲敌」,至于 AI 是否会颠覆传统的搜索引擎,在这个时间还不好说,但可以肯定地说肯定会代替一部分的搜索流量,至于是否会影响到 Google 的广告业务,那也只能让我们拭目以待了。