搜索
首页后端开发Python教程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 import webdriver
import time
url = 'https://system.address'
def login():
  '''先定义一个正常登录的方法,获取登录前和登录后的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)
def cookieLogin(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 文件操作详见: Python Yaml 学习 ,有详细介绍yaml的读写操作。

注意:这里介绍的是先手动输入验证码正确登录后获取cookie。实际应用中可以使用其他方式获取cookie

如:1、之前介绍的博客园登录实例:Python - Cookie绕过验证码登录  使用fiddler,查看cookie

  2、使用浏览器查看cookie 如,借助chrome 插件如下图,导出cookie进行分析。

思路如上,代码如下:

 2.1、正常登录获取有效cookie

# FileName : getLoginCookie.py
# Author  : Adil
# DateTime : 2018/3/20 21:43
# SoftWare : PyCharm
import yaml,time,os
from selenium import webdriver
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 import webdriver
import time,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()


以上是Python Selenium Cookie 绕过验证码实现登录示例代码_的详细内容。更多信息请关注PHP中文网其他相关文章!

声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
Laravel开发:如何使用Laravel Dusk和Selenium进行浏览器测试?Laravel开发:如何使用Laravel Dusk和Selenium进行浏览器测试?Jun 14, 2023 pm 01:53 PM

Laravel开发:如何使用LaravelDusk和Selenium进行浏览器测试?随着Web应用程序变得越来越复杂,我们需要确保其各个部分都能正常运行。浏览器测试是一种常见的测试方法,用于确保应用在各种不同浏览器下的正确性和稳定性。在Laravel开发中,可以使用LaravelDusk和Selenium进行浏览器测试。本文将介绍如何使用这两个工具进行测

利用Java、Selenium和OpenCV结合的方法,解决自动化测试中滑块验证问题。利用Java、Selenium和OpenCV结合的方法,解决自动化测试中滑块验证问题。May 08, 2023 pm 08:16 PM

1、滑块验证思路被测对象的滑块对象长这个样子。相对而言是比较简单的一种形式,需要将左侧的拼图通过下方的滑块进行拖动,嵌入到右侧空槽中,即完成验证。要自动化完成这个验证过程,关键点就在于确定滑块滑动的距离。根据上面的分析,验证的关键点在于确定滑块滑动的距离。但是看似简单的一个需求,完成起来却并不简单。如果使用自然逻辑来分析这个过程,可以拆解如下:1.定位到左侧拼图所在的位置,由于拼图的形状和大小固定,那么其实只需要定位其左边边界离背景图片的左侧距离。(实际在本例中,拼图的起始位置也是固定的,节省了

如何使用Selenium进行Web自动化测试如何使用Selenium进行Web自动化测试Aug 02, 2023 pm 07:43 PM

如何使用Selenium进行Web自动化测试概述:Web自动化测试是现代软件开发过程中至关重要的一环。Selenium是一个强大的自动化测试工具,可以模拟用户在Web浏览器中的操作,实现自动化的测试流程。本文将介绍如何使用Selenium进行Web自动化测试,并附带代码示例,帮助读者快速上手。环境准备在开始之前,需要安装Selenium库和Web浏览器驱动程

高效率爬取网页数据:PHP和Selenium的结合使用高效率爬取网页数据:PHP和Selenium的结合使用Jun 15, 2023 pm 08:36 PM

随着互联网技术的飞速发展,Web应用程序越来越多地应用于我们的日常工作和生活中。而在Web应用程序开发过程中,爬取网页数据是一项非常重要的任务。虽然市面上有很多的Web抓取工具,但是这些工具的效率都不是很高。为了提高网页数据爬取的效率,我们可以利用PHP和Selenium的结合使用。首先,我们需要了解一下PHP和Selenium分别是什么。PHP是一种强大的

pycharm如何安装seleniumpycharm如何安装seleniumDec 08, 2023 pm 02:32 PM

pycharm安装selenium步骤:1、打开PyCharm;2、在菜单栏中选择依次选择 "File"、"Settings"、"Project: [项目名称]";3、选择 Project Interpreter;4、点击选项卡右侧的"+";5、在弹出的窗口搜索selenium;6、找到selenium点击旁边的"Install"按钮;7、等待安装完成;8、关闭设置对话框即可。

在Scrapy爬虫中使用Selenium和PhantomJS在Scrapy爬虫中使用Selenium和PhantomJSJun 22, 2023 pm 06:03 PM

在Scrapy爬虫中使用Selenium和PhantomJSScrapy是Python下的一个优秀的网络爬虫框架,已经被广泛应用于各个领域中的数据采集和处理。在爬虫的实现中,有时候需要模拟浏览器操作去获取某些网站呈现的内容,这时候就需要用到Selenium和PhantomJS。Selenium是模拟人类对浏览器的操作,让我们可以自动化地进行Web应用程序测试

Python中如何使用Selenium爬取网页数据Python中如何使用Selenium爬取网页数据May 09, 2023 am 11:05 AM

一.什么是Selenium网络爬虫是Python编程中一个非常有用的技巧,它可以让您自动获取网页上的数据。Selenium是一个自动化测试工具,它可以模拟用户在浏览器中的操作,比如点击按钮、填写表单等。与常用的BeautifulSoup、requests等爬虫库不同,Selenium可以处理JavaScript动态加载的内容,因此对于那些需要模拟用户交互才能获取的数据,Selenium是一个非常合适的选择。二.安装Selenium要使用Selenium,首先需要安装它。您可以使用pip命令来安装

从零开始:如何使用PHP和Selenium构建网络数据爬虫从零开始:如何使用PHP和Selenium构建网络数据爬虫Jun 15, 2023 pm 12:34 PM

随着互联网的发展,网络数据爬取越来越成为人们关注的焦点。网络数据爬虫可以从互联网中采集大量有用的数据,为企业、学术研究和个人分析提供支持。本文将介绍使用PHP和Selenium构建网络数据爬虫的方法和步骤。一、什么是网络数据爬虫?网络数据爬虫是指自动化程序,在互联网中采集指定网站的数据。网络数据爬虫使用不同的技术和工具来实现,其中最常用的技术是使用编程语言和

See all articles

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

AI Hentai Generator

AI Hentai Generator

免费生成ai无尽的。

热门文章

R.E.P.O.能量晶体解释及其做什么(黄色晶体)
2 周前By尊渡假赌尊渡假赌尊渡假赌
仓库:如何复兴队友
4 周前By尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island冒险:如何获得巨型种子
4 周前By尊渡假赌尊渡假赌尊渡假赌

热工具

安全考试浏览器

安全考试浏览器

Safe Exam Browser是一个安全的浏览器环境,用于安全地进行在线考试。该软件将任何计算机变成一个安全的工作站。它控制对任何实用工具的访问,并防止学生使用未经授权的资源。

ZendStudio 13.5.1 Mac

ZendStudio 13.5.1 Mac

功能强大的PHP集成开发环境

SublimeText3 英文版

SublimeText3 英文版

推荐:为Win版本,支持代码提示!

禅工作室 13.0.1

禅工作室 13.0.1

功能强大的PHP集成开发环境

Dreamweaver CS6

Dreamweaver CS6

视觉化网页开发工具