You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用PowerShell实现谷歌搜索?遇Cookie弹窗无法获取结果

解决PowerShell调用谷歌搜索返回Cookie提示页面的问题

问题原因

谷歌的Cookie合规机制会拦截未携带「同意Cookie」的请求,直接返回Cookie授权页面。Invoke-WebRequest默认不会自动处理这种授权流程,所以无法直接获取搜索结果。

解决方案1:模拟Cookie同意流程

通过PowerShell的会话功能,先完成Cookie同意的提交,再携带授权后的Cookie请求搜索页面:

# 创建Web会话,用于保存Cookie
$webSession = New-Object Microsoft.PowerShell.Commands.WebRequestSession

# 先访问谷歌首页,获取初始会话Cookie
Invoke-WebRequest -Uri "https://www.google.com" -WebSession $webSession | Out-Null

# 构造Cookie同意的提交参数(参数可能随谷歌页面更新变化,需注意)
$consentParams = @{
    gl = "US"
    m = "0"
    pc = "srp"
    continue = "https://www.google.com/search?q=Test"
    accept = "true"
    set_eom = "true"
}

# 提交同意请求,更新会话中的Cookie
Invoke-WebRequest -Uri "https://consent.google.com/save" -Method Post -WebSession $webSession -Body $consentParams | Out-Null

# 携带授权Cookie请求搜索页面
$searchResponse = Invoke-WebRequest -Uri "https://www.google.com/search?q=Test" -WebSession $webSession

# 输出搜索结果的HTML内容(可自行提取所需信息)
$searchResponse.Content

注意事项

  • 谷歌的Cookie同意接口参数可能随时调整,如果上述代码失效,需要手动抓包获取最新的提交参数。
  • 建议添加User-Agent头模拟浏览器请求,避免被识别为爬虫:
    $headers = @{ "User-Agent" = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/118.0.0.0 Safari/537.36" }
    # 在Invoke-WebRequest中加入 -Headers $headers 参数
    

解决方案2:使用谷歌自定义搜索API(更稳定)

如果不想处理Cookie的问题,推荐使用谷歌官方的自定义搜索JSON API,这种方式无需处理授权墙,且返回结构化数据:

  1. 前往谷歌开发者平台创建API密钥和自定义搜索引擎ID。
  2. 使用PowerShell发送请求:
    $apiKey = "你的API密钥"
    $engineId = "你的搜索引擎ID"
    $query = "Test"
    $response = Invoke-RestMethod -Uri "https://www.googleapis.com/customsearch/v1?q=$query&key=$apiKey&cx=$engineId"
    # 输出搜索结果标题和链接
    $response.items | ForEach-Object {
        Write-Host "标题: $($_.title)"
        Write-Host "链接: $($_.link)`n"
    }
    
    这种方法有免费额度(每月100次查询免费),超出后需付费。

内容的提问来源于stack exchange,提问作者wanncool

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.30 08:25:54