certbot 自动更新 DNSPOD 泛域名证书
最近我把服务器上的证书全换成泛域名证书了。域名比较多的话,每一个域名都要申请一份证书,虽然可以用 certbot 自动续期,但是因为不同的域名证书不一样,在写 nginx 配置的时候比较麻烦。
由于 certbot 已经支持了 泛域名证书的申请,所以我们可以申请泛域名证书,然后为泛域名证书自动续期就好了。假设我们的域名是 askk.cc,我希望为 askk.cc 与 *.askk.cc 申请一份证书。
具体步骤
首先,我们需要一个软件包:certbot-dns-dnspod, arch 用户的话,我已经打包好了
certbot-dns-dnspod-git.
安装上该软件包之后,去 DNSPOD 申请 APIKEY. 具体做法参考 腾讯云 DNSPod 域名 API 申请 Let’s Encrypt 泛域名 SSL 证书过程记录。
然后记录下ID 与 KEY,写到文件里(我写到 /etc/letsencrypt/dnspod.ini) 记得将文件权限设置为 600。
123# cat /etc/letsencrypt/dnspod.inidns_dnspod_api_id=" ...
从巨潮资讯爬取上市公司公告
背景
最近闲着没什么事,就帮同学写了个爬取巨潮资讯上市公司公告的 python 脚本,根据公司的股票代码以及公告的日期自动下载公告( pdf 或者 html 格式)。
脚本开源在 cninfo-crawler。
刚开始本来想用 selenium 爬的,结果搞到一半发现完全没有反爬,就直接用 requests 库了。
爬取过程
我们先进入巨潮资讯主页,打开 F12 开发人员工具,再随便搜索一个公司的股票代码跟公告日期。
点击查询,然后关注右边开发者工具捕捉到的消息,将它们按照 Type 排序,我们要找的应该在 xhr 里面,而且方法应该是 POST。
一眼我们就发现 query 特别可疑,点开它看看。
先看标头 POST 再看载荷
这个应该就是我们搜索的时候填的表单,stock 里面的 300409 就是股票代码, 但是那个 9900023868 是啥,不太懂。 seDate 就是我们查询的时间段。其他参数不用改。
获取下载链接
看一下预览,很明显 adjunctUrl 就是下载链接了,可惜这是个相对链接,
我们先点进去看一看,刚开始我尝试从 公告下载 捕获下载链接,但是事实证 ...
从零开始的 NixOS 教程(Flake篇)
安装教程见从零开始的 NixOS 教程(安装篇)。
Nix 系列最吸引我的地方之一就在于 flake 了,我们可以把所有的 flake 托管到 GitHub, 然后在服务器上引入。这样简简单单就备份好了各种配置文件。重装系统或者批量部署非常容易。
我们在上一篇教程里面已经开启了 flake 支持,现在只要在 /etc/nixos 下面新建 flake.nix 并输入如下内容
12345678910111213141516171819202122232425262728293031{ # Description, write anything or even nothing description = "Lan Tian's NixOS Flake"; # Input config, or package repos inputs = { # Nixpkgs, NixOS's official repo nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstab ...
从零开始的 NixOS 教程(安装篇)
前言
与 archlinux 不同, NixOS(以下简称 Nix)因其可复现构建的特性而更加适合服务器。简单来说,在 archlinux 上,你在不同的时间构建同一个版本的软件,构建出来很可能是不一样的,而在 Nix 上,不同时间构建出来的同一份软件应当是二进制级别的相同,而这种特性就非常适合服务器。同时 Nix 每个包的依赖都是独立的,都放在 /nix/store下面的子文件夹,文件夹名称通常是 对应构建的 id,不同版本的依赖直接自动链接到对应的文件。 但是 Nix 由于不支持 FHS 规范,个人认为不太适合当成个人电脑的系统,个人电脑上也不需要可复现的构建(至少我作为打包者也不关心,我只要最新的,不要可复现)。还有就是 Nix 应该会在 /nix/store 下面存放好多个不同版本的软件(作为依赖引入嘛),所以磁盘空间会消耗得比较快(服务器上当然无所谓啦)。
闲话就说到这。我之前申请了甲骨文的 ARM 免费服务器,配置为 4c24g,100G. 由于 arch 没有官方的 arm 支持,所以后来装了 Nix, 但是我还不太会 Nix, 当时是用 cloudinit 脚本一键安装 ...
使用 mitmproxy 抓包 https
这一次是要抓腾讯会议的包,前段时间有人在 AUR 给我维护的 wemeet-bin 标记了过期,并提供了新的版本号,但是,腾讯会议的下载链接不能由版本号完全确定。例如 https://updatecdn.meeting.qq.com/cos/60bbaecfb3bf32615331b07d46001353/TencentMeeting_0300000000_3.10.0.400_x86_64_default.publish.deb 这个链接中 60bbaecfb3bf32615331b07d46001353 的含义不明(其实是 deb 包 的 md5sum),我们没法由版本号推断出下载链接。因而只能跟随官网更新。
一开始我尝试按照 使用 wireshark 抓包 svstudio 的经验,采用了 SSLKEYLOGFILE 环境变量,但是发现完全没有用, QT 的应用不吃这个环境变量[^1],没有办法使用 Wireshark 来抓包。后来在群友的推荐下使用 mitmproxy 来抓包。
具体步骤
安装
首先安装 mitmproxy
1yay -S mitmproxy
然后执行 mitm ...
使用 wireshark 抓包 svstudio
背景
昨天我 AUR 上的包 svstudio-bin 又被人标记过期了,说提示应用内更新,新版本为 1.7.0。
但是我去官网查,发现官网没有放出更新,就只能自己抓包了。刚开始的时候是真的用不来 wireshark, 看着网上的教程说找 GET 请求,但是我发现我抓到的全是 TCP 或者 TLS,
根本就没有 HTTP 请求。后来在找对了关键词,搜索到了需要的方法才成功。
具体过程
我最初看到的那篇文章现在找不到了,但是和 Wireshark解密HTTPS流量的两种方法 的第二种方法是一样的。
首先在终端设置 SSLKEYLOGFILE 环境变量,
1export SSLKEYLOGFILE=/tmp/ssl.log
然后终端不要关,打开 wireshark, 找到 编辑>首选项>protocol>ssl, 在 (Pre)-Master-Secret log filename 下面填入 /tmp/ssl.log,
保存后返回到 wireshark 主界面,开始抓包。
然后在刚刚的终端里面输入 svstudio 打开 svstudio, 它会开始检查更新,我们直接同 ...