【小工具的制作】通过Selenium实现网页自动登录

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 安装浏览器驱动

驱动下载网站
官网网站
nmp镜像网站

  浏览器驱动的版本应于本机浏览器的版本一致。可以打开浏览器设置找到关于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来模拟用户操作,但是需要依赖浏览器驱动。这里使用辅助程序来满足驱动依赖,从而达到自动登录的目的。

  若你有任何意见或建议,欢迎在评论区留言讨论。

  • 3
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值