【问题标题】:Using Powershell to add URL to Chrome cookies使用 Powershell 将 URL 添加到 Chrome cookie
【发布时间】:2022-01-28 06:19:17
【问题描述】:

我正在尝试找出是否可以在设置中的“始终使用 cookie 的站点”下将 URL 添加到 Chrome cookie 选项卡。我试图拉出 Json 首选项文件以查看是否可以将其添加到那里但看不到它。想知道是否有人能指出我正确的方向。

这是我目前所拥有的:

$LocalAppData = [Environment]::GetFolderPath( [Environment+SpecialFolder]::LocalApplicationData )
$ChromeDefaults = Join-Path $LocalAppData "Google\Chrome\User Data\default"
$ChromePrefFile = Join-Path $ChromeDefaults "Preferences"
$Settings = Get-Content $ChromePrefFile | ConvertFrom-Json >> C:\Temp\Test1.txt

但这并没有给我我想的那样,并且搜索它似乎没有人问过在使用 powershell 之前向此部分/列表添加 URL。

【问题讨论】:

  • 您认为它会给您带来什么?它实际上给了你什么?
  • 我希望它能给我一个[可以始终使用cookies的站点]区域来添加第三方站点。我需要能够编写一个可以启动的脚本并将一个 URl 添加到此部分。
  • 即使有人可以告诉我添加到可以始终使用 cookie 的站点列表中的站点 URL 的位置,这也能满足我的需求。我只是无法弄清楚它们的存储位置。

标签: powershell google-chrome cookies


【解决方案1】:

TL;DR 在底部。

美化首选项文件后,我发现这是正确的路径:

$Preferences = Get-Content -Path "C:\Users\xxx\AppData\Local\Google\Chrome\User Data\default\Preferences" | ConvertFrom-Json

$CookieExceptions = $Preferences.profile.content_settings.exceptions.cookies

$CookieExceptions 返回一个 PSCustomObject:

stackexchange.com,*
-------------------
@{expiration=0; last_modified=13287790992647427; model=0; setting=1}

其中包含一个也具有 PSCustomObject 类型的成员。

$CookieExceptions.'stackexchange.com,*' 返回:

expiration last_modified     model setting
---------- -------------     ----- -------
0          13287790939152770     0       1

使用 Get-Member cmdlet,您可以查看 PSCustomObject 具有哪些成员:

$CookieExceptions.'stackoverflow.com,*' | Get-Member -MemberType NoteProperty 返回:

Name          MemberType   Definition                            
----          ----------   ----------                            
expiration    NoteProperty string expiration=0                   
last_modified NoteProperty string last_modified=13287790939152770
model         NoteProperty int model=0                           
setting       NoteProperty int setting=1

所以要添加一个新站点,你可以创建一个类似的对象:

$SiteProperties = [PSCustomObject]@{
    expiration = 0
    last_modified = 13287790939152770
    model = 0
    setting = 1
}

然后使用正确的站点名称将其添加到 $CookiePreference:

$CookieExceptions | Add-Member -MemberType NoteProperty -Name "stackoverflow.com,*" -Value $SiteProperties

现在你有两个网站了!

stackexchange.com,*                                                  stackoverflow.com,*                                                 
-------------------                                                  -------------------                                                 
@{expiration=0; last_modified=13287790939152770; model=0; setting=1} @{expiration=0; last_modified=13287790939152770; model=0; setting=1}

不要忘记将其保存到 JSON 首选项文件中。

Set-Content -Path "C:\Users\xxx\AppData\Local\Google\Chrome\User Data\default\Preferences" -Value ($Preferences | ConvertTo-Json -Depth 32)

TL;DR 我不知道所有站点属性的作用以及 Chrome 对外部更改首选项文件的反应。我已经对此进行了简短的测试,它似乎有效。下面是整个脚本。祝你好运!

$Preferences = Get-Content -Path $PathToPreferencesFile | ConvertFrom-Json

$CookieExceptions = $Preferences.profile.content_settings.exceptions.cookies

$SiteProperties = [PSCustomObject]@{
    expiration = 0
    last_modified = 13287793933254853 #WebKit timestamp?
    model = 0
    setting = 1
}

$CookieExceptions | Add-Member -MemberType NoteProperty -Name "stackoverflow.com,*" -Value $SiteProperties

Set-Content -Path $PathToPreferencesFile -Value ($Preferences | ConvertTo-Json -Depth 32)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-04-02
    相关资源
    最近更新 更多