python selenium手动输入验证码_Python Selenium Cookie 绕过验证码实现登录
Python Selenium Cookie 绕过验证码实现登录
之前介绍过博客园的通过cookie 绕过验证码实现登录的方法。这里并不多余,会增加分析和另外一种方法实现登录。
1、思路介绍
1.1、直接看代码,内有详细注释说明
#FileName : Wm_Cookie_Login.py#Author : Adil#DateTime : 2018/3/20 19:47#SoftWare : PyCharm
from selenium importwebdriverimporttime
url= 'https://system.address'
deflogin():'''先定义一个正常登录的方法,获取登录前和登录后的cookie'''driver=webdriver.Chrome()
driver.get(url)
driver.maximize_window()
cookieBefore=driver.get_cookies()#打印登录前的cookie
print(cookieBefore)
time.sleep(2)
driver.find_element_by_id("new-username").clear()
driver.find_element_by_id("new-username").send_keys("username")
driver.implicitly_wait(5)
driver.find_element_by_id("new-password").clear()
driver.find_element_by_id("new-password").send_keys("password")
driver.find_element_by_id('home-right-login').click()
driver.implicitly_wait(5)#加一个休眠,这样得到的cookie 才是登录后的cookie,否则可能打印的还是登录前的cookie
time.sleep(5)print("登录后!")
cookiesAfter=driver.get_cookies()print("cookiesAfter:")print(cookiesAfter)#cookie 存放到了list,其中是dict
#对比发现登录后的cookie比登录前多了4个dict。
#如下代码分别是 1、4 、7、 8
len1 =len(cookiesAfter)print("len:%d" %len1)
cookie1=cookiesAfter[0]
cookie2= cookiesAfter[3]
cookie3= cookiesAfter[-2]
cookie4= cookiesAfter[-1]print("cookie1:%s" %cookie1)print("cookie2:%s" %cookie2)print("cookie3:%s" %cookie3)print("cookie4:%s" %cookie4)
driver.quit()#将获取的这四个cookie作为参数,传递给,使用cookie登录的函数,如下
cookieLogin(cookie1,cookie2,cookie3,cookie4)defcookieLogin(cookie1,cookie2,cookie3,cookie4):print("+++++++++++++++++++++++++")print("cookieLogin")print("cookie2:%s" %cookie2)print("cookie4:%s" %cookie4)
driver=webdriver.Chrome()
driver.maximize_window()#清除一下cookie
driver.delete_all_cookies()
time.sleep(3)
driver.get(url)#打开浏览器后添加访问地址后,添加cookie
driver.add_cookie(cookie1)
driver.add_cookie(cookie2)
driver.add_cookie(cookie3)
driver.add_cookie(cookie4)print("cookies")#打印一下cookie,与上面正常登录的cookie对比一下
print(driver.get_cookies())
time.sleep(5)#刷新页面,可以看到已经是登录状态了,至此完成的使用cookie 的登录。
driver.refresh()
time.sleep(5)
driver.quit()if __name__ == "__main__":
login()
1.2、代码介绍
如图,可以查看到登录前与登录后的cookie,将其拷贝出来,进行对比
如图,对比可以,登录后多余四个cookie
查看多余cookie的位置,是list 的1、4、7、8g额元素,所以将其取出,作为参数给cookie登录函数。
注意:该实例介绍的是无验证码登录操作,但思路是一样的。而这个demo ,仅仅是为了介绍一下使用cookie 登录的思路,具体项目应用中,这样是很不方便的。
2、绕过验证码登录实战
接下来,介绍含有验证码的登录,当然cookie处理的思路与上介绍的基本一样
这里增加了几点内容:
a、先首次使用验证码正确登录并保存登录前、后的cookie,对比分析cookie,筛选有用的cookie
b、将cookie 写到yaml 文件中,方便后续使用cookie登录时直接使用,而不需像上面介绍的那样,每次都需要先正常登录一样。
c、使用cookie登录时,从yaml文件中读取对应cookie即可。注意:Yaml 文件操作详见:
注意:这里介绍的是先手动输入验证码正确登录后获取cookie。实际应用中可以使用其他方式获取cookie
如:1、之前介绍的博客园登录实例:
2、使用浏览器查看cookie 如,借助chrome 插件如下图,导出cookie进行分析。
思路如上,代码如下:
2.1、正常登录获取有效cookie
#FileName : getLoginCookie.py#Author : Adil#DateTime : 2018/3/20 21:43#SoftWare : PyCharm
importyaml,time,osfrom selenium importwebdriver
url= 'https://system.address'driver=webdriver.Chrome()
driver.get(url)
driver.maximize_window()
time.sleep(2)
driver.find_element_by_id("username").clear()
driver.find_element_by_id("username").send_keys("username")
driver.implicitly_wait(5)
driver.find_element_by_id("password").clear()
driver.find_element_by_id("password").send_keys("password")print("请输入验证码:")#手动输入验证码
security_code =input()
time.sleep(1)
driver.find_element_by_id("security_code").send_keys(security_code)
time.sleep(1)
driver.find_element_by_id('sign_btn').click()
driver.implicitly_wait(5)#加一个休眠,这样得到的cookie 才是登录后的cookie,否则可能打印的还是登录前的cookie
time.sleep(5)
cookiesAfter=driver.get_cookies()
len1=len(cookiesAfter)#已经知道需要第几个cookie,这里需要第3个cookie,所以选择cookie下标为2
cookie1 = cookiesAfter[2]#获取当前文件所在路径
fileNamePath = os.path.split(os.path.realpath(__file__))[0]#拼接config.yaml文件绝对路径
yamlPath = os.path.join(fileNamePath,'config.yaml')#以覆盖写入打开文件
fw = open(yamlPath,'w',encoding='utf-8')#构建数据
data = {"cookie1":cookie1}#装载写入yaml文件。
yaml.dump(data,fw)
driver.quit()
2.2、读取cookie配置文件,使用cookie登录系统
#FileName : stlUseCookieLogin.py#Author : Adil#DateTime : 2018/3/20 21:48#SoftWare : PyCharm
from selenium importwebdriverimporttime,yaml,os
url= 'https://system.address'driver=webdriver.Chrome()
driver.maximize_window()
driver.delete_all_cookies()
time.sleep(3)
driver.get(url)
fileNamePath= os.path.split(os.path.realpath(__file__))[0]
yamlPath= os.path.join(fileNamePath,'config.yaml')#读取yaml 文件
f = open(yamlPath,'r',encoding='utf-8')
cont=f.read()
conf=yaml.load(cont)#读取cookie值
cookie1 = conf.get("cookie1")#添加cookie
driver.add_cookie(cookie1)print("cookies")print(driver.get_cookies())
time.sleep(5)#这里重新获取地址,因为有些系统,未登录状态,链接会跳转,这里就是,登录状态后,才能正确打开指定网址,所以这里要再次指定网址。
driver.get(url)#刷新查看登录状态
driver.refresh()
time.sleep(5)
driver.quit()
以上应该算是已经详细的介绍了使用cookie 登录的思路了。有什么问题可以加群沟通,或是关注微信公众号,进行沟通。希望对大家有所帮助。
python selenium手动输入验证码_Python Selenium Cookie 绕过验证码实现登录相关推荐
- python接口自动化(十三)--cookie绕过验证码登录(详解)
简介 有些登录的接口会有验证码:短信验证码,图形验证码等,这种登录的话验证码参数可以从后台获取的(或者查数据库最直接).获取不到也没关系,可以通过添加cookie的方式绕过验证码.(注意:并不是所有的 ...
- python通过cookie绕过验证码_Python Selenium Cookie 绕过验证码实现登录示例代码
之前介绍过通过cookie 绕过验证码实现登录的方法.这里并不多余,会增加分析和另外一种方法实现登录. 1.思路介绍 1.1.直接看代码,内有详细注释说明 # FileName : Wm_Cookie ...
- python绕过验证码_Python:使用Cookie绕过验证码
使用 cookie 绕过验证码这种方式前提是必须要有长时间保存 cookie 的功能,比如登录时会有勾选项"保存本次登录信息","下次自动登录","记 ...
- python绕过验证码登录_python接口自动化(十三)--cookie绕过验证码登录(详解)...
简介 有些登录的接口会有验证码:短信验证码,图形验证码等,这种登录的话验证码参数可以从后台获取的(或者查数据库最直接).获取不到也没关系,可以通过添加cookie的方式绕过验证码.(注意:并不是所有的 ...
- 通过cookie绕过验证码登录(绕过验证码)
通过cookie绕过验证码登录(绕过验证码) #!/user/bin/env python3 # -*- coding: utf-8 -*- from selenium import webdrive ...
- python自动化控制运动_Python +selenium自动化帮你预订运动场地
导语 炎热的夏天,正是换上短裤短裙晒身材的时候.但是,身材不好怎么办?运动是一个选择,特别是像我们程序员行业,天天坐在空调办公室,更应该出出汗,正所谓:冬练三九,夏练三伏. 下班后,约上公司的妹子,打 ...
- python select模块安装_python+selenium select下拉选择框定位处理方法
一.前言 总结一下python+selenium select下拉选择框定位处理的两种方式,以备后续使用时查询: 二.直接定位(XPath) 使用Firebug找到需要定位到的元素,直接右键复制XPa ...
- python资源百度云_Python Selenium 百度云分享链接资源 批量保存
[Python] 纯文本查看 复制代码# -*- coding: UTF-8 -*- from docx import Document #安装 pip install python-docx imp ...
- python time智能等待_Python Selenium智能等待
前言 在使用python selenium进行自动化测试实践的过程中,经常会遇到元素定位不到,弹出框定位不到等等各种定位不到的情况,在大多数的情况下,无非是以下两种情况: 1.有frame存在,定位前 ...
- python抓取教学_Python Selenium 实战教学:爬取每日天气
前言 本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理. 作者:气象学渣 一.准备工作 1.Selenium的介绍与安装 Selen ...
最新文章
- 树莓派视觉小车 -- 人脸追踪(人脸识别、PID控制舵机运动)
- 【C++】algorithm具体操作记录
- 几种xml读取方法比较
- Java中log4j控制写入日志开关
- 2018-2019-1 《信息安全系统设计基础》 20165235 实验五 通信协议设计
- 【BZOJ】【4145】【AMPPZ2014】The Prices
- P5952-[POI2018]水箱【最小生成树】
- Android 系统(171)---OrmLite数据库框架,Picasso框架,Okio框架,OKHttp框架
- spark学习-51-Spark的task任务的运行
- python常用数据结构_Python常见数据结构整理
- 深入理解NIO - Selector、ServerSocketChannel、SocketChannel底层原理
- QQ超市模拟排配2D版 1.08 (XNA4.0)
- vue循环出来列表里面的列表点击click事件只对当前列表有效;
- 中国人寿诈骗的内幕 (转自杭州网论坛)
- 1月 23 surface pro 3. windows ubuntu 双系统安装
- 重载前自增运算符和后自增运算符
- Mac触控板Magic Trackpad的常用手势
- 相机视场角和焦距_摄像机焦距和视场角计算.doc
- asp.net单点登录
- 工作清单软件哪个好用?桌面计划待办清单便签
热门文章
- OpenCV关于隐马尔科夫模型的结构和函数
- 嵌入式Linux编程--我的第一次艰难跋涉
- Java中System.getProperty()的作用及使用
- python函数调用时所提供的参数可以是常量_如何使用mock作为函数参数在Python中修补常量...
- php无人点餐,东营_无人餐厅来了! 自助点餐、自动上菜 , 没有一个服务员!_胜利社区_东营论坛_油城茶座...
- python设计模式pdf_精通python设计模式豆瓣-精通python设计模式第二版电子书pdf下载-精品下载...
- oracle10g 数据源管理器找不到应用程序,可能是程序没有正确安装问题解决
- javascript中Object类原型对象的属性和方法
- Salesforce:下个财年营收我们有望突破100亿美元
- jQuery源码分析系列(31) : Ajax deferred实现