因为Gitee Pages服务的免费版是不支持更新仓库后自动部署的,所以每次更新博客都需要手动进码云仓库,点击 服务-Gitee Pages-更新。一点都不Geek🤣,之前我的解决方法是使用bat批处理脚本打开对应的网址,自己的操作就变成了点击脚本-再点击网页中的更新就🆗了。但实际上还是有点麻烦,于是在网上搜索了一下,还真的有大佬做过这个事情——gitee pages服务自动部署分析,参考了大佬的方法,自己做了一些修改,实现了这个功能。

1. 分析请求

打开Giee Pages部署页面,右键点击网页,点击检查。

然后点击Network,再点击🚫,清空目前监听的网络请求。

点击更新。

发现有这几个请求,实际上只需要发出rebuild这个请求就可以实现Gitee Pages的部署了。

我们点开rebuild这个请求,脚本中的请求头、cookie、token信息在其中都能找到。

2. 实现脚本

这里使用bash中的curl命令来发送post请求。其中-H表示添加请求头信息,—compressed表示以压缩的形式返回,>./log.txt 最后重定向在当前目录下的log文件中(这里查看是否部署成功。)

脚本代码

1
2
3
4
5
#!/bin/bash
hexo clean
hexo d -g

curl '你的Request URL' -X POST -H 'authority: gitee.com' -H 'pragma: no-cache' -H 'cache-control: no-cache' -H 'accept: */*' -H 'origin: https://gitee.com' -H 'x-csrf-token: 你的x-csrf-token' -H 'x-requested-with: XMLHttpRequest' -H 'user-agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.163 Safari/537.36' -H 'content-type: application/x-www-form-urlencoded; charset=UTF-8' -H 'sec-fetch-site: same-origin' -H 'sec-fetch-mode: cors' -H 'referer: 你的Referer' -H 'accept-encoding: gzip, deflate, br' -H 'accept-language: zh-CN,zh;q=0.9' -H 'cookie: 你的Cookie 注意不是Set-Cookie' --data 'branch=master&build_directory=&force_https=true' --compressed > ./log.txt

将脚本中需要替换的参数在rebuild请求中粘贴过来即可。

其中注意这行代码:

1
--data 'branch=master&build_directory=&force_https=true'

这里携带的三个参数对应的是下图中的选项

因为我要部署的是整个仓库,所以build_directory的值为空。

我是windows系统,直接打开git bash,输入命令

1
bash 脚本名.sh

3. 参考