selenium获取和使用cookie完成自动登录】
时间: 2024-03-21 09:32:39 浏览: 17
1. 获取cookie
首先,我们需要使用Selenium启动浏览器,并打开我们要自动登录的网站。
```python
from selenium import webdriver
# 启动浏览器
driver = webdriver.Chrome()
# 打开网站
driver.get('https://www.example.com/')
```
然后,我们可以使用`driver.get_cookies()`方法获取当前页面的所有cookie。
```python
# 获取所有cookie
cookies = driver.get_cookies()
# 输出所有cookie
for cookie in cookies:
print(cookie)
```
输出的结果类似于:
```
{'domain': 'www.example.com', 'expiry': 1641947537, 'httpOnly': False, 'name': 'SESSIONID', 'path': '/', 'secure': False, 'value': '1234567890'}
{'domain': 'www.example.com', 'expiry': 1641947537, 'httpOnly': False, 'name': 'username', 'path': '/', 'secure': False, 'value': 'testuser'}
{'domain': 'www.example.com', 'expiry': 1641947537, 'httpOnly': False, 'name': 'password', 'path': '/', 'secure': False, 'value': 'testpassword'}
```
其中,每个cookie都是一个字典,包含以下键值对:
- `domain`:cookie所属的域名。
- `expiry`:cookie的过期时间(以Unix时间戳表示)。
- `httpOnly`:指示浏览器是否只能通过HTTP或HTTPS协议访问cookie。
- `name`:cookie的名称。
- `path`:cookie的路径。
- `secure`:指示浏览器是否只能通过HTTPS协议访问cookie。
- `value`:cookie的值。
2. 使用cookie完成自动登录
获取到cookie后,我们可以使用`driver.add_cookie()`方法将cookie添加到浏览器中。然后,我们可以重新打开网站,浏览器会自动使用我们添加的cookie进行登录。
```python
# 添加cookie
driver.add_cookie({'name': 'SESSIONID', 'value': '1234567890'})
driver.add_cookie({'name': 'username', 'value': 'testuser'})
driver.add_cookie({'name': 'password', 'value': 'testpassword'})
# 重新打开网站
driver.get('https://www.example.com/')
```
这样,我们就完成了自动登录功能。
完整代码如下:
```python
from selenium import webdriver
# 启动浏览器
driver = webdriver.Chrome()
# 打开网站
driver.get('https://www.example.com/')
# 获取所有cookie
cookies = driver.get_cookies()
# 输出所有cookie
for cookie in cookies:
print(cookie)
# 添加cookie
driver.add_cookie({'name': 'SESSIONID', 'value': '1234567890'})
driver.add_cookie({'name': 'username', 'value': 'testuser'})
driver.add_cookie({'name': 'password', 'value': 'testpassword'})
# 重新打开网站
driver.get('https://www.example.com/')
```
注意事项:
- 获取和使用cookie的代码必须在同一个浏览器实例中执行。
- 添加cookie时,必须指定cookie的名称和值。其他键值对是可选的,但建议尽量指定。
- 如果添加的cookie与网站当前存在的cookie冲突,可能会导致自动登录失败。此时,可以尝试清除浏览器缓存或使用不同的浏览器实例。