Compare commits

...

2 Commits

3 changed files with 35 additions and 8 deletions

View File

@ -1,5 +1,6 @@
import os
import requests
import time
import selenium.common.exceptions
import urllib3
import logging
@ -81,7 +82,7 @@ class BUCTAU:
return False
@staticmethod
def detect_net():
def detect_net_requests():
# noinspection PyBroadException
try:
detector = requests.get(url="https://www.baidu.com", timeout=5)
@ -91,11 +92,22 @@ class BUCTAU:
else:
logging.info("Network is not available")
return False
except urllib3.exceptions.MaxRetryError:
logging.info("MaxRetryError: False")
return False
except requests.ConnectionError:
logging.info("ConnectionError: False")
return False
except Exception:
return False
return False
@staticmethod
def detect_net(driver):
# noinspection PyBroadException
try:
driver.get("https://tree.buct.edu.cn/index_20.html")
driver.maximize_window()
time.sleep(3) # Wait for the page to load
driver.find_element(By.XPATH, '/html/body/main/section/div[1]/div[7]/button[1]')
logging.info("Have logged in")
return True # Not logged in
except Exception:
logging.warning("Not logged in")
return False

View File

@ -4,11 +4,26 @@
用crontab理论上也行。
由于用到了logging。所以service里面要加上`WorkingDirectory=/path/to/programe`。出错先找找权限问题。
---
## 关于登录账号
在程序的根目录下面新建`.env`文件,里面写
```ini
BUCT_AUTHENTICATION_USERNAME=你的学号
BUCT_AUTHENTICATION_PASSWORD=校园网密码
```
---
## 关于service
由于用到了logging。所以service里面要加上`WorkingDirectory=/path/to/programe`来确保文件可以正常写入 。
出错先找找权限问题我应该是直接给了755。
---
现在还是有点问题。比如说没有连接wifi的情况下request的get会报ssl error然后直接退出。except也不好用。
我的解决方法就是service里面`Restart=always`,`RestartSec=60`。实测下来是能正常认证的。
用request来检测纯属闲的本来还是拿selenium检测的。反正能跑管他呢。
用request来检测纯属闲的本来还是拿selenium检测的。反正能跑管他呢。

2
run.py
View File

@ -9,7 +9,7 @@ def main():
past_time = time.time()
while True:
if time.time() - past_time > 10.0:
if authenticator.detect_net():
if authenticator.detect_net(driver=driver):
past_time = time.time()
continue
else: