【发布时间】:2021-03-22 13:10:25
【问题描述】:
我正在我的 selenium 网络驱动程序上调用 get_cookies()。当然,我们知道这会获取当前域的 cookie。但是,许多热门网站在 example.com 和 www.example.com 上都设置了 cookie。
从技术上讲,它并不是真正的“独立域”甚至子域。我认为互联网上几乎每个网站在 www 子域和根域中都有相同的站点。
既然一个是子域,那么是否仍然无法为两个域保存 cookie?如果您想为所有域保存 cookie,我知道答案很复杂,但我认为这有点不同,因为它们确实是同一个域。
用这段代码复制它:
from selenium import webdriver
import requests
driver = webdriver.Firefox()
driver.get("https://www.instagram.com/")
print(driver.get_cookies())
输出:
[{'name': 'ig_did', 'value': 'F5FDFBB0-7D13-4E4E-A100-C627BD1998B7', 'path': '/', 'domain': '.instagram.com', 'secure': True, 'httpOnly': True, 'expiry': 1671083433}, {'name': 'mid', 'value': 'X9hOqQAEAAFWnsZg8-PeYdGqVcTU', 'path': '/', 'domain': '.instagram.com', 'secure': True, 'httpOnly': False, 'expiry': 1671083433}, {'name': 'ig_nrcb', 'value': '1', 'path': '/', 'domain': '.instagram.com', 'secure': True, 'httpOnly': False, 'expiry': 1639547433}, {'name': 'csrftoken', 'value': 'Yy8Bew6500BinlUcAK232m7xPnhOuN4Q', 'path': '/', 'domain': '.instagram.com', 'secure': True, 'httpOnly': False, 'expiry': 1639461034}]
然后在新的浏览器实例中加载页面并检查自己。你会看到 www 在那里。
虽然主域看起来不错:
【问题讨论】:
-
在 Firefox 上尝试过 instagram,它没有
www.instagram.comcookie。只有 Chrome 可以。另外,如果您想获取其他站点的 cookie 而不是当前站点,那是不可能的。您需要使用 Chrome 并解析 SQLite 文件中的加密 cookie。