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()

也可以实现免登录

posted @ 2017-09-03 20:27  R-Bear  阅读(4489)  评论(0编辑  收藏  举报