python-3.x - 发出 GET 请求时如何查看设置的所有 cookie
问题描述
引用未使用 python 请求模块获取所有 cookie 信息
OP 看到在 Chrome 上设置了许多 cookie,但在他的 Python 请求代码中没有看到大多数这些 cookie。给出的原因是“正在设置的 cookie 来自其他页面/资源,可能由 JavaScript 代码加载。”
这是我用来尝试获取在访问 URL 时加载的 cookie 的函数:
从请求导入获取 从 requests.exceptions 导入 RequestException 从 contextlib 导入关闭 def get_cookies(url): """ 发出 HTTP GET 请求时,从 `url` 的响应中返回 cookie。 """ 尝试: s = 会话() 以关闭(get(url,stream = True))作为resp: 返回相应的cookies 除了 RequestException 为 e: print('请求 {0} 时出错:{1}'.format(url, str(e))) 返回无
但是使用这个功能,我只能看到 URL 设置的 cookie,而看不到其他类似广告 cookie。鉴于此设置,我如何查看其他 cookie,就像 Chrome 看到它们一样?即,当发出 GET 请求时,我如何查看所有设置的 cookie,包括来自其他页面/资源的那些?
解决方案
做了一些工作,但我设法让它工作。基本上需要 selenium 和 chrome 来实际加载网站和所有 3rd 方的东西。其中一个输出是一个 sqlite3 cookie 数据库,./chrome_dir/Default/Cookies
您可以在其中获取以供自己使用。
从硒导入网络驱动程序 导入 sqlite3 def get_cookies(url): """ 发出 HTTP GET 请求时,从 `url` 的响应中返回 cookie。 """ co = webdriver.ChromeOptions() co.add_argument("--user-data-dir=chrome_dir") # 创建一个目录来存放所有的chrome数据 驱动程序 = webdriver.Chrome(chrome_options=co) driver.get(url) driver.quit() conn = sqlite3.connect(r'./chrome_stuff/Default/Cookies') c = conn.cursor() c.execute("SELECT * FROM 'cookies'") 返回 c.fetchall()
推荐阅读
- amazon-web-services - 是否可以通过 DynamoDB Lambda 触发器更新 HTML 中的元素?
- python - 运行 AWS Deep Learning Base AMI (Amazon Linux 2) 时,如何在 Elastic Beanstalk 中设置 WSGI?
- swift - 如何在 Xcode Project Navigator 中修改 CSV 文件
- python - 给定坐标列表,将值添加到这些坐标,直到最短路径发生变化
- python - 在Python中:如何在变化的参数值下制作洛伦兹系统的分岔图?
- c# - SQL to LINQ - 案例语句
- c++ - 如何从 unique_ptr 制作 static_cast
- vba - 选择多个项目时,ListBox 循环跳过第一个项目
- python - 使用布尔数据框更改数据框中的值
- javascript - Babel 和 Mocha 的问题:使用 ES6 导入系统