Question Past browser versions

Solution
For information.

Used the PowerShell command for Windows 64-bit from here - https://squirrelistic.com/blog/how_to_download_older_version_of_google_chrome

Code:
$ChromeVersion = '115'

$requestId = ([String][Guid]::NewGuid()).ToUpper()
$sessionId = ([String][Guid]::NewGuid()).ToUpper()

$xml = @"
<?xml version="1.0" encoding="UTF-8"?>
<request protocol="3.0" updater="Omaha" updaterversion="1.3.36.111" shell_version="1.3.36.111"
    ismachine="1" sessionid="{$sessionId}"
    installsource="update3web-ondemand" requestid="{$requestId}"
    dedup="cr" domainjoined="0">
    <hw physmemory="4" sse="1" sse2="1" sse3="1" ssse3="1" sse41="1" sse42="1" avx="1" />
    <os platform="win" version="10.0" sp="" arch="x64" />
    <app...
For information.

Used the PowerShell command for Windows 64-bit from here - https://squirrelistic.com/blog/how_to_download_older_version_of_google_chrome

Code:
$ChromeVersion = '115'

$requestId = ([String][Guid]::NewGuid()).ToUpper()
$sessionId = ([String][Guid]::NewGuid()).ToUpper()

$xml = @"
<?xml version="1.0" encoding="UTF-8"?>
<request protocol="3.0" updater="Omaha" updaterversion="1.3.36.111" shell_version="1.3.36.111"
    ismachine="1" sessionid="{$sessionId}"
    installsource="update3web-ondemand" requestid="{$requestId}"
    dedup="cr" domainjoined="0">
    <hw physmemory="4" sse="1" sse2="1" sse3="1" ssse3="1" sse41="1" sse42="1" avx="1" />
    <os platform="win" version="10.0" sp="" arch="x64" />
    <app appid="{8A69D345-D564-463C-AFF1-A69D9E530F96}" version="5.0.375" nextversion=""
        ap="x64-stable-statsdef_0" lang="" brand="GCEB" client="" installage="0">
        <updatecheck targetversionprefix="$ChromeVersion"/>
    </app>
</request>
"@

$webRequest = @{
    Method    = 'Post'
    Uri       = 'https://tools.google.com/service/update2'
    Headers   = @{
        'Content-Type' = 'application/x-www-form-urlencoded'
        'X-Goog-Update-Interactivity' = 'fg'
    }
    Body      = $Xml
}

$result = Invoke-WebRequest @webRequest -UseBasicParsing
$contentXml = [xml]$result.Content
$status = $contentXml.response.app.updatecheck.status
if ($status -eq 'ok') {
    $package = $contentXml.response.app.updatecheck.manifest.packages.package
    $urls = $contentXml.response.app.updatecheck.urls.url | ForEach-Object { $_.codebase + $package.name }
    Write-Output "--- Chrome Windows 64-bit found. Hash=$($package.hash) Hash_sha256=$($package.hash_sha256)). ---"
    Write-Output $urls
}
else {
    Write-Output "Chrome not found (status: $status)"
}

But made some changes to get (Dev and Beta)

For a particular version of Dev 131.0.6768.4:

--- Chrome Windows 64-bit Dev found. Hash=1sribMmZa5dFRJcIQMspISkYxks= Hash_sha256=90bd04dca229429a9718c70a34a278535f9ff3f578a457c2eaeedcfe5f9aeaf5). ---
http://edgedl.me.gvt1.com/edgedl/re...31.0.6768.4/131.0.6768.4_chrome_installer.exe
http://dl.google.com/release2/chrom...31.0.6768.4/131.0.6768.4_chrome_installer.exe
http://www.google.com/dl/release2/c...31.0.6768.4/131.0.6768.4_chrome_installer.exe

Code:
$ChromeVersion = '131.0.6768.4'


$requestId = ([String][Guid]::NewGuid()).ToUpper()
$sessionId = ([String][Guid]::NewGuid()).ToUpper()


$xml = @"
<?xml version="1.0" encoding="UTF-8"?>
<request protocol="3.0" updater="Omaha" updaterversion="1.3.36.111" shell_version="1.3.36.111"
    ismachine="1" sessionid="{$sessionId}"
    installsource="update3web-ondemand" requestid="{$requestId}"
    dedup="cr" domainjoined="0">
    <hw physmemory="4" sse="1" sse2="1" sse3="1" ssse3="1" sse41="1" sse42="1" avx="1" />
    <os platform="win" version="10.0" sp="" arch="x64" />
    <app appid="{8A69D345-D564-463C-AFF1-A69D9E530F96}" version="5.0.375" nextversion=""
        ap="x64-dev" lang="" brand="GCEB" client="" installage="0">
        <updatecheck targetversionprefix="$ChromeVersion"/>
    </app>
