ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

Selenium成长之路-23cookie的处理

2020-05-24 10:07:07  阅读:223  来源: 互联网

标签:cookies False name Selenium driver 成长 value 23cookie cookie


cookie的处理,一部分是运用到爬虫,另一部分是运用到登录的验证码的获取。

今天来看看webdriver对 cookie都有哪些神操作。

  • get_cookies() 获取所有cookie信息;
  • get_cookie(name) 返回特定name有cookie信息;
  • add_cookie(cookie_dict) 添加cookie,必须有name和value值;
  • delete_cookie(name) 删除特定部分的cookie信息;
  • delete_all_cookie() 删除所有cookie信息。

知道了cookie 有这么多神操作,那么怎么能抓取到cookie呢?

使用我们的神秘武器 "Fiddler"(Charles 也可以)。

Fiddler确实是一个十分牛叉的工具:可以抓包,可以测试接口(Web/APP),可以抓信息等, 

  >>> 这里我就不延时Fiddler的用法了

我们上代码,看看cookie到底有啥操作:

# -*- coding: utf-8 -*-
"""
@ auth : carl_DJ
@ time : 2020-5-22
"""

from selenium import webdriver

#不打开浏览器运行
option = webdriver.ChromeOptions()
option.add_argument('headless')
driver  = webdriver.Chrome(chrome_options=option)

url = "http://www.baidu.com"
driver.get(url)

#获取cookie
cookie= driver.get_cookies()
#打印cookie
print(cookie)

#退出浏览器
driver.quit

打印的结果如下:

  

[{'domain': '.baidu.com', 'httpOnly': False, 'name': 'H_PS_PSSID', 'path': '/', 'secure': False, 'value': '31355_1449_31670_21120_31110_31596_30842_31464_31322_30823'}, {'domain': '.baidu.com', 'expiry': 1621646261.050973, 'httpOnly': False, 'name': 'BAIDUID', 'path': '/', 'secure': False, 'value': '8DDCEC4A62A0DE72D84C5A02861269B2:FG=1'}, {'domain': '.baidu.com', 'expiry': 3737593908.050941, 'httpOnly': False, 'name': 'BIDUPSID', 'path': '/', 'secure': False, 'value': '8DDCEC4A62A0DE7242C056D21382AE78'}, {'domain': '.baidu.com', 'expiry': 3737593908.050959, 'httpOnly': False, 'name': 'PSTM', 'path': '/', 'secure': False, 'value': '1590110259'}, {'domain': 'www.baidu.com', 'expiry': 1590974262, 'httpOnly': False, 'name': 'BD_UPN', 'path': '/', 'secure': False, 'value': '12314753'}, {'domain': 'www.baidu.com', 'httpOnly': False, 'name': 'BD_HOME', 'path': '/', 'secure': False, 'value': '1'}]

是不是很乱,因为所有的信息都打印出来了,那么我们只想要几个的信息怎么办,有办法的,看下面的代码:

 

.....

#向cookie添加信息
driver.add_cookie({"name":"abc123456","value":"value123456"})

#遍历cookies中的name和value信息,并打印
for cookie in driver.get_cookies():
    print("%s -> %s" % (cookie['name'], cookie['value']))

#删除cookie#

##删除一个指定的cookie
driver.delete_cookie("CookieName")

##删除所有cookie信息
driver.delete_all_cookies()

#退出浏览器
driver.quit()

打印结果如下:

abc123456 -> value123456
H_PS_PSSID -> 31351_1445_31669_21078_31594_31270_31464_30823
BAIDUID -> 185872EDC7B507D5EBF82AD614049B02:FG=1
BIDUPSID -> 185872EDC7B507D50824068F1F271AD8
PSTM -> 1590111110
BD_UPN -> 12314753
BD_HOME -> 1

 

是不是很简单。

在实际项目中,我们验证cookie方法有三种: 

   ①获取真的 cookie信息,然后填写;

   ②开发写一个万能验证码,随便填写cookie信息;

   ③不填写cookie信息,跳过。

>>>安全性最高的,肯定是第一种,当然,也是最麻烦的了。没办法,鱼与熊掌不能兼得。

举个例子,我们来整一个登录操作

from selenium import webdriver
from selenium.webdriver.common.by import By
import  os,time


#不打开浏览器运行
option = webdriver.ChromeOptions()
option.add_argument('headless')
driver  = webdriver.Chrome(chrome_options=option)

url = "http://项目地址"
driver.get(url)

#填写登录名和密码
driver.find_element(By.ID,"usn").send_keys("username")
driver.find_element(By.ID,"pwd").send_keys("password")

# #获取cookie
cookies =driver.get_cookies()
# #遍历cookies中的信息,并打印
for  cookie in cookies:
    print(cookie)

#添加cookie
driver.add_cookie({"name":"abc123456","value":"value123456"})

#点击登录按钮
driver.find_element(By.ID,"login").click()

#刷新页面
driver.refresh()
time.sleep(3)

#退出
driver.quit()

 

标签:cookies,False,name,Selenium,driver,成长,value,23cookie,cookie
来源: https://blog.csdn.net/wuyoudeyuer/article/details/106273287

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有