python selenium2 有关cookie操作实例及如何绕开验证码
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操作实例及如何绕开验证码的更多相关文章
- Python编程之列表操作实例详解【创建、使用、更新、删除】
Python编程之列表操作实例详解[创建.使用.更新.删除] 这篇文章主要介绍了Python编程之列表操作,结合实例形式分析了Python列表的创建.使用.更新.删除等实现方法与相关操作技巧,需要的朋 ...
- python 发送json数据操作实例分析 - python
文章来源:嗨学网 敏而好学论坛www.piaodoo.com 欢迎大家相互学习 本文实例讲述了python 发送json数据操作.分享给大家供大家参考,具体如下: # !/usr/bin/env py ...
- 深入了解Cookie(1)------selenium2进行Cookie操作的前奏
世界上最宽阔的是海洋,比海洋还宽阔的是天空,比天空还宽阔的是人的心量.做人的心量有多大.人生的成就就有多大. 不为一己之利去争.去斗.去夺,扫除报复之心和妒忌之念.自然"心底无私天地宽&qu ...
- python requests 的cookie 操作
结论: 1.requests模块的请求和响应分别有cookie对象. 可以通过此对象设置和获取cookie. 2.通过在requests.get,requests.post等方法请求中传入cookie ...
- Appium + python - swipe滑屏操作实例
方法一: from appium import webdriverfrom time import sleep descred_caps = { "platformName":&q ...
- python selenium2 - 鼠标键盘操作
文件路径:Python27\Lib\site-packages\selenium\webdriver\common\action_chains.py action_chains[鼠标键盘动作] 方法说 ...
- python操作mysql数据库的相关操作实例
python操作mysql数据库的相关操作实例 # -*- coding: utf-8 -*- #python operate mysql database import MySQLdb #数据库名称 ...
- Python脚本控制的WebDriver 常用操作 <二十八> 超时设置和cookie操作
超时设置 测试用例场景 webdriver中可以设置很多的超时时间 implicit_wait.识别对象时的超时时间.过了这个时间如果对象还没找到的话就会抛出异常 Python脚本 ff = webd ...
- 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 ...
随机推荐
- 关于Myeclipse的MyEclipse:Java was started but returned exit code=-1 错误
我们在安装MyEclipse后有时会遇到这样一个问题,可以进入主界面软件也属于激活状态,但是过一会会报错, 并弹出MyEclipse:Java was started but returned exi ...
- android安卓生成密钥keystore(命令控制)
android安卓生成密钥keystore(命令控制) • 配置JDK 详细教程 https://blog.csdn.net/u012934325/article/details/73441617/ ...
- Android Bitmap
一 图片表示原理 图片是由每个像素点来组成 像素点就是小方块 图片的大小等于 宽*高*每个像素点的大小 二 加载图片OOM异常 解决办法 其中big.jpg是一张21.2MB的高清图 public c ...
- 【LeetCode算法题库】Day5:Roman to Integer & Longest Common Prefix & 3Sum
[Q13] Roman numerals are represented by seven different symbols: I, V, X, L, C, D and M. Symbol Valu ...
- JavaScript-强制类型转换
因为没有学过其他编程语言,因此作为我的第一门编程“母语”我在这就不举其他编程语言的例子了,JavaScript这个动态类型脚本语言的变量号称是没有类型的,那么我们怎么转换他的变量呢?而且还要强行转换. ...
- tf导出pb文件,以及如何使用pb文件
先罗列出来代码,有时间再解释 from tensorflow.python.framework import graph_util import tensorflow as tf def export ...
- 安装hive的web界面
参考: http://blog.csdn.net/xinghalo/article/details/52433914 报错参考; http://blog.163.com/artsn@126/blog/ ...
- final发布视频展示博客
Part One [探路者]选题展示视频链接: http://v.youku.com/v_show/id_XMzIxMDM2MTQ1Ng==.html?spm=a2h3j.8428770.341605 ...
- Final发布 -----欢迎来怼团队
欢迎来怼项目小组—Final发布展示 一.小组成员 队长:田继平 成员:葛美义,王伟东,姜珊,邵朔,阚博文 ,李圆圆 二.文案+美工展示 链接:http://www.cnblogs.com/js201 ...
- 实验3 --俄罗斯方块 with 20135335郝爽
一. 实验内容 (一)敏捷开发与XP 内容:1.敏捷开发(Agile Development)是一种以人为核心.迭代.循序渐进的开发方法. 2.极限编程(eXtreme Programming,X ...