Python 码云自动更新脚本

本文最后更新于:2020-05-24 18:46

最近每日需要更新饥荒游戏服务器的一些信息,用crontab自动运行hexo命令后,因为码云需要登陆网页手动点击更新,又不想花钱充码云Pro,所以就用python写了一个自动点击更新的脚本,每天自动运行即可
基于Ubuntu18

Python的前提要求

因为是用Python的selenium模块,该模块要求Python3.5以上。

Ubuntu 16+的系统预装的是Python3.5+,故已达标;如果是其他Linux发行版本请输入python3 -V确认Python版本,若未达标请自行安装

安装pip3

pip3是安装Python模块的工具,输入 pip3 -V 确认是否安装,如未安装,请先安装

1
sudo apt install python3-pip

安装selenium模块

1
sudo pip3 install selenium

安装火狐

selenium模块需要调用火狐浏览器来访问网页,输入firefox -V确认火狐是否安装,如未安装,请先安装

1
sudo apt install firefox

Geckodriver

Geckdriver是把Python和火狐浏览器联动起来的文件,去Geckodriver的Github项目根据你的火狐浏览器版本下载

我用的是Firefox 72.0.2因此我下载0.26.0版本的geckodriver:输入

1
wget https://github.com/mozilla/geckodriver/releases/download/v0.26.0/geckodriver-v0.26.0-linux64.tar.gz

然后解压

1
tar xzf geckodriver*.tar.gz

移动到环境变量目录,这里我选择/usr/local/bin目录,输入

1
sudo mv geckodriver /usr/local/bin/

测试环境部署是否成功

输入

1
python3

在python命令行中依次输入

1
2
3
4
5
from selenium import webdriver
from selenium.webdriver.firefox.options import Options
firefox_options = Options()
firefox_options.add_argument('-headless')
driver = webdriver.Firefox(options=firefox_options)

如果没有报错,说明环境部署成功

获取Cookie

获取Cookie后,以后可以用Cookie自动登陆码云,不需再输入密码及验证码,步骤如下:

打开浏览器(火狐和chrome都可以,我本地计算机安装的是Chrome,这里就以chrome为例),打开码云,登陆后进入码云自动部署页面的链接,就是你的项目里点服务->Gitee Pages进入的页面,页面中有一个橙色的更新按钮就对了,网址一般为https://gitee.com/xxxxx/xxxxxx/pages

点击地址栏左边的锁一样的标志,选择Cookie

在弹出的窗口中展开gitee.com,再展开Cookie,找到并点击一个名为gitee-session-n的项目,复制它的内容,然后把下面这段代码的内容替换成你复制出来的内容即可

1
{'domain': '.gitee.com', 'httpOnly': True, 'name': 'gitee-session-n', 'path': '/', 'secure': False, 'value': '内容'}

上面这个就是你获取的Cookie了

一键部署脚本

一键部署脚本内容如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
#!/usr/bin/python3
# -*- coding:utf-8*-
from selenium import webdriver
from selenium.webdriver.firefox.options import Options
from selenium.webdriver.common.keys import Keys
import time
import os

my_cookie = 填入上一步获取的Cookie
firefox_options = Options()
# 启动Firebox无界面模式
firefox_options.add_argument('-headless')
# 不加载图片, 提升速度
firefox_options.set_preference("permissions.default.image",2)
#打开浏览器
print('Launch browser')
driver = webdriver.Firefox(options=firefox_options)
#删除缓存
print('Delete cookies')
driver.delete_all_cookies()
#访问网页
print('Visit website')
driver.get("https://gitee.com/xxxxx/xxxxxx/pages") #这里为码云自动部署页面的链接,就是你的项目里点服务->Gitee Pages进入的页面,页面中有一个橙色的更新按钮就对了
time.sleep(10)
#加载cookie
print('Add cookie')
driver.add_cookie(my_cookie)
#刷新
print('Refresh')
driver.refresh()
time.sleep(10)
#点击部署按钮
print('Click the "Update" button')
driver.find_element_by_xpath('//*[@id="pages-branch"]/div[7]').click()
time.sleep(5)
#弹窗确定
print('Click the "Accept" button')
al = driver.switch_to.alert
al.accept()
time.sleep(60)
#关闭程序
print('Turn off the program')
driver.quit()

根据上面的代码修改自己的cookie和码云的地址,保存成gitee.py,输入

1
chmod +x gitee.py

以后只要运行该脚本就可以自动更新码云pages,不需要再手动打开网页点击更新


Python 码云自动更新脚本
https://peppernotes.top/2020/02/giteeautoupdate/
作者
辣椒小皇纸
发布于
2020年2月17日
许可协议