python+selenium实现自动联网认证,并实现断网重连
python+selenium实现自动联网认证,并实现断网重连
@echo off
python “E:\autoD\auto_login.py”
要使自动登录脚本在系统重启后自动运行,你可以使用Windows的任务计划程序来设置。以下是详细的步骤:
1. 保存脚本
首先,将你的Python脚本保存为一个文件,例如 auto_login.py
。
2. 创建批处理文件
为了方便任务计划程序调用,我们可以创建一个批处理文件(.bat)来运行Python脚本。假设你已经安装了Python,并且Python的路径已经添加到系统的环境变量中。
- 打开记事本或任何文本编辑器。
- 输入以下内容:
@echo off python "C:\path\to\your\script\auto_login.py"
- 将上述内容保存为
run_auto_login.bat
,确保路径指向你的Python脚本的实际位置。
3. 设置任务计划程序
-
打开任务计划程序:
- 按
Win + R
打开运行对话框,输入taskschd.msc
并按回车,打开任务计划程序。
- 按
-
创建基本任务:
- 在右侧操作栏中点击“创建基本任务…”。
- 输入任务名称,例如“自动登录认证”,然后点击“下一步”。
- 选择触发器为“当计算机启动时”,点击“下一步”。
- 选择操作为“启动程序”,点击“下一步”。
-
配置启动程序:
- 浏览并选择刚刚创建的
run_auto_login.bat
文件。 - 点击“下一步”,然后点击“完成”。
- 浏览并选择刚刚创建的
-
高级设置(可选):
- 如果需要进一步配置任务,可以在任务列表中找到你创建的任务,右键点击它,选择“属性”。
- 在“常规”选项卡中,可以设置任务的描述、安全选项等。
- 在“触发器”选项卡中,可以设置更具体的触发条件。
- 在“操作”选项卡中,可以查看和修改启动的程序。
- 在“条件”和“设置”选项卡中,可以设置更多的任务执行条件和行为。
4. 测试任务
-
手动测试:
- 你可以在任务计划程序中手动运行这个任务,以确保它能够正确执行。
- 右键点击任务,选择“运行”。
-
重启测试:
- 重启计算机,检查任务是否在启动时自动运行。
5. 验证脚本
- 确保Python脚本和WebDriver路径正确。
- 确保浏览器驱动(如ChromeDriver)已下载并放置在正确的路径。
- 确保Python和WebDriver版本兼容。
6. 其他注意事项
- 权限问题:确保任务计划程序有足够的权限运行脚本。
- 防火墙和杀毒软件:确保防火墙和杀毒软件不会阻止脚本的运行。
- 日志记录:如果需要调试,可以在Python脚本中添加日志记录,以便追踪脚本的执行情况。
通过以上步骤,你应该能够成功设置一个在系统重启后自动运行的自动登录脚本。如果有任何问题,请随时告诉我。
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.chrome.service import Service
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
import time
设置WebDriver路径
webdriver_path = r’C:\Program Files\Google\Chrome\chromedriver-win64\chromedriver.exe’ # #请下载这个!!!!!替换为你的WebDriver实际路径
service = Service(webdriver_path)
创建一个新的浏览器实例
driver = webdriver.Chrome(service=service)
try:
# 打开认证页面
driver.get(“http://172.1sType=1”)
# 等待页面加载
wait = WebDriverWait(driver, 10)# 填写用户名
username_field = wait.until(EC.presence_of_element_located((By.ID, "username")))
username_field.send_keys('dfdfg')# 填写密码
password_field = wait.until(EC.presence_of_element_located((By.ID, "password")))
password_field.send_keys('Z')# 选择“已阅读并同意用户须知”复选框
agree_checkbox = wait.until(EC.element_to_be_clickable((By.XPATH, "//img[@id='agreeCheck']")))
agree_checkbox.click()# 提交表单
submit_button = wait.until(EC.element_to_be_clickable((By.ID, "loginBtn")))
submit_button.click()# 如果需要保持页面打开一段时间,可以增加等待时间
time.sleep(5) # 可以根据需要调整等待时间
finally:
# 关闭浏览器
driver.quit()
###查看网页源代码
已阅读并同意用户须知 忘记密码 注册
根据上面修改下面的参数
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.chrome.service import Service
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
import time
设置WebDriver路径
webdriver_path = r’E:\Program Files\Tencent\QQBrowser\QQBrowser.exe’ # 请替换为你的WebDriver实际路径
service = Service(webdriver_path)
创建一个新的浏览器实例
driver = webdriver.Chrome(service=service)
try:
# 打开认证页面
driver.get(“http://174ype=1”)
# 等待页面加载
wait = WebDriverWait(driver, 10)# 填写用户名
username_field = wait.until(EC.presence_of_element_located((By.NAME, "username"))) # 替换为实际的用户名输入框name属性
username_field.send_keys('44g')# 填写密码
password_field = wait.until(EC.presence_of_element_located((By.NAME, "password"))) # 替换为实际的密码输入框name属性
password_field.send_keys('45')# 选择“已阅读并同意用户须知”复选框
agree_checkbox = wait.until(EC.element_to_be_clickable((By.XPATH, "//input[@type='checkbox']"))) # 根据实际情况调整XPath
agree_checkbox.click()# 提交表单
submit_button = wait.until(EC.element_to_be_clickable((By.XPATH, "//button[@type='submit']"))) # 根据实际情况调整XPath
submit_button.click()# 如果需要保持页面打开一段时间,可以增加等待时间
time.sleep(5) # 可以根据需要调整等待时间
finally:
# 关闭浏览器
driver.quit()
要实现一个批处理文件(.bat),该文件能够自动检查网络状态并在网络出现问题时重新运行 auto_login.py
,你可以使用以下步骤来创建这个批处理文件。这个批处理文件将定期 ping 百度,并在检测到网络问题时重新运行 auto_login.py
。同时,它会将日志记录到一个文本文件中。
批处理文件示例
- 创建一个新的批处理文件:
- 打开记事本或任何文本编辑器。
- 将以下内容复制并粘贴到编辑器中。
@echo off
setlocal:: 设置日志文件路径
set log_file=E:\autoD\network_log.txt:: 初始登录
echo [%date% %time%]: Initial login >> %log_file%
python "E:\autoD\auto_login.py" >> %log_file% 2>&1:: 设置检查间隔时间(秒)
set nexttime=60:loop
:: Ping 百度四次
for /f "tokens=4" %%i in ('ping -n 4 www.baidu.com ^| find "Reply from"') do set icmp_cnt=%%i:: 获取成功的 ICMP 包数量
set /a success_count=0
for /f "tokens=1,2 delims== " %%i in ('ping -n 4 www.baidu.com ^| find "Reply from"') do set /a success_count+=1:: 记录当前时间和 ping 结果
echo [%date% %time%]: ping receives: %success_count% / 4 >> %log_file%:: 如果 ping 失败(ICMP 包少于 4 个),重新登录
if %success_count% LSS 4 (echo [%date% %time%]: Network issue detected, re-login >> %log_file%python "E:\autoD\auto_login.py" >> %log_file% 2>&1
):: 等待指定的时间间隔
timeout /t %nexttime% >nul
goto loop
- 保存文件:
- 将文件保存为
network_checker.bat
,确保扩展名为.bat
。
- 将文件保存为
解释
- 日志文件:
network_log.txt
用于记录每次 ping 的结果和重新登录的时间。 - 初始登录:脚本启动时首先执行一次
auto_login.py
,并将输出重定向到日志文件。 - Ping 检查:每隔 60 秒 ping 百度四次,并统计成功的 ICMP 包数量。
- 网络问题检测:如果成功的 ICMP 包数量少于 4 个,则认为网络有问题,并重新运行
auto_login.py
。 - 日志记录:每次 ping 的结果和重新登录的操作都会记录到
network_log.txt
文件中。 - 循环:使用
:loop
标签和goto loop
实现无限循环。
使用方法
- 将上述批处理文件保存为
network_checker.bat
,并将其放置在与auto_login.py
同一级目录下。 - 在命令提示符或 PowerShell 中运行该批处理文件:
E:\autoD\network_checker.bat
注意事项
- 确保
auto_login.py
脚本在同一目录下,并且可以正常运行。 - 如果你希望脚本在后台运行,可以使用
nohup
或者将脚本打包成一个 Windows 服务。 - 如果需要更复杂的日志管理(如日志轮转),可以考虑使用专门的日志管理工具。
通过这种方式,你可以实现在 Windows 上定期检查网络状态并在网络出现问题时自动重新登录的功能。