首页 python正文

selenium如何获取cookies,并实现使用cookies自动登录(一)

启明SEO python 2021-02-01 16:33:32 7720 0 获取cookies

最近在研究一个新的知识,遇到了一个困难,就是selenium获取并使用cookies的技巧。刚开始百度了下,看了一些介绍,始终是不明白怎么回事,因为网上大部分是这样介绍的:


一、cookies的获取

1、手动获取

cookies

网上大部分都说是看上图,但是这就让我看不懂了啊,因为百度出来的selenium中cookies添加是这样的一种格式:


cookies=[{'domain': 'zhuxiaoedu.com', 'expiry': 1643699649, 'httpOnly': False, 'name': 'http304ok', 'path': '/', 'secure': False, 'value': '1'},

 {'domain': 'zhuxiaoedu.com', 'expiry': 1612250045.383451, 'httpOnly': False, 'name': 'addinfo', 'path': '/', 'secure': False, 'value': '%7B%22chkadmin%22%3A1%2C%22chkarticle%22%3A1%2C%22levelname%22%3A%22%5Cu7ba1%5Cu7406%5Cu5458%22%2C%22userid%22%3A%221%22%2C%22useralias%22%3A%22admin%22%7D'},

 {'domain': 'zhuxiaoedu.com', 'expiry': 1612250045.383406, 'httpOnly': True, 'name': 'token', 'path': '/', 'secure': False, 'value': '329f13591aa71a6d1757991608e3203244f0cd6819f5069f1b5580831ec10bb71612250054'},

 {'domain': 'zhuxiaoedu.com', 'expiry': 1612250045.383317, 'httpOnly': False, 'name': 'username', 'path': '/', 'secure': False, 'value': 'admin'},

 {'domain': 'zhuxiaoedu.com', 'httpOnly': False, 'name': 'timezone', 'path': '/', 'secure': False, 'value': '8'}]


对于新手来说,你知道自己想要的cookies该怎么搞吗,反正我是看不懂。


2、自动获取

网上大部分都是写了一段代码,获取cookies的代码,就是使用selenium中的get_cookies()方法获取。这个确实是一种比较好的方法,后面我搞懂了规则之后,才发现的。但是没搞懂之前,也很难看懂。我当时就在想,我就是不知道如何获取cookies才不能自动登录,你这样搞,我还不是不知道如何获取cookies。



二、明白后,我认为比较通俗易懂的说法


1、手动获取cookies

我们不要看headers里的内容,我们直接看cookies中的内容,这里就会根据格式一一对应相关内容了,如下图

手动获取cookies

2、自动获取


自动获取也很简单,我们使用selenium控制浏览器,打开需要自动登录的网页,代码如下:

from selenium import webdriver
from selenium.webdriver import ChromeOptions, FirefoxProfile
from fake_useragent import UserAgent
import random
import win32api
import time
from aip import AipNlp
import requests
import re

ua = UserAgent()
option = ChromeOptions()

userage = ua.chrome
# option.add_argument(('--proxy-server=' + ipports[0] + ':' + ipports[1]))
option.add_argument('user-agent=' + userage + '')
option.add_argument('disable-infobars')
option.add_experimental_option('excludeSwitches', ['enable-automation'])
option.add_experimental_option("useAutomationExtension", False)
browser = webdriver.Chrome(options=option, executable_path='chromedriver.exe')
# browser.get('http://**.com/')
# cookies=[{'domain': '**.com', 'expiry': 1643699649, 'httpOnly': False, 'name': 'http304ok', 'path': '/', 'secure': False, 'value': '1'},
#  {'domain': '**.com', 'expiry': 1612250045.383451, 'httpOnly': False, 'name': 'addinfo', 'path': '/', 'secure': False, 'value': '%7B%22chkadmin%22%3A1%2C%22chkarticle%22%3A1%2C%22levelname%22%3A%22%5Cu7ba1%5Cu7406%5Cu5458%22%2C%22userid%22%3A%221%22%2C%22useralias%22%3A%22admin%22%7D'},
#  {'domain': '**.com', 'expiry': 1612250045.383406, 'httpOnly': True, 'name': 'token', 'path': '/', 'secure': False, 'value': '329f13591aa71a6d1757991608e3203244f0cd6819f5069f1b5580831ec10bb71612250054'},
#  {'domain': 'z**u.com', 'expiry': 1612250045.383317, 'httpOnly': False, 'name': 'username', 'path': '/', 'secure': False, 'value': 'admin'},
#  {'domain': '**.com', 'httpOnly': False, 'name': 'timezone', 'path': '/', 'secure': False, 'value': '8'}]
#
#
#
# for cookie in cookies:
#     browser.add_cookie(cookie)
#
# browser.get('http://**/zb_system/admin/index.php?act=admin')

# 登录地址
browser.get('http://**/zb_system/login.php')
# 打开登录链接后,我们手动登录,然后再获取cookies,这样就是登录后的cookies了。
time.sleep(25)
print(browser.get_cookies())

不管是手动获取还是自动获取,都需要我们手动登录账号,但是自动获取方便很多,自动把格式和需要的东西都下载下来了,不需要我们再一一去设置,耗费时间。


当然,这里也有不适用的地方,就是打开网页后,如果会自动跳出来登录框,好像就不能够用了,关于这个,下次再分享。


评论

Python好学公众号

好文推荐

实时访客入口页面出现bd_vid=标识是什么原因

实时访客入口页面出现bd_vid=标识是什么原因

最近查看百度实时访客,总是会看到入口页面会多......

有了微信视频号,但是没有发布权限,怎么开通

有了微信视频号,但是没有发布权限,怎么开通

视频号是微信在2020年1月19号开始内测的......

如何用python抓取爱企查企业信息

如何用python抓取爱企查企业信息

前段时间,经理让我去找一些企业的信息,我平常......

服务器配置低,宝塔面板安装IIS总是安装不上怎么办

服务器配置低,宝塔面板安装IIS总是安装不上怎么办

对于一般企业网站或者博客来说,对服务器的配置......

如何修改浏览器指纹,Canvas指纹、Webgl指纹、Audio指纹修改方法?

如何修改浏览器指纹,Canvas指纹、Webgl指纹、Audio指纹修改方法?

修改浏览指纹的方法其实也是很简单,主要使用到......

win10下安装MYSQL后,提示Can't connect to MySQL server on localhost (10061)相关问题解决方法

win10下安装MYSQL后,提示Can't connect to MySQL server on localhost (10061)相关问题解决方法

我遇到的问题是电脑原先安装过mysql,卸......