赞
踩
最近在研究一个新的知识,遇到了一个困难,就是selenium获取并使用cookies的技巧。刚开始百度了下,看了一些介绍,始终是不明白怎么回事,因为网上大部分是这样介绍的:
一、cookies的获取
1、手动获取
网上大部分都说是看上图,但是这就让我看不懂了啊,因为百度出来的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中的内容,这里就会根据格式一一对应相关内容了,如下图
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())
不管是手动获取还是自动获取,都需要我们手动登录账号,但是自动获取方便很多,自动把格式和需要的东西都下载下来了,不需要我们再一一去设置,耗费时间。
当然,这里也有不适用的地方,就是打开网页后,如果会自动跳出来登录框,好像就不能够用了,关于这个,下次再分享。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。