BardAPI (unofficial) 在 Bard 升级 Gemini 后无法使用
结论
BardAPI 依赖 Bard/Gemini 网页的内部接口、Cookie 和请求格式。Bard 升级为 Gemini 后,这些内部实现也随之变化。旧版 BardAPI 一旦失效,重新获取 Cookie 通常无法稳定解决问题。
如果无法使用 Gemini Developer API、无法开通 Vertex AI,也没有位于受支持地区的运行环境,就不存在可靠、合规的“通过 Cookie 调用 Gemini”方案。目前可以考虑:
- 查看
BardAPI是否已有适配当前 Gemini 网页的维护版本; - 使用 Google AI Studio 提供的 Gemini Developer API,前提是所在地区受支持;
- 使用提供 Gemini 模型的第三方 API 平台;
- 暂时改用欧洲可用的其他模型服务;
- 继续在 Gemini 网页中手动使用,等待官方扩大服务范围或解决付款条件。
为什么重新获取 Cookie 往往无效
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 的旧接口。
备注:内容仅供参考。
