zoukankan      html  css  js  c++  java
  • 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()

    也可以实现免登录

  • 相关阅读:
    java第二次作业 数组和String类
    java第一次作业
    选择
    latex math
    sum的写法
    qt 4.8.5 vs 2012编译
    物联网笔记四:物联网网络及协议
    物联网学习笔记三:物联网网关协议比较:MQTT 和 Modbus
    物联网学习笔记二:物联网网关
    物联网学习笔记一:物联网入门的必备 7 大概念和技能
  • 原文地址:https://www.cnblogs.com/R-bear/p/7470806.html
Copyright © 2011-2022 走看看