采用selenium无头浏览器模拟手动部署即可.

gitee没有用什么高级的反爬虫技术,所以这样是可以的.

代码如下所示

'''
@Author: misaka7690
@Description: gitee 自动部署
'''

from selenium import webdriver
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.chrome.options import Options
import time

# TODO change to your url
url = 'https://gitee.com/misaka7690/misaka7690/pages'
login_url = 'https://gitee.com/login'

options = Options()
options.headless= True
chrome_driver_path = r'C:\portable exe\chromedriver.exe'
driver = webdriver.Chrome(executable_path=chrome_driver_path,chrome_options=options)
driver.get(login_url)


def wait_by_css_selector(sel):
    while True:
        try :
            x=driver.find_element_by_css_selector(sel)
        except :
            time.sleep(1)
        else:
            break

def send_key_by_css_selector(sel,key):
    wait_by_css_selector(sel)
    elem = driver.find_element_by_css_selector(sel)
    elem.clear()
    elem.send_keys(key)
def click_by_css_selector(sel):
    wait_by_css_selector(sel)
    elem = driver.find_element_by_css_selector(sel)
    elem.click()

# click_by_css_selector('#git-nav-user-bar > div.gitee-nav-user.item > a:nth-child(1)')
send_key_by_css_selector('#user_login','**************') # TODO change to your count
send_key_by_css_selector('#user_password','*******') # TODO change to your passwd
click_by_css_selector('#new_user > div.session-login__body > div > div > div:nth-child(4) > input')
time.sleep(5)
driver.get(url)
click_by_css_selector('#pages-branch > div.button.orange.redeploy-button.ui.update_deploy')
alert = driver.switch_to_alert()

alert.accept()
time.sleep(5)
print('deploy successful!')
driver.quit()

将上面代码和hexo d合为一个批处理脚本即可实现自动部署了.如下

hexo g
hexo d
python -u "c:\vscode_workspace\Blog\MyScripts\auto_deploy_gitee.py"

我很好奇