《老鸟python 系列》视频上线了,全网稀缺资源,涵盖python人工智能教程,爬虫教程,web教程,数据分析教程以及界面库和服务器教程,以及各个方向的主流实用项目,手把手带你从零开始进阶高手之路!点击 链接 查看详情

cookie操作

阅读:185349973    分享到

有时候我们需要验证浏览器中 cookie 是否正确,因为基于真实 cookie 的测试是无法通过白盒和集成测试进行的。WebDriver 提供了操作 cookie 的相关方法,可以读取、添加和删除 cookie信息。

WebDriver 操作 cookie 的方法:

  • get_cookies(): 获得所有cookie信息。
  • get_cookie(name): 返回字典的key为“name”的cookie信息。
  • add_cookie(cookie_dict) : 添加cookie。“cookie_dict”指字典对象,必须有 name 和 value 值。
  • delete_cookie(name,optionsString):删除 cookie 信息。“name”是要删除的 cookie 的名称,“optionsString”是该cookie的选项,目前支持的选项包括“路径”,“域”。
  • delete_all_cookies(): 删除所有 cookie 信息。

下面通过 get_cookies() 来获取当前浏览器的 cookie 信息。

from selenium import webdriver

driver = webdriver.Firefox()
driver.get("http://www.youdao.com")

# 获得cookie信息
cookie= driver.get_cookies()
print(cookie)

driver.quit()

从执行结果可以看出,cookie 数据是以字典的形式进行存放的。知道了 cookie 的存放形式,接下来我们就可以按照这种形式向浏览器中写入 cookie 信息。

from selenium import webdriver

driver = webdriver.Firefox()
driver.get("http://www.youdao.com")

# 向cookie的name 和value中添加会话信息
driver.add_cookie({'name': 'key-aaaaaaa', 'value': 'value-bbbbbb'})

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

driver.quit()

输出结果:

YOUDAO_MOBILE_ACCESS_TYPE -> 1
_PREF_ANONYUSER__MYTH -> aGFzbG9nZ2VkPXRydWU=
OUTFOX_SEARCH_USER_ID -> -1046383847@218.17.158.115
JSESSIONID -> abc7qSE_SBGsVgnVLBvcu
key-aaaaaaa -> value-bbbbbb

从执行结果可以看到,最后一条 cookie 信息是在脚本执行过程中通过 add_cookie() 方法添加的。通过遍历得到所有的 cookie 信息,从而找到 key 为“name”和“value”的特定 cookie 的 value。


如果以上内容对您有帮助,请老板用微信扫一下赞赏码,赞赏后加微信号 birdpython 领取免费视频。


登录后评论

user_image
Zoffy
2019年12月24日 00:05 回复

有没有获得cookie时间长的办法,听说有个扫码登录可以,有没有人探讨一下


user_image
phodal-InfoQ社区编辑
2019年8月22日 12:24 回复

最近我在研究淘宝爬虫,cookie只能持续30分钟,一个只有30分钟的爬虫……大哥有没有什么路子?


user_image
曾國祥
2019年12月21日 07:27

这个是他们网站设置的 cookie 过期时间是 30 分钟,你没办法的


user_image
金融行业程序员
2019年1月19日 02:03 回复

作者,你好,绕过selenium检测的chromedrive插件能给我使使吗?