首页 python正文

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

启明SEO python 2021-02-01 16:33:32 8991 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总是安装不上怎么办

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

网站权重上不去应该怎么解决

网站权重上不去应该怎么解决

要提高网站的权重,可以考虑以下几个方面:......