python通过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()
以上应该算是已经详细的介绍了使用cookie 登录的思路了。希望对大家的学习有所帮助,也希望大家多多支持萬仟网。
如您对本文有疑问或者有任何想说的,请点击进行留言回复,万千网友为您解惑!
python通过cookie绕过验证码_Python Selenium Cookie 绕过验证码实现登录示例代码相关推荐
- python自动化简历_python+selenium实现简历自动刷新的示例代码
本文用到的文件的下载地址 百度网盘链接: https://pan.baidu.com/s/1tmpdEfAZKff5TOMAitUXqQ 提取码: e6at 1 安装Python 和 selenium ...
- python调用程序压缩文件_Python实现文件压缩和解压的示例代码
大家可能都熟悉.zip格式的文件.它可以把多个文件,压缩成一个文件.这在网络上传输时很有用,而且节省硬盘空间. 接下来,我们使用Python实现压缩和解压. 读取ZIP文件信息 要读取ZIP文件的内容 ...
- python人像动漫化_python实现人像动漫化的示例代码
利用百度api实现人像动漫化 百度API地址:https://ai.baidu.com/tech/imageprocess/selfie_anime 技术文档:https://ai.baidu.com ...
- python刷b站教程_python + selenium 刷B站播放量的实例代码
B站UP主的主要收益来源(播放量获取的奖励.用户充电.广告等等) 首先做up主最直接的就是做视频,当你的粉丝过1000或者视频总播放超过10万时可以申请创造激励,申请创造激励之后,你的原创视频播放会给 ...
- python用selenium 验证码图片_Python +Selenium解决图片验证码登录或注册问题(推荐)
1. 解决思路 首先要获得这张验证码的图片,但是该图片一般都是用的js写的,不能够通过url进行下载. 解决方案:截图然后根据该图片的定位和长高,使用工具进行裁剪 裁剪完毕之后,使用工具解析该图片. ...
- python 滑块验证码_python selenium 淘宝滑块验证码 问题
正常打开淘宝等页面,搜索商品和滑块验证码是没有问题的,但是用selenium打开,在多次翻页后出现的滑块验证码就总是失败,无论是手动滑还是代码控制都不可以,目前正在找解决办法... 此问题针对多次翻页 ...
- python 淘宝滑块验证_python selenium 淘宝滑块验证码 问题
正常打开淘宝等页面,搜索商品和滑块验证码是没有问题的,但是用selenium打开,在多次翻页后出现的滑块验证码就总是失败,无论是手动滑还是代码控制都不可以,目前正在找解决办法... 此问题针对多次翻页 ...
- python如何登录一个需要第三方验证的网站_python+selenium 之如何跳过登录验证
忙了一段时间没来学习了,今天学习下如何跳过登录验证码登录 首先我们很多系统的登录机制都会有短信验证或者图形验证等,每次自动化代码走到登录的时候,因为随机的验证码,导致无从下手 其实据我所知是有很多种方 ...
- python搜索关键词自动提交_python+selenium实现自动化百度搜索关键词
原博文 2019-07-22 14:10 − 通过python配合爬虫接口利用selenium实现自动化打开chrome浏览器,进行百度关键词搜索. 1.安装python3,访问官网选择对应的版本安装 ...
最新文章
- 杨老师课堂_Java核心技术下之控制台模拟记事本案例...
- 禁用/启用按钮和链接的最简单方法是什么(jQuery + Bootstrap)
- LeetCode Implement Trie (Prefix Tree)(字典树)
- 编码 data:text/html;c,iOS 用TFHpple抓取GB-2312编码的html页面,页面返回编码错误
- python与正则表达式(part7)--re模块使用
- sql server 2008安装_性能不够?基于时序数据库的Zabbix 5.2安装指南
- 63. Unique Paths II and 64. Minimum Path Sum
- keras中一个LSTM的具体例子
- 制定交叉编译工具_制作交叉编译工具链的方法总结(详细)
- 百度之星作为座位调整java_百度之星程序设计大赛十周年算法合集20052014.PDF
- 数学建模——蒙特卡罗模型
- linux里面rpm是什么文件,linux中deb格式和rpm格式分别是什么?
- MUI框架-08-窗口管理-创建子页面
- 导轨式串口服务器作用,什么是485串口服务器?有什么功能与作用?
- ArcGis-制图(简单点、线、面符号的制作、保存)
- 如何编写yaml格式的Ansible主机清单(inventory)及清单变量使用Demo
- search函数和search_n()函数
- python米和厘米转换代码_用Python写一个朴素的长度单位转换器
- vue 项目实战 递归
- 6.1 欧拉方法与改进欧拉方法