PAYATHON 2026

BardAPI (unofficial) 在 Bard 升级 Gemini 后无法使用

技术老齐

结论

BardAPI 依赖 Bard/Gemini 网页的内部接口、Cookie 和请求格式。Bard 升级为 Gemini 后,这些内部实现也随之变化。旧版 BardAPI 一旦失效,重新获取 Cookie 通常无法稳定解决问题。

如果无法使用 Gemini Developer API、无法开通 Vertex AI,也没有位于受支持地区的运行环境,就不存在可靠、合规的“通过 Cookie 调用 Gemini”方案。目前可以考虑:

  1. 查看 BardAPI 是否已有适配当前 Gemini 网页的维护版本;
  2. 使用 Google AI Studio 提供的 Gemini Developer API,前提是所在地区受支持;
  3. 使用提供 Gemini 模型的第三方 API 平台;
  4. 暂时改用欧洲可用的其他模型服务;
  5. 继续在 Gemini 网页中手动使用,等待官方扩大服务范围或解决付款条件。

BardAPI 不是 Google 官方 SDK。它通常通过模拟浏览器请求工作,依赖多项网页内部细节:

  • Cookie 名称和登录状态;
  • 页面中的会话令牌;
  • 未公开的请求地址;
  • 请求体、响应结构和流式传输格式;
  • Google 的风控和地区限制。

这些内部机制没有兼容性承诺。网站改版、接口迁移、账号灰度发布或安全策略调整,都可能造成 401、403、空响应或解析错误。

删除 Cookie 后重新登录并复制新 Cookie,只能尝试解决会话过期。如果真正的问题是接口协议已经变化,这样做不会有效。

可以先做的检查

先确认安装的不是早期版本,再查看项目当前文档是否明确说明支持 Gemini:

python -m pip show bardapi
python -m pip install --upgrade bardapi

如果仓库提供了新的安装方法、迁移说明或 Gemini 专用分支,应以仓库当前文档为准。不能仅凭包名或过去的示例判断它现在仍然可用。

还需要根据报错判断问题类型:

  • 401:Cookie、令牌或登录会话无效;
  • 403:可能涉及地区、账号权限、风控或接口访问限制;
  • 404:内部端点可能已经变更;
  • JSON 解析错误:网页响应格式可能已经变化;
  • 网页可以使用,但程序无法调用:通常表示非官方调用方式已经被修改或拦截。

不要在论坛、日志或截图中公开 Cookie。Bard/Gemini 登录 Cookie 可能让他人访问你的 Google 会话。

方案一:使用 Gemini Developer API

Google AI Studio 和 Vertex AI 是两种不同的接入方式。Developer API 通常只需要 API key,不必先创建 Vertex AI 项目,但仍然受到地区、账号和现行服务政策的限制。

Python 可以使用官方 google-genai SDK:

python -m pip install google-genai
import os
from google import genai

client = genai.Client(api_key=os.environ["GEMINI_API_KEY"])

response = client.models.generate_content(
    model=os.environ["GEMINI_MODEL"],
    contents="请解释 TCP 三次握手。",
)

print(response.text)

运行前,设置密钥和当前账号实际可用的模型 ID:

export GEMINI_API_KEY="your_api_key"
export GEMINI_MODEL="your_available_model_id"
python app.py

不要自行猜测模型名称。模型名称和生命周期可能变化,应从 AI Studio 或官方模型列表中选择当前可用的 ID。

如果控制台明确显示所在国家或地区不可用,修改客户端代码、请求头或 Cookie 都无法解除这一限制。使用 VPN 也不代表已经获得服务资格,还可能触发账号安全检查或违反服务条款。

方案二:使用第三方托管的 Gemini API

一些 API 聚合平台或云服务商会代理 Gemini 模型。它们可能兼容 OpenAI SDK,也可能提供自己的 REST API。例如:

from openai import OpenAI
import os

client = OpenAI(
    api_key=os.environ["PROVIDER_API_KEY"],
    base_url=os.environ["PROVIDER_BASE_URL"],
)

response = client.chat.completions.create(
    model=os.environ["PROVIDER_MODEL"],
    messages=[
        {"role": "user", "content": "请解释 TCP 三次握手。"}
    ],
)

print(response.choices[0].message.content)

这种方式能否使用,要看平台是否满足以下条件:

  • 在你的地区提供服务;
  • 接受你现有的付款方式;
  • 提供的确实是 Gemini,而不是名称相似的替代模型;
  • 允许处理你的数据类型和使用场景;
  • 隐私政策、日志保留方式和服务稳定性可以接受。

API key、base_url 和模型名称必须采用服务商提供的实际值。第三方平台可能会额外保存请求内容,因此不要提交密码、Cookie、个人资料或机密代码。

方案三:更换模型服务

如果需求只是通过程序调用大语言模型,并不一定要使用 Gemini,那么更换服务通常比继续修补逆向的网页 API 更省时间。可以选择所在地区可用的商业 API,也可以在本机运行开源模型。

例如,使用 Ollama 调用本地模型:

ollama pull llama3.1
ollama run llama3.1

通过本地 HTTP API 调用:

import requests

response = requests.post(
    "http://localhost:11434/api/generate",
    json={
        "model": "llama3.1",
        "prompt": "请解释 TCP 三次握手。",
        "stream": False,
    },
    timeout=120,
)

response.raise_for_status()
print(response.json()["response"])

模型名称应以本机 ollama list 的结果为准。本地运行不受 Gemini 地区限制,也不需要云端付款方式,但会占用内存、磁盘和计算资源,实际效果也不等同于 Gemini。

不建议采用的办法

以下方法不适合作为长期方案:

  • 反复复制 Gemini 网页 Cookie;
  • 修改非官方端点或伪造浏览器请求;
  • 从陌生网站购买 Cookie、账号或 API key;
  • 通过公共代理转发 Google 登录会话;
  • 使用共享账号绕过地区或付款限制。

即使这些方法暂时恢复调用,也可能随时再次失效,并带来账号封禁、凭据泄露和数据暴露的风险。

如果升级到最新版 BardAPI 后仍然报错,而且项目当前没有明确说明支持新的 Gemini 网页协议,就应认为该版本已经不兼容。在无法使用 Vertex AI 和官方 Developer API 的情况下,较为可行的临时选择是合规的第三方提供商或本地开源模型,而不是继续修复依赖 Cookie 的旧接口。

备注:内容仅供参考。