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 绕过验证码实现登录相关推荐

  1. python接口自动化(十三)--cookie绕过验证码登录(详解)

    简介 有些登录的接口会有验证码:短信验证码,图形验证码等,这种登录的话验证码参数可以从后台获取的(或者查数据库最直接).获取不到也没关系,可以通过添加cookie的方式绕过验证码.(注意:并不是所有的 ...

  2. python通过cookie绕过验证码_Python Selenium Cookie 绕过验证码实现登录示例代码

    之前介绍过通过cookie 绕过验证码实现登录的方法.这里并不多余,会增加分析和另外一种方法实现登录. 1.思路介绍 1.1.直接看代码,内有详细注释说明 # FileName : Wm_Cookie ...

  3. python绕过验证码_Python:使用Cookie绕过验证码

    使用 cookie 绕过验证码这种方式前提是必须要有长时间保存 cookie 的功能,比如登录时会有勾选项"保存本次登录信息","下次自动登录","记 ...

  4. python绕过验证码登录_python接口自动化(十三)--cookie绕过验证码登录(详解)...

    简介 有些登录的接口会有验证码:短信验证码,图形验证码等,这种登录的话验证码参数可以从后台获取的(或者查数据库最直接).获取不到也没关系,可以通过添加cookie的方式绕过验证码.(注意:并不是所有的 ...

  5. 通过cookie绕过验证码登录(绕过验证码)

    通过cookie绕过验证码登录(绕过验证码) #!/user/bin/env python3 # -*- coding: utf-8 -*- from selenium import webdrive ...

  6. python自动化控制运动_Python +selenium自动化帮你预订运动场地

    导语 炎热的夏天,正是换上短裤短裙晒身材的时候.但是,身材不好怎么办?运动是一个选择,特别是像我们程序员行业,天天坐在空调办公室,更应该出出汗,正所谓:冬练三九,夏练三伏. 下班后,约上公司的妹子,打 ...

  7. python select模块安装_python+selenium select下拉选择框定位处理方法

    一.前言 总结一下python+selenium select下拉选择框定位处理的两种方式,以备后续使用时查询: 二.直接定位(XPath) 使用Firebug找到需要定位到的元素,直接右键复制XPa ...

  8. python资源百度云_Python Selenium 百度云分享链接资源 批量保存

    [Python] 纯文本查看 复制代码# -*- coding: UTF-8 -*- from docx import Document #安装 pip install python-docx imp ...

  9. python time智能等待_Python Selenium智能等待

    前言 在使用python selenium进行自动化测试实践的过程中,经常会遇到元素定位不到,弹出框定位不到等等各种定位不到的情况,在大多数的情况下,无非是以下两种情况: 1.有frame存在,定位前 ...

  10. python抓取教学_Python Selenium 实战教学:爬取每日天气

    前言 本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理. 作者:气象学渣 一.准备工作 1.Selenium的介绍与安装 Selen ...

最新文章

  1. 树莓派视觉小车 -- 人脸追踪(人脸识别、PID控制舵机运动)
  2. 【C++】algorithm具体操作记录
  3. 几种xml读取方法比较
  4. Java中log4j控制写入日志开关
  5. 2018-2019-1 《信息安全系统设计基础》 20165235 实验五 通信协议设计
  6. 【BZOJ】【4145】【AMPPZ2014】The Prices
  7. P5952-[POI2018]水箱【最小生成树】
  8. Android 系统(171)---OrmLite数据库框架,Picasso框架,Okio框架,OKHttp框架
  9. spark学习-51-Spark的task任务的运行
  10. python常用数据结构_Python常见数据结构整理
  11. 深入理解NIO - Selector、ServerSocketChannel、SocketChannel底层原理
  12. QQ超市模拟排配2D版 1.08 (XNA4.0)
  13. vue循环出来列表里面的列表点击click事件只对当前列表有效;
  14. 中国人寿诈骗的内幕 (转自杭州网论坛)
  15. 1月 23 surface pro 3. windows ubuntu 双系统安装
  16. 重载前自增运算符和后自增运算符
  17. Mac触控板Magic Trackpad的常用手势
  18. 相机视场角和焦距_摄像机焦距和视场角计算.doc
  19. asp.net单点登录
  20. 工作清单软件哪个好用?桌面计划待办清单便签

热门文章

  1. OpenCV关于隐马尔科夫模型的结构和函数
  2. 嵌入式Linux编程--我的第一次艰难跋涉
  3. Java中System.getProperty()的作用及使用
  4. python函数调用时所提供的参数可以是常量_如何使用mock作为函数参数在Python中修补常量...
  5. php无人点餐,东营_无人餐厅来了! 自助点餐、自动上菜 , 没有一个服务员!_胜利社区_东营论坛_油城茶座...
  6. python设计模式pdf_精通python设计模式豆瓣-精通python设计模式第二版电子书pdf下载-精品下载...
  7. oracle10g 数据源管理器找不到应用程序,可能是程序没有正确安装问题解决
  8. javascript中Object类原型对象的属性和方法
  9. Salesforce:下个财年营收我们有望突破100亿美元
  10. jQuery源码分析系列(31) : Ajax deferred实现