1.先看一下cookie是啥

cookie是访问web时服务器记录在用户本地的一系列用户信息(比如用户登录信息),以便对用户进行识别

from selenium import webdriver
import time base_url = "https://www.baidu.com" driver = webdriver.Firefox()
driver.implicitly_wait(10)
driver.get(base_url) #打印所有cookie
print driver.get_cookies()

得到如下打印

列表中为所有cookie,不同的cookie在其中各字典中

cookie_1 = {u'domain': u'.baidu.com',
u'name': u'BDORZ',
u'value': u'B490B5xxxxxxxxxxxxxxxxxDA1598',
u'expiry': 1490346310,
u'path': u'/',
u'httpOnly': False,
u'secure': False}

name:cookie的名称

value:cookie对应的值,动态生成的

domain:服务器域名

expiry:cookie有效终止日期

path:Path属性定义了Web服务器上哪些路径下的页面可获取服务器设置的cookie

httpOnly:防脚本攻击

secure:在cookie中标记该变量,表明只有当浏览器和Web Server之间的通信协议为加密认证协议时(当前即https),浏览器才向服务器提交相应的cookie

2.使用cookie绕开登录验证码

登录百度时需要输入验证码,我们抓取登录前的cookie,和登录后的cookie,对比发生的变化

首先打开fiddler抓包

执行如下脚本,注意在输入验证码时脚本无法处理,所以加了等待,这时可以自己手动输入验证码,然后等待click

#coding=utf-8
from selenium import webdriver
import time base_url = "https://www.baidu.com"
usr_name = "xxoo"
usr_pwd = "xxoo" driver = webdriver.Firefox()
driver.implicitly_wait(10) #清除所有cookie
driver.delete_all_cookies()
driver.get(base_url)
print driver.get_cookies() driver.find_element_by_link_text(u"登录").click()
driver.find_element_by_css_selector("#TANGRAM__PSP_8__userName").send_keys(usr_name)
driver.find_element_by_css_selector("#TANGRAM__PSP_8__password").send_keys(usr_pwd)
time.sleep(10)
#在这个等待的时间里去手动输入验证码 driver.find_element_by_css_selector("#TANGRAM__PSP_8__submit").click()
time.sleep(3)
#打印登录后的cookie
print driver.get_cookies()

在打印中我们得到如下所有cookie

在fiddler抓包中找到登录前后的包,其中有对应的cookie

登录前

登录后

这里的cookie中只能体现name和value信息,cookie的完整格式在前面讲到

对比前后cookie可以看到登录后多了BDORZ和BDUSS信息

那么我们在前面脚本打印的cookie中提出对应的这两组cookie,写入新的脚本中

执行新的脚本发现,不在需要输入用户名密码和验证码了,刷新后就会进入登录状态

#coding=utf-8
from selenium import webdriver
import time base_url = "https://www.baidu.com"
driver = webdriver.Firefox()
driver.implicitly_wait(10) #清除所有cookie
driver.delete_all_cookies()
driver.get(base_url) cookie_1 = {u'domain': u'.baidu.com',
u'name': u'BDORZ',
u'value': u'B490B5EBXXXXXXXXXXXXXDA1598',
u'expiry': 1490346310,
u'path': u'/',
u'httpOnly': False,
u'secure': False} cookie_2 = {u'domain': u'.baidu.com',
u'name': u'BDUSS',
u'value': u'o0Z29lNFRPOE85TXXXXXXXXXXXXXXXXXXXXXXXXXXXQnk2Rno3dmFIUHRZSVFBQUFBJCQAAAAAAAAAAAEAAAC8yRwCXXXXd2VlAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANqP01jaj9NYak',
u'expiry': 1749459934,
u'path': u'/',
u'httpOnly': True,
u'secure': False} #添加cookie
driver.add_cookie(cookie_1)
driver.add_cookie(cookie_2)
time.sleep(2)
driver.refresh()

#水平拙劣,不妥之处请指正

