Selenium成长之路-23cookie的处理

2023-11-02

cookie的处理,一部分是运用到爬虫,另一部分是运用到登录的验证码的获取。

今天来看看webdriver对 cookie都有哪些神操作。

  • get_cookies() 获取所有cookie信息;
  • get_cookie(name) 返回特定name有cookie信息;
  • add_cookie(cookie_dict) 添加cookie,必须有name和value值;
  • delete_cookie(name) 删除特定部分的cookie信息;
  • delete_all_cookie() 删除所有cookie信息。

知道了cookie 有这么多神操作,那么怎么能抓取到cookie呢?

使用我们的神秘武器 "Fiddler"(Charles 也可以)。

Fiddler确实是一个十分牛叉的工具:可以抓包,可以测试接口(Web/APP),可以抓信息等, 

  >>> 这里我就不演示Fiddler的用法了

我们上代码,看看cookie到底有啥操作:

# -*- coding: utf-8 -*-
"""
@ auth : carl_DJ
@ time : 2020-5-22
"""

from selenium import webdriver

#不打开浏览器运行
option = webdriver.ChromeOptions()
option.add_argument('headless')
driver  = webdriver.Chrome(chrome_options=option)

url = "http://www.baidu.com"
driver.get(url)

#获取cookie
cookie= driver.get_cookies()
#打印cookie
print(cookie)

#退出浏览器
driver.quit

打印的结果如下:

  

[{'domain': '.baidu.com', 'httpOnly': False, 'name': 'H_PS_PSSID', 'path': '/', 'secure': False, 'value': '31355_1449_31670_21120_31110_31596_30842_31464_31322_30823'}, {'domain': '.baidu.com', 'expiry': 1621646261.050973, 'httpOnly': False, 'name': 'BAIDUID', 'path': '/', 'secure': False, 'value': '8DDCEC4A62A0DE72D84C5A02861269B2:FG=1'}, {'domain': '.baidu.com', 'expiry': 3737593908.050941, 'httpOnly': False, 'name': 'BIDUPSID', 'path': '/', 'secure': False, 'value': '8DDCEC4A62A0DE7242C056D21382AE78'}, {'domain': '.baidu.com', 'expiry': 3737593908.050959, 'httpOnly': False, 'name': 'PSTM', 'path': '/', 'secure': False, 'value': '1590110259'}, {'domain': 'www.baidu.com', 'expiry': 1590974262, 'httpOnly': False, 'name': 'BD_UPN', 'path': '/', 'secure': False, 'value': '12314753'}, {'domain': 'www.baidu.com', 'httpOnly': False, 'name': 'BD_HOME', 'path': '/', 'secure': False, 'value': '1'}]

是不是很乱,因为所有的信息都打印出来了,那么我们只想要几个的信息怎么办,有办法的,看下面的代码:

 

.....

#向cookie添加信息
driver.add_cookie({"name":"abc123456","value":"value123456"})

#遍历cookies中的name和value信息,并打印
for cookie in driver.get_cookies():
    print("%s -> %s" % (cookie['name'], cookie['value']))

#删除cookie#

##删除一个指定的cookie
driver.delete_cookie("CookieName")

##删除所有cookie信息
driver.delete_all_cookies()

#退出浏览器
driver.quit()

打印结果如下:

abc123456 -> value123456
H_PS_PSSID -> 31351_1445_31669_21078_31594_31270_31464_30823
BAIDUID -> 185872EDC7B507D5EBF82AD614049B02:FG=1
BIDUPSID -> 185872EDC7B507D50824068F1F271AD8
PSTM -> 1590111110
BD_UPN -> 12314753
BD_HOME -> 1

 

是不是很简单。

在实际项目中,我们验证cookie方法有三种: 

   ①获取真的 cookie信息,然后填写;

   ②开发写一个万能验证码,随便填写cookie信息;

   ③不填写cookie信息,跳过。

>>>安全性最高的,肯定是第一种,当然,也是最麻烦的了。没办法,鱼与熊掌不能兼得。

举个例子,我们来整一个登录操作

from selenium import webdriver
from selenium.webdriver.common.by import By
import  os,time


#不打开浏览器运行
option = webdriver.ChromeOptions()
option.add_argument('headless')
driver  = webdriver.Chrome(chrome_options=option)

url = "http://项目地址"
driver.get(url)

#填写登录名和密码
driver.find_element(By.ID,"usn").send_keys("username")
driver.find_element(By.ID,"pwd").send_keys("password")

# #获取cookie
cookies =driver.get_cookies()
# #遍历cookies中的信息,并打印
for  cookie in cookies:
    print(cookie)

#添加cookie
driver.add_cookie({"name":"abc123456","value":"value123456"})

#点击登录按钮
driver.find_element(By.ID,"login").click()

#刷新页面
driver.refresh()
time.sleep(3)

#退出
driver.quit()

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Selenium成长之路-23cookie的处理 的相关文章

