Browse Category

Tools

使用 davfs2 将 WebDav 网盘挂载到文件夹

VPS 上的文件越来越多,而增加硬盘容量并不便宜,考虑到自己依然在吃土,我决定想办法将网盘直接挂载到 VPS 的文件夹上。

PS: Datto Drive 正在提供首年免费的 1TB OwnCloud 网盘空间,支持 WebDav。另外推荐一个国外的网盘,pCloud,可以与 OneDrive、DropBox 和 Instagram 同步,免费 20G,支持在线解压缩、文件搜索、直接下载文件夹和离线下载,速度还不错,链接带 aff。

fuse可用于创建虚拟文件系。davfs2借助fuse,可将WebDav虚拟成一个文件夹,便于直接访问。

首先安装davfs2

apt-get install davfs2 fuse-utils

创建挂载点文件夹并挂载到/mnt/pan/ Keep Reading

Python+JavaScript 实现自动抢课

环境要求:Python 3 及 selenium 模块,chrome 及 chromedriver 驱动

首先,导入模块及 chromedrive。

from selenium import webdriver
import os
import time

chromedriver = "D:\path\to\chromedriver.exe"
os.environ['webdriver.chrome.driver'] = chromedriver
driver = webdriver.Chrome(chromedriver)

登陆 URP 系统,依次点击“选课管理”和“选课方案”,观察到选课页面为一单独的 frame ,其网址为 http://jwxt.bupt.edu.cn/xkAction.do?actionType=-1。故在登陆后,可直接打开选课界面,并进入校任选课页面。

driver.get('http://jwxt.bupt.edu.cn/')
str = input("Enter:")
driver.get('http://jwxt.bupt.edu.cn/xkAction.do?actionType=-1')
driver.find_element_by_xpath('/html/body/table[4]/tbody/tr/td/table/tbody/tr/td[11]/a').click() #校任选课

由于课表在一 frame 中,故切换至此 frame 。翻页即跳转,提交即点击事件,而选课即为勾选多选框,且多选框的值为对应课程号和课序号,故可用 JavaScript 脚本检测是否可以选课,并自动选课、提交。

var tars = new Array("3412113011_01","3412113011_02"); #课程号_课序号
var findit = false;
for (var ti = 0; ti < tars.length; ti++){
    input = document.getElementsByTagName("input");
    for (var i = 0; i < input.length; i++) {
        if (input[i].type == "checkbox") {
            if (input[i].value == tars[ti]){
                input[i].checked = true;
                findit = true
                }
            }
        }
    }
if (findit) {
    document.xkActionForm.submit();
}

最后,循环切换页面并执行脚本,直到选课成功,产生 alert。

while True:
    driver.execute_script(xkcommend) #刚刚提到的 JavaScript 脚本
    driver.execute_script("window.location.href='xkAction.do?actionType=3&pageNumber=2'") #page2
    driver.implicitly_wait(15)
    driver.execute_script(xkcommend)
    driver.execute_script("window.location.href='xkAction.do?actionType=3&pageNumber=3'")
    driver.implicitly_wait(15)
    driver.execute_script(xkcommend)
    driver.execute_script("window.location.href='xkAction.do?actionType=3&pageNumber=4'")
    driver.implicitly_wait(15)
    driver.execute_script(xkcommend)
    driver.execute_script("window.location.href='xkAction.do?actionType=3&pageNumber=1'")
    time.sleep(4)