python selenium2 有关cookie操作实例及如何绕开验证码的更多相关文章

  1. Python编程之列表操作实例详解【创建、使用、更新、删除】

    Python编程之列表操作实例详解[创建.使用.更新.删除] 这篇文章主要介绍了Python编程之列表操作,结合实例形式分析了Python列表的创建.使用.更新.删除等实现方法与相关操作技巧,需要的朋 ...

  2. python 发送json数据操作实例分析 - python

    文章来源:嗨学网 敏而好学论坛www.piaodoo.com 欢迎大家相互学习 本文实例讲述了python 发送json数据操作.分享给大家供大家参考,具体如下: # !/usr/bin/env py ...

  3. 深入了解Cookie(1)------selenium2进行Cookie操作的前奏

    世界上最宽阔的是海洋,比海洋还宽阔的是天空,比天空还宽阔的是人的心量.做人的心量有多大.人生的成就就有多大. 不为一己之利去争.去斗.去夺,扫除报复之心和妒忌之念.自然"心底无私天地宽&qu ...

  4. python requests 的cookie 操作

    结论: 1.requests模块的请求和响应分别有cookie对象. 可以通过此对象设置和获取cookie. 2.通过在requests.get,requests.post等方法请求中传入cookie ...

  5. Appium + python - swipe滑屏操作实例

    方法一: from appium import webdriverfrom time import sleep descred_caps = { "platformName":&q ...

  6. python selenium2 - 鼠标键盘操作

    文件路径:Python27\Lib\site-packages\selenium\webdriver\common\action_chains.py action_chains[鼠标键盘动作] 方法说 ...

  7. python操作mysql数据库的相关操作实例

    python操作mysql数据库的相关操作实例 # -*- coding: utf-8 -*- #python operate mysql database import MySQLdb #数据库名称 ...

  8. Python脚本控制的WebDriver 常用操作 <二十八> 超时设置和cookie操作

    超时设置 测试用例场景 webdriver中可以设置很多的超时时间 implicit_wait.识别对象时的超时时间.过了这个时间如果对象还没找到的话就会抛出异常 Python脚本 ff = webd ...

  9. JS封装cookie操作函数实例(设置、读取、删除)

    本文实例讲述了JS封装cookie操作函数.分享给大家供大家参考,具体如下: ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 ...

随机推荐

  1. 流行创意风格教师求职简历免费word模板

    18款流行创意风格教师求职简历免费word模板,也可用于其他专业和职业,个人免费简历模板,个人简历表免费,个人简历表格. 声明:该简历模板仅用于个人欣赏使用,请勿用于商业用途,谢谢. 下载地址:百度网 ...

  2. mac指令备忘

    在这里简单记录下最近使用的快捷键,备忘,随时更新. 简单指令记录 mkdir 创建路径 pwd 输出当前路径 ls 查看目录 cd touch 创建文件 tree 输出目录树 mv 源文件 目标文件或 ...

  3. openstack系列文章(四)

    学习 openstack 的系列文章 - Nova Nova 基本概念 Nova 架构 openstack Log Nova 组件介绍 Nova 操作介绍 1. Nova 基本概念 Nova 是 op ...

  4. 配置tensorflow环境(anaconda+jupyter notebook)

    很早之前,tensorflow环境之前我也曾装过,但是用的不是很舒服,很多问题都不明所以然.今天想要系统地学习一下tensorflow,于是又重新搭建了一遍,这次还是踩了不少坑.特此写下此文,供有兴趣 ...

  5. spring boot+mybatis+swagger搭建

    环境概述 使用的开发工具:idea 2018 3.4 环境:jdk1.8 数据库:MariaDB (10.2.21) 包管理:Maven 3.5 Web容器:Tomcat 8.0 开发机系统:Wind ...

  6. PHP.ini 能不能加载子配置文件 ?

    答案是不能,php这个地方用的是另一个方案解决的 编译的时候 用这个参数 --with-config-file-scan-dir指定一个目录 然后在这个目录里面加载ini   https://www. ...

  7. D.王者荣耀交流协会——PSP Daily(测评人:贾男男)

    D.王者荣耀交流协会——PSP Daily(测评人:贾男男) 一.基于NABCD评论作品,及改进建议 每个小组评论其他小组beta发布的作品.1.根据(不限于)NABCD评论作品的选题;2.评论作品对 ...

  8. idea打断点是灰色的

    点击这个图标,debug的断点就是灰色的,debug功能被禁用

  9. iOS开发学习-NSUserDefaults的介绍和用法

    NSUserDefaults类提供了一个与默认系统进行交互的编程接口.NSUserDefaults对象是用来保存,恢复应用程序相关的偏好设置,配置数据等等.默认系统允许应用程序自定义它的行为去迎合用户 ...

  10. web12 使用map型的request、session、application

    电影网站:www.aikan66.com 项目网站:www.aikan66.com 游戏网站:www.aikan66.com 图片网站:www.aikan66.com 书籍网站:www.aikan66 ...