</request>
"@


$webRequest = @{
    Method    = 'Post'
    Uri       = 'https://tools.google.com/service/update2'
    Headers   = @{
        'Content-Type' = 'application/x-www-form-urlencoded'
        'X-Goog-Update-Interactivity' = 'fg'
    }
    Body      = $Xml
}


$result = Invoke-WebRequest @webRequest -UseBasicParsing
$contentXml = [xml]$result.Content
$status = $contentXml.response.app.updatecheck.status
if ($status -eq 'ok') {
    $package = $contentXml.response.app.updatecheck.manifest.packages.package
    $urls = $contentXml.response.app.updatecheck.urls.url | ForEach-Object { $_.codebase + $package.name }
    Write-Output "--- Chrome Windows 64-bit Dev found. Hash=$($package.hash) Hash_sha256=$($package.hash_sha256)). ---"
    Write-Output $urls
}
else {
    Write-Output "Chrome Dev not found (status: $status)"
}
Note that I changed the "ap" attribute in the "app" element to "x64-dev" to specify the Dev update channel. I also updated the version in the "$ChromeVersion" variable to "131.0.6768.4" to get links for this specific version.

And Beta version:

--- Chrome Windows 64-bit Beta found. Hash=FHAvZLd1md082+D9w3yKT2q1Jc4= Hash_sha256=67a1aededb3fca71e512ce1549e20b1ff004797ee8ca0d9c43f929164f8df2c9). ---
http://edgedl.me.gvt1.com/edgedl/re....0.6723.44/130.0.6723.44_chrome_installer.exe
http://dl.google.com/release2/chrom....0.6723.44/130.0.6723.44_chrome_installer.exe
http://www.google.com/dl/release2/c....0.6723.44/130.0.6723.44_chrome_installer.exe

Code:
$ChromeVersion = '130.0.6723.44'

$requestId = ([String][Guid]::NewGuid()).ToUpper()
$sessionId = ([String][Guid]::NewGuid()).ToUpper()

$xml = @"
<?xml version="1.0" encoding="UTF-8"?>
<request protocol="3.0" updater="Omaha" updaterversion="1.3.36.111" shell_version="1.3.36.111"
    ismachine="1" sessionid="{$sessionId}"
    installsource="update3web-ondemand" requestid="{$requestId}"
    dedup="cr" domainjoined="0">
    <hw physmemory="4" sse="1" sse2="1" sse3="1" ssse3="1" sse41="1" sse42="1" avx="1" />
    <os platform="win" version="10.0" sp="" arch="x64" />
    <app appid="{8A69D345-D564-463C-AFF1-A69D9E530F96}" version="5.0.375" nextversion=""
        ap="x64-beta" lang="" brand="GCEB" client="" installage="0">
        <updatecheck targetversionprefix="$ChromeVersion"/>
    </app>
</request>
"@

$webRequest = @{
    Method    = 'Post'
    Uri       = 'https://tools.google.com/service/update2'
    Headers   = @{
        'Content-Type' = 'application/x-www-form-urlencoded'
        'X-Goog-Update-Interactivity' = 'fg'
    }
    Body      = $Xml
}

$result = Invoke-WebRequest @webRequest -UseBasicParsing
$contentXml = [xml]$result.Content
$status = $contentXml.response.app.updatecheck.status
if ($status -eq 'ok') {
    $package = $contentXml.response.app.updatecheck.manifest.packages.package
    $urls = $contentXml.response.app.updatecheck.urls.url | ForEach-Object { $_.codebase + $package.name }
    Write-Output "--- Chrome Windows 64-bit Beta found. Hash=$($package.hash) Hash_sha256=$($package.hash_sha256)). ---"
    Write-Output $urls
}
else {
    Write-Output "Chrome Beta not found (status: $status)"
}

Note that I changed the "ap" attribute in the "app" element to "x64-beta" to specify the Beta update channel. I also updated the version in the "$ChromeVersion" variable to "130.0.6723.44" to get links for this specific version.
 
Solution