1. 前言
上文我们简要的介绍了通过发送HTTP请求实现了上网功能,这篇文章,更近一步,直接实现浏览器页面的自动登录。
此次演示环境如下:
浏览器:Chrome
Selenium:4.1.0 版本
编程语言:Python
2. 环境配置
2.1 安装Selenium
方式1 如果你的系统上有pip
工具,那么你可以使用下面方式安装。
pip install -U selenium
方式2 你也可以直接下载源码,在通过以下命令安装。更多信息可参考官网https://pypi.org/project/selenium/。
python setup.py install
2.2 安装浏览器驱动
浏览器驱动的版本应于本机浏览器的版本一致。可以打开浏览器设置找到关于Chrome来查看版本。这里要注意,查看版本时,浏览器可能会自动升级,这是应使用升级后的新版本号。
下载好的驱动可以放在Chrome安装目录下或Python安装目录下,再或者是当前程序所在目录。即可满足程序运行要求。
3. 脚本编写
我们此次登录的网址是学习通,你可以将其换作其他网址。
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.common.keys import Keys
phone=""
password=""
option = webdriver.ChromeOptions()
# 屏蔽自动化受控提示 & 开发者提示
option.add_experimental_option("excludeSwitches",["enable-automation"])
# 屏蔽保存密码提示框
prefs={}
prefs["credentials_enable_service"] = False
prefs["profile.password_manager_enabled"] = False
option.add_experimental_option("prefs", prefs)
browser = webdriver.Chrome(options=option)
browser.get('https://passport2.chaoxing.com/login?loginType=4&newversion=true')
assert '登录' in browser.title
browser.find_element(By.ID, 'phone').send_keys(phone)
browser.find_element(By.ID, 'pwd').send_keys(password + Keys.RETURN)
browser.maximize_window()
# 不退出
#browser.quit()
至此,已经实现其自动登录功能。关于Selenium更多信息可以参考易百教程。
4. 打包&集成
接下来,使用pyinstaller
工具将上面的脚本转成exe程序,关于pyinstaller
工具的使用可以参考上文。
执行以下命令将其打包。
pyinstaller -F -i favicon.ico Login.py -n AutoLogin
打包后,我们的可执行程序不再依赖Python环境,但还有一个问题,它还依赖驱动。为解决此问题,可以编写一个程序来自动识别浏览器版本号,并自动下载驱动。此程序本人参考网上文章,并根据自己需要做了些修改。
参考文章:https://www.cnblogs.com/z417/articles/13785734.html
修改后的驱动安装器:链接:https://pan.baidu.com/s/1r8BxTL-5jWlhZLXv_5IkYw
提取码:kqkg
下载修改后的驱动安装器,并在当前目录创建start.bat
文件,将下面内容写入。
echo off
@REM download chromedriver.exe
.\chromeDriverDownLoader.exe
@REM run Autologin
AutoLogin
写入之后,通过双击start.bat
文件即可自动检查驱动,并自动登录。
5. 总结
我们使用Selenium来模拟用户操作,但是需要依赖浏览器驱动。这里使用辅助程序来满足驱动依赖,从而达到自动登录的目的。
若你有任何意见或建议,欢迎在评论区留言讨论。