Selenium-chrom百度账号 免登录的实现 cookie处理

场景:

  经常会遇到登录需要验证码这样类似的情况

解决方案:

  1.万能验证码

  2.利用cookies来实现,问开发哪个cookies值是登录后需要的,把这个值带上即可

  3.利用火狐浏览器的profile文件来实现(首先需要手工登录一次,且勾选记住信息)

  4.手工输入(需要输入的地方sleep一会)

实例一:

  利用cookies登录百度帐号

    1\获取到cookies,取得登录的cookie

      cookies = driver.get_cookies()

    2\添加cookies,登录帐号

      driver.add_cookie(cookie值)

 

获取到cookies值

def main():
    # ! /usr/bin/env python
    # coding=utf-8

    from selenium import webdriver
    import time

    driver = webdriver.Chrome()
    driver.get("https://www.baidu.com/")
    time.sleep(5)

    driver.find_element_by_link_text( '登录').click()
    time.sleep(3)
    driver.find_element_by_id( 'TANGRAM__PSP_10__footerULoginBtn').click()
    time.sleep(3)
    # 输入账号和密码
    driver.find_element_by_name( "userName").send_keys("自己输入账号")
    driver.find_element_by_name("password").send_keys("自己输密码")
    time.sleep(20)
    # 手动输入验证码
    #登录
    #driver.find_element("id", "TANGRAM__PSP_10__submit").click()
    time.sleep(5)

    # 获取cookies值
    cookies = driver.get_cookies()
    print(cookies)
    driver.quit()
    return cookies
    pass

结果:

  是一个数组[]

 

剩下的如何取到登录的cookie,需要自己去尝试,如果是开发中,就去问开发就行,更方便

def setCookie(cookies):
   
    driver = webdriver.Chrome()
    driver.get("https://www.baidu.com/")
    time.sleep(3)
    for x in cookies:
        print(x)
        driver.add_cookie(cookie_dict=x)
    time.sleep(3)
    driver.refresh()
    time.sleep(3)
    driver.quit()
    pass

结果:

  

 

 

下面的我没有尝试过  上面的已经成功

 

实例二:利用火狐浏览器的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()

复制代码

也可以实现免登录

完整代码如下

import requests
from selenium import webdriver
import time

from selenium.webdriver.common.by import By

# 准备弄一个
def main():
    # ! /usr/bin/env python
    # coding=utf-8

    from selenium import webdriver
    import time

    driver = webdriver.Chrome()
    driver.get("https://www.baidu.com/")
    time.sleep(5)

    driver.find_element_by_link_text( '登录').click()
    time.sleep(3)
    driver.find_element_by_id( 'TANGRAM__PSP_10__footerULoginBtn').click()
    time.sleep(3)
    # 输入账号和密码
    driver.find_element_by_name( "userName").send_keys("自己输入账号")
    driver.find_element_by_name("password").send_keys("自己输密码")
    time.sleep(20)
    # 手动输入验证码
    #登录
    #driver.find_element("id", "TANGRAM__PSP_10__submit").click()
    time.sleep(5)

    # 获取cookies值
    cookies = driver.get_cookies()
    print(cookies)
    driver.quit()
    return cookies
    pass

def setCookie(cookies):
    # cookies=[{'domain': '.baidu.com', 'httpOnly': False, 'name': 'H_PS_PSSID', 'path': '/', 'secure': False, 'value': '1452_21098_20719'}, {'domain': '.baidu.com', 'httpOnly': False, 'name': 'delPer', 'path': '/', 'secure': False, 'value': '0'}, {'domain': '.baidu.com', 'expiry': 3686730569.328661, 'httpOnly': False, 'name': 'BAIDUID', 'path': '/', 'secure': False, 'value': 'D01566B32F942D9355C0BBE162DB5A9B:FG=1'}, {'domain': '.baidu.com', 'expiry': 3686730569.328817, 'httpOnly': False, 'name': 'BIDUPSID', 'path': '/', 'secure': False, 'value': 'D01566B32F942D9355C0BBE162DB5A9B'}, {'domain': '.baidu.com', 'expiry': 3686730569.32888, 'httpOnly': False, 'name': 'PSTM', 'path': '/', 'secure': False, 'value': '1539246923'}, {'domain': 'www.baidu.com', 'httpOnly': False, 'name': 'BDSVRTM', 'path': '/', 'secure': False, 'value': '0'}, {'domain': 'www.baidu.com', 'httpOnly': False, 'name': 'BD_HOME', 'path': '/', 'secure': False, 'value': '0'}, {'domain': '.baidu.com', 'expiry': 1539333324.624538, 'httpOnly': False, 'name': 'BDORZ', 'path': '/', 'secure': False, 'value': 'B490B5EBF6F3CD402E515D22BCDA1598'}, {'domain': 'www.baidu.com', 'expiry': 1540110923, 'httpOnly': False, 'name': 'BD_UPN', 'path': '/', 'secure': False, 'value': '12314753'}]
    driver = webdriver.Chrome()
    driver.get("https://www.baidu.com/")
    time.sleep(3)
    for x in cookies:
        print(x)
        driver.add_cookie(cookie_dict=x)
    time.sleep(3)
    driver.refresh()
    time.sleep(3)
    driver.quit()
    pass
if __name__ == '__main__':
    res=main()
    setCookie(res )

 

  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

安果移不动

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值