Selenium 添加Cookie实现绕过登录流程

发表于:2021-5-21 09:55

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:老祝头    来源:博客园

  有些简单的网站我们可以简单的send key来输入账户密码就可以登录,但是有很多网站需要验证码之类的就不太好用了,这时候就体现到了cookie登录的优点了。
  创建demo.py
  from selenium import webdriver
  import time
  import json
   
  #填写webdriver的保存目录
  driver = webdriver.Chrome('../chromedriver.exe')
   
  #记得写完整的url 包括http和https
  driver.get('https://www.baidu.com')
   
  #程序打开网页后20秒内手动登陆账户
  time.sleep(30)
   
  with open('cookies.txt','w') as cookief:
      #将cookies保存为json格式
      cookief.write(json.dumps(driver.get_cookies()))
   
  driver.close()
  创建demo2.py
  from selenium import webdriver
  import time
  import json
   
  #填写webdriver的保存目录
  driver = webdriver.Chrome()
   
  #记得写完整的url 包括http和https
  driver.get('https://www.baidu.com')
  #首先清除由于浏览器打开已有的cookies
  driver.delete_all_cookies()
   
   
  with open('cookies.txt','r') as cookief:
      #使用json读取cookies 注意读取的是文件 所以用load而不是loads
      cookieslist = json.load(cookief)
      for cookie in cookieslist:
          driver.add_cookie(cookie)
  # 刷新页面
  driver.refresh()
  解决Cookie时效性字段
  from selenium import webdriver
  import json
   
  #填写webdriver的保存目录
  driver = webdriver.Chrome('../chromedriver.exe')
   
  #记得写完整的url 包括http和https
  driver.get('https://www.baidu.com')
  #首先清除由于浏览器打开已有的cookies
  driver.delete_all_cookies()
   
  with open('cookies.txt','r') as cookief:
      #使用json读取cookies 注意读取的是文件 所以用load而不是loads
      cookieslist = json.load(cookief)
   
      # 方法1 将expiry类型变为int
      for cookie in cookieslist:
          #并不是所有cookie都含有expiry 所以要用dict的get方法来获取
          if isinstance(cookie.get('expiry'), float):
              cookie['expiry'] = int(cookie['expiry'])
          driver.add_cookie(cookie)
   
  driver.refresh()
  import time
  import json
  #填写webdriver的保存目录
  driver = webdriver.Chrome('../chromedriver.exe')
  #记得写完整的url 包括http和https
  driver.get('https://www.baidu.com')
  #程序打开网页后20秒内手动登陆账户
  time.sleep(30)
  with open('cookies.txt','w') as cookief:
      #将cookies保存为json格式
  cookief.write(json.dumps(driver.get_cookies()))
  driver.close()

   上文内容不用于商业目的,如涉及知识产权问题,请权利人联系博为峰小编(021-64471599-8017),我们将立即处理。
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号