适应场景
适应于这种Win10里网页输入账号的情况。
生活场景:假期里,在家控制学校的电脑办公,这种情况下需要对被控制的电脑进行一系列的设置。包括:
- 断电情况,需要让电脑在通电后自动开机。
windows10设置上电自启_win10设置通电自动开机-CSDN博客
即:进BIOS设置的“PowerManagementSetup”中,有一个选项 “PwronAfterPW-Fail”,设置为“ON”。
- 自动联网,需要让电脑开机后自动连接校园网。
这个后面详细讲。
- 校园网故障,需要让电脑定时联网。
win+x计算机管理-任务计划程序-创建基本任务:触发器:每天半夜;操作:启动程序“C:\Users\名字\Documents\edge.bat”。
远程控制软件
推荐排行榜
- 首选TeamViewer:免费版就能分屏、画面最清楚;
- 次选Todesk:模糊,双屏属于付费服务;
- 最次向日葵:服务器异常登录不上是老问题。
TeamViewer的下载与配置
官网下载安装TeamViewer full client版,注册登录、绑定手机号。设置:
- 开机自启(选项-常规)、取消随机密码(选项-高级-连接到本计算机的高级设置)、黑屏(选项-高级-针对传入连接启动“Blackscreen”)、新界面×、旧界面√(旧界面可以快速进行远程控制,保留输入过的密码;新界面每次都要重新输入受控端的密码)。
- 控制端、被控端分别登录不同账号,相反,登录同一个账号的话,半年后会被监测成商用,导致限制使用(5分钟自动退出);每次新设备登录都会有个邮箱验证,要选择“临时登录一次”,每个账号只能有5个绑定设备!
- 最好每天半夜启动一次,防止
小儿误食误关:start代码补充到edge.bat文件开头。
start "" "D:\安装目录\teamviewer\TeamViewer.exe"
开机连校园网
1 主程序:edge.bat+edge.py
在“C:\Users\名字\Documents”里新建文件edge.bat,写入如下代码:
python "C:\Users\名字\Documents\edge.py"
start "" "D:\Software\Teamviewer\TeamViewer.exe"
同目录下新建edge.py,写入如下代码:
from selenium import webdriver
from selenium.webdriver.edge.options import Options
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
import time
xuehao='123' #你的学号
mima='aa' #你的密码
root_url = 'https://lgn.bjut.edu.cn/' # 身份验证网页
# 初始化Edge WebDriver
option = Options()
option.add_argument('headless') # 设置option, 后台运行
browser = webdriver.Edge(options=option)
# 最大重试次数
max_retries = 2
retry_delay = 20 * 60 # 20分钟
retry_count = 0
while retry_count < max_retries:
try:
browser.get(root_url)
wait = WebDriverWait(browser, 0.1) # 等待最多10秒
# 等待直到用户名输入框可见并发送帐号名
wait.until(EC.presence_of_element_located((By.NAME, "DDDDD"))).send_keys(xuehao)
# 等待直到密码输入框可见并发送密码
wait.until(EC.presence_of_element_located((By.NAME, "upass"))).send_keys(mima)
# 点击。使用CSS选择器,但这里我们改用name属性,因为它更稳定
# 注意:如果页面中有多个相同的name,这种方法可能不适用
login_button = WebDriverWait(browser, 10).until(
EC.element_to_be_clickable((By.NAME, "0MKKey"))
)
login_button.click()
# 如果能执行到这里,说明登录成功或没有抛出异常,可以退出循环
break
except Exception as e:
print(f"登录失败,正在重试... 错误信息: {e}")
retry_count += 1
if retry_count < max_retries:
print(f"将在{retry_delay}秒后重试...")
time.sleep(retry_delay)
else:
print("达到最大重试次数,无法登录。")
# 关闭浏览器
browser.quit()
2 开机自启动
需要开机不输入密码情况下启动bat,用任务计划程序。win+x计算机管理-任务计划程序-上边的任务-触发器-新建。
3 安装、配置python
安装python。推荐python配合vscode的插件MarsCode AI(抖音的豆包),注意将python加入到环境变量即可。
添加库。打开目录,安装目录python\Scripts,ctrl+shift+右键,打开powersheel窗口,输入以下代码并回车:
pip install selenium
大功告成!
4 警惕edge自动更新
edge特别容易自动更新,更新后这个代码就要改,所有,咱们不能让它更新。这篇写的很详细:关闭edge更新方法,总之就是关闭3个更新的“服务”,破坏MicrosoftEdgeUpdate.exe文件。
我就是莫名奇妙被更新到135.0.3179.98,下载msedgedriver.exe放文档文件夹里(网页链接),然后edge.py更改为下边的就能用了。
import socket
import time
from selenium import webdriver
from selenium.webdriver.edge.options import Options
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.edge.service import Service
def check_internet_connection():
hostname = "www.baidu.com"
port = 80
try:
socket.setdefaulttimeout(1) # 设置超时时间为3秒
socket.socket(socket.AF_INET, socket.SOCK_STREAM).connect((hostname, port))
return True
except socket.error as e:
print(f"网络连接检查失败: {e}")
return False
def login(zhanghao,mima):
option = Options()
driver_path = r'C:\Users\名字\Documents\edgedriver_win64\msedgedriver.exe'
service = Service(executable_path=driver_path)
option.use_chromium = True
option.add_argument('--headless') # 如果需要无头模式
# 初始化Edge浏览器
browser = webdriver.Edge(service=service, options=option)
root_url = 'https://lgn.bjut.edu.cn/'
max_retries = 2
retry_delay = 20 * 60 # 20分钟
retry_count = 0
while retry_count < max_retries:
try:
browser.get(root_url)
wait = WebDriverWait(browser, 10) # 等待时间设置为10秒
wait.until(EC.presence_of_element_located((By.NAME, "DDDDD"))).send_keys(zhanghao)
wait.until(EC.presence_of_element_located((By.NAME, "upass"))).send_keys(mima)
login_button = WebDriverWait(browser, 10).until(
EC.element_to_be_clickable((By.NAME, "0MKKey"))
)
login_button.click()
break
except Exception as e:
print(f"登录失败,正在重试... 错误信息: {e}")
retry_count += 1
if retry_count < max_retries:
print(f"将在{retry_delay}秒后重试...")
time.sleep(retry_delay)
else:
print("达到最大重试次数,无法登录。")
browser.quit()
if __name__ == "__main__":
zhanghao = '123' # 学号
mima = 'mima' # 密码
if check_internet_connection():
print("不需要操作,网络已连接")
else:
login(zhanghao,mima)