我正在关注Selenium中的Chromium(版本:83(。我从`--禁用cookie加密开始。
options.AddArgument("disable-cookie-encryption");
在Chromium网站上,他们引用了这个有效论点列表。
有一个论点:
--disable-cookie-encryption
-cookie是否作为用户的一部分存储配置文件被加密。
打开chrome://version
后,我可以验证chrome是否是用--disable-cookie-encryption
参数启动的。
问题是,一旦我打开存储cookie的SQLite文件(在配置文件的Default/cookies文件上(,它们仍然是加密的。
我试过谷歌Chrome和Edge,但都不起作用。
有什么想法吗?它真的得到支持吗?
Chromium命令行交换机的网页列表仍然提到--disable-cookie-encryption
参数如下:
--disable-cookie-encryption - Whether cookies stored as part of user profile are encrypted.
headless_hell_switches.cc中提到了此设置,可能仅适用于headless
模式。
// Copyright 2016 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include "headless/app/headless_shell_switches.h"
namespace headless {
namespace switches {
// The background color to be used if the page doesn't specify one. Provided as
// RGBA integer value in hex, e.g. 'ff0000ff' for red or '00000000' for
// transparent.
const char kDefaultBackgroundColor[] = "default-background-color";
// Whether cookies stored as part of user profile are encrypted.
const char kDisableCookieEncryption[] = "disable-cookie-encryption";
深潜
根据谷歌Chrome在桌面系统上加密HTTP cookie的文章,谷歌Chrome将cookie保存到用户数据文件夹中的文件中。它被命名为Cookies
,是一个SQLite数据库。您可以将其加载到任何SQL编辑器中,例如Firefox的SQLite Manager扩展,以读取由于用户的Internet活动而保存到本地系统的所有cookie。
然而,Chromium内部发生了如下变化:
加密选定操作系统上存储的所有cookie。
作为保护私人用户信息目标的一部分,这将使用用户特定的加密API加密操作系统上的cookie值,而这些API不会以其他方式保护这些数据。
性能测试表明,在Mac上,每个cookie(无论大小(的损失约为1ms,在Windows下,损失约为0.1ms至0.7ms(取决于大小(。这在旧硬件上会更高,但仍然微不足道。
加密数据是二进制的(在Windows上开销为128字节(,二进制数据必须存储在BLOB中,因此两个字段("value"或"Encrypted_value"(中只有一个字段有数据,另一个字段为空。然而,这两个值都需要被读取&当访问cookie时写入,因为它们被标记为"cookie";非空"(。
这一变化强制要求谷歌Chrome的所有桌面版本在不久的将来都将加密存储的cookie(而Chrome操作系统和安卓系统已经使用完全加密的配置文件(。此更改仅影响在Chrome使用新实现进行更新后保存到系统中的新cookie。现有cookie保持原样,而所有新cookie将默认由浏览器加密。
权衡
需要注意的是,加密cookie所带来的性能下降是微不足道的。在macos上它是1 ms
,而在windows操作系统上它可能会慢到0.7 ms
。
结论
在强制执行cookie策略的最近更改之后,disable-cookie-encryption
似乎不再有效。