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-免登录的实现的主要内容,如果未能解决你的问题,请参考以下文章

Python3 使用requests库读取本地保存的cookie文件实现免登录访问

免登录实现CSDN博客代码复制(2021.9.26)

免登录实现CSDN博客代码复制(2021.9.26)

cookie是怎么实现用户免登录的

Cookie实现免用户名和密码自动登录

使用selenium 50句代码 实现12306登录