使用 Powershell 添加 URL 到 Chrome cookie

Using Powershell to add URL to Chrome cookies

我想知道是否有办法在设置中的“始终可以使用 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 之前向这个 section/list 添加一个 URL。

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 returns 一个 PSCustomObject:

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

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

$CookieExceptions.'stackexchange.com,*' returns:

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

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

$CookieExceptions.'whosebug.com,*' | Get-Member -MemberType NoteProperty returns:

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 "whosebug.com,*" -Value $SiteProperties

现在您有两个站点!

stackexchange.com,*                                                  whosebug.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 "whosebug.com,*" -Value $SiteProperties

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