Selenium-免登录的实现
Posted 会跑的熊
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Selenium-免登录的实现相关的知识,希望对你有一定的参考价值。
场景:
经常会遇到登录需要验证码这样类似的情况
解决方案:
1.万能验证码
2.利用cookies来实现,问开发哪个cookies值是登录后需要的,把这个值带上即可
3.利用火狐浏览器的profile文件来实现(首先需要手工登录一次,且勾选记住信息)
4.手工输入(需要输入的地方sleep一会)
实例一:
利用cookies登录百度帐号
1\\获取到cookies,取得登录的cookie
cookies = driver.get_cookies()
2\\添加cookies,登录帐号
driver.add_cookie(cookie值)
获取到cookies值
#! /usr/bin/env python #coding=utf-8 from selenium import webdriver import time driver = webdriver.Firefox() driver.get("https://www.baidu.com/") time.sleep(3) driver.find_element("linkText","登录").click() driver.find_element("name","userName").send_keys("13560459046") driver.find_element("name","password").send_keys("xr199122") time.sleep(20) #手动输入验证码 driver.find_element("id","TANGRAM__PSP_10__submit").click() time.sleep(5) #获取cookies值 cookies = driver.get_cookies() print(cookies) driver.quit() #删除cookies值 #driver.delete_all_cookies()
结果:
[
{\'value\': \'828211617093E523BC5EDFE05AB3EA39:FG=1\', \'expiry\': 3651917680, \'path\': \'/\', \'name\': \'BAIDUID\', \'httpOnly\': False, \'secure\': False, \'domain\': \'.baidu.com\'},
{\'value\': \'828211617093E523BC5EDFE05AB3EA39\', \'expiry\': 3651917680, \'path\': \'/\', \'name\': \'BIDUPSID\', \'httpOnly\': False, \'secure\': False, \'domain\': \'.baidu.com\'},
{\'value\': \'1504433526\', \'expiry\': 3651917680, \'path\': \'/\', \'name\': \'PSTM\', \'httpOnly\': False, \'secure\': False, \'domain\': \'.baidu.com\'},
{\'value\': \'B490B5EBF6F3CD402E515D22BCDA1598\', \'expiry\': 1504520438, \'path\': \'/\', \'name\': \'BDORZ\', \'httpOnly\': False, \'secure\': False, \'domain\': \'.baidu.com\'},
{\'value\': \'eee17f0ccd81747c87f3b9e5f43712eb\', \'expiry\': 2556057600, \'path\': \'/\', \'name\': \'FP_UID\', \'httpOnly\': False, \'secure\': False, \'domain\': \'.baidu.com\'},
{\'value\': \'N2YTVzQX5aTWl4THpFWGhOMFp4VDk2T1MyQ0Z5bWRwRDMtcnhSN0lkQ1pZdE5aSVFBQUFBJCQAAAAAAAAAAAEAAAC~pSxhu-HF3LXE0NwyAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJnVq1mZ1atZdk\', \'expiry\': 1763634068, \'path\': \'/\', \'name\': \'BDUSS\', \'httpOnly\': True, \'secure\': False, \'domain\': \'.baidu.com\'},
{\'value\': \'1\', \'expiry\': None, \'path\': \'/\', \'name\': \'BD_HOME\', \'httpOnly\': False, \'secure\': False, \'domain\': \'www.baidu.com\'},
{\'value\': \'1439_12897_21089_22160\', \'expiry\': None, \'path\': \'/\', \'name\': \'H_PS_PSSID\', \'httpOnly\': False, \'secure\': False, \'domain\': \'.baidu.com\'},
{\'value\': \'13314352\', \'expiry\': 1505298070, \'path\': \'/\', \'name\': \'BD_UPN\', \'httpOnly\': False, \'secure\': False, \'domain\': \'www.baidu.com\'},
{\'value\': \'1\', \'expiry\': 2450514070, \'path\': \'/\', \'name\': \'sugstore\', \'httpOnly\': False, \'secure\': False, \'domain\': \'.www.baidu.com\'}
]
剩下的如何取到登录的cookie,需要自己去尝试,如果是开发中,就去问开发就行,更方便
利用cookie值,登录百度帐号
#! /usr/bin/env python #coding=utf-8 from selenium import webdriver import time \'\'\' 利用cookies值登录百度 {\'value\': \'N2YTVzQX5aTWl4THpFWGhOMFp4VDk2T1MyQ0Z5bWRwRDMtcnhSN0lkQ1pZdE5aSVFBQUFBJCQAAAAAAAAAAAEAAAC~pSxhu-HF3LXE0NwyAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJnVq1mZ1atZdk\', \'expiry\': 1763634068, \'path\': \'/\', \'name\': \'BDUSS\', \'httpOnly\': True, \'secure\': False, \'domain\': \'.baidu.com\'} \'\'\' driver = webdriver.Firefox() driver.get("https://www.baidu.com/") time.sleep(3) #设置cookies值,基本格式 c1 = {\'value\': \'N2YTVzQX5aTWl4THpFWGhOMFp4VDk2T1MyQ0Z5bWRwRDMtcnhSN0lkQ1pZdE5aSVFBQUFBJCQAAAAAAAAAAAEAAAC~pSxhu-HF3LXE0NwyAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJnVq1mZ1atZdk\', \'expiry\': 1763634068, \'path\': \'/\', \'name\': \'BDUSS\', \'httpOnly\': True, \'secure\': False, \'domain\': \'.baidu.com\'} #添加cookies driver.add_cookie(c1) time.sleep(3) #刷新之后观察是否已经登录成功 driver.refresh() time.sleep(5) driver.quit()
结果:
实例二:利用火狐浏览器的profile文件来实现(首先需要手工登录一次,且勾选记住信息),登录百度帐号
#! /usr/bin/env python #coding=utf-8 from selenium import webdriver import time \'\'\' 自己的火狐浏览器的profile文件路径查看方法 火狐浏览器-帮助-故障排除信息-显示文件夹 必须手工登录一次,并记住密码之后再运行此代码才可以 \'\'\' profile_ff = "C:/Users/Administrator/AppData/Roaming/Mozilla/Firefox/Profiles/2e4p97lg.default" fp = webdriver.FirefoxProfile(profile_ff) driver = webdriver.Firefox(fp) driver.get("https://www.baidu.com/") time.sleep(5) driver.quit()
也可以实现免登录
以上是关于Selenium-免登录的实现的主要内容,如果未能解决你的问题,请参考以下文章