本文最后更新于: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/
测试环境部署是否成功 输入
在python命令行中依次输入
1 2 3 4 5 from selenium import webdriverfrom 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 from selenium import webdriverfrom selenium.webdriver.firefox.options import Optionsfrom selenium.webdriver.common.keys import Keysimport timeimport os my_cookie = 填入上一步获取的Cookie firefox_options = Options() 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" ) time.sleep(10 )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
,输入
以后只要运行该脚本就可以自动更新码云pages,不需要再手动打开网页点击更新