100字范文,内容丰富有趣,生活中的好帮手!
100字范文 > Python Selenium Cookie 绕过验证码实现登录示例代码_

Python Selenium Cookie 绕过验证码实现登录示例代码_

时间:2018-09-06 12:10:42

相关推荐

Python Selenium Cookie 绕过验证码实现登录示例代码_

后端开发|Python教程

Selenium,Python,Cookie

后端开发-Python教程

这篇文章主要介绍了Python Selenium Cookie 绕过验证码实现登录示例代码,现在分享给大家,有需要的朋友可以参考一下

电脑公司整站源码,代码调用vscode功能,ubuntu 隐藏目录,tomcat8 项目,爬虫分级,php 配置 smtp,临沂济南seo优化报价,大气浪漫的摄影婚纱网站模板下载,ecshop模板预览在哪lzw

之前介绍过通过cookie 绕过验证码实现登录的方法。这里并不多余,会增加分析和另外一种方法实现登录。

activiti 源码下载,汇编学习可以用vscode吗,ubuntu 桌面 像册,tomcat7秒退,抢单爬虫,php输出word文档,seo到底是怎么回事lzw

1、思路介绍

瀑布网站源码,ubuntu如何设置屏幕,tomcat不重视中国市场,爬虫学家寻巨蟒,php所有运算符的意思,小树seo博客lzw

1.1、直接看代码,内有详细注释说明

# FileName : Wm_Cookie_Login.py# Author : Adil# DateTime : /3/20 19:47# SoftWare : PyCharmfrom selenium import webdriverimport timeurl = https://system.addressdef 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 : /3/20 21:43# SoftWare : PyCharmimport yaml,time,osfrom selenium import webdriverurl = https://system.addressdriver = 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,否则可能打印的还是登录前的cookietime.sleep(5)cookiesAfter = driver.get_cookies()len1 = len(cookiesAfter)# 已经知道需要第几个cookie,这里需要第3个cookie,所以选择cookie下标为2cookie1 = 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 : /3/20 21:48# SoftWare : PyCharmfrom selenium import webdriverimport time,yaml,osurl = https://system.addressdriver = 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, ,encoding=utf-8)cont = f.read()conf = yaml.load(cont)# 读取cookie值cookie1 = conf.get("cookie1")# 添加cookiedriver.add_cookie(cookie1)print("cookies")print(driver.get_cookies())time.sleep(5)# 这里重新获取地址,因为有些系统,未登录状态,链接会跳转,这里就是,登录状态后,才能正确打开指定网址,所以这里要再次指定网址。driver.get(url)# 刷新查看登录状态driver.refresh()time.sleep(5)driver.quit()

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。