随机推荐

  • HBase RowKey设计和实现

    HBase由于存储特性和读写性能 在OLAP即时分析中发挥重要作用 Rowkey的设计好坏关乎到HBase的使用情况 我们知道HBase中定位一条数据需要四个维度的限制 RowKey Column Family Column Qualifi
  • Vue 3.3 新特性-defineModel

    Vue 3 3 新特性 defineModel使用 定义子组件 将原来的defineProps改为defineModel 当子组件变化是 父级组件也会变化 修改对应值
  • Assembler messages error gcc and clang build

    Assembler 错误 Assembler messages 除了自己写的汇编程序会报 Assembler Error外 编译GCC Clang等公开的计算机语言 也会报此错误 自己的汇编 修改自己程序代码 编译GCC Clang等 查看
  • sql: Oracle 11g create procedure

    CREATE OR REPLACE PROCEDURE proc Insert BookKindList temTypeName nvarchar2 temParent int AS ncount number begin SELECT C
  • 关于Navicat连接MySQL出现2059错误解决方法

    一 进入Navicat连接MySQL出现下面的2059界面 原因 mysql8之前版本中加密规则为mysql native password mysql8以后的加密规则为caching sha2 password 将mysql用户登录加密规
  • AI鸟类识别实现自然生态环境数字化监测

    判断一个城市是否生态 是否环保 鸟类往往比人类更加客观公正 更有 发言权 在东营人眼里 鸟类生存繁衍就是生态文明典范城市建设的 晴雨表 和 试金石 现在 很多鸟儿来到保护区都不想走 刘静说 在工作人员细致入微的保护下 很多候鸟都变成了 留鸟
  • 验证码的制作(Canvas)

    目录 画布的知识点 1 绘图 创建画布 2 获取画步 3 获取画笔 4 绘制直线 5 设置描边颜色 6 设置闭合路径 7 填充路径 8 设置填充颜色 9 画弧线 arc x y r 开始角 结束角 方向 10 绘制矩形 rect x y w
  • Windows下获取视频设备的一种改进实现

    之前在https blog csdn net fengbingchun article details 102806822中介绍过在Windows下获取视频设备列表的方法 其实那种实现方法是有缺陷的 当PC机上连接多个视频设备 并且其中有设
  • vite+react搭建人力管理系统项目(2)

    一 登录页面以及相关信息存储 api gt path gt user ts登陆人要请求的api import Get Post from server interface FcResponse
  • 从0开发一个Django博客系统

    目录 一 项目准备 1 1 项目分析 1 2 工程创建和配置 二 注册 2 2 定义用户模型类 2 3 图形验证码 2 4 短信验证码 2 5 用户注册实现 2 6 展示首页 2 7 状态保持 三 登录 3 1 手机登录 3 2 首页用户名
  • Linux下面跑.NET程序

    mono环境的部署 介绍再多也不过是纸上谈兵 实战才是硬道理 工欲善其事必先利其器 要实操 还必须先要有这个环境 下面进入本回合的重点环节 Mono环境的配置 网上也有大量关于mono环境搭建的帖子 基本上都是搭配以下这两种类型的mono环
  • ue4 解决界面不能自动对焦问题

    在UE4界面的制作中遇到了一个小问题 在ue4选中视口的模式中的按钮点击是正常的但是在独立进程游戏模式下或者打包好的项目中点击就出现问题了 界面中的按钮需要点击两次才能够触发响应事件 这问题虽然不是大问题但是很别扭 按钮需要点击两次才行 首
  • 记一次Kafka消费能力低,重新分配节点问题优化

    目前在做一个车联网APP项目 项目中历史轨迹的处理模式为kafka推送给我车辆报文 然后我自行判断车辆熄火点火来进行历史轨迹行程的保存 项目开始车辆较少 每次kafka推送到我的后端 然后我进行处理轨迹开始的插入和轨迹结束的保存就行了 但是
  • SpringCloud介绍

    一 认识SpringCloud 1 SpringCloud基本概念 官网说明 Spring Cloud 为开发人员提供了在分布式系统中快速构建一些常见模式的工具 例如配置管理 服务发现 断路器 智能路由 微代理 控制总线 一次性令牌 全局锁
  • 遇见gtest--事件

    1 前言 在单元测试中 我们经常需要在某个测试套件 测试用例或者整个测试运行之前进行前置条件设置及检查 或者运行之后对运行结果进行校验等操作 在gtest中 称之为事件机制 gtest将事件按照作用的范围不同进行划分 从大到小总共分为3个层
  • 通用函数库(5) 汉字相关操作

    汉字相关操作 region 汉字相关操作
  • sklearn评分函数roc_auc_score和f1_score中参数average的说明

    roc auc score和f1 score中参数average的说明 本文记录在python第三方库sklearn的两个评分函数 sklearn metrics roc auc score 计算AUC 和 sklearn metrics
  • python 使用requests库,以及请求报错问题解决

    Python的请求包是非常强大的 里面封装了我们平时能够用到的所有请求 并且简化了代码 是Python开发非常有用的 安装requests包 利用pip安装 pip install requests 使用requests包 import r
  • 为什么scrollview中手指向上滑时contentOffset是增大的

    手指向上滑时contentOffset增大 我在开始的时候觉的这个很费解 下面是contentOffset的定义 苹果的文档写的特别拗口 可读性上比微软的文档差太多 The point at which the origin of the
  • Selenium成长之路-23cookie的处理

    cookie的处理 一部分是运用到爬虫 另一部分是运用到登录的验证码的获取 今天来看看webdriver对 cookie都有哪些神操作 get cookies 获取所有cookie信息 get cookie name 返回特定name有co