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

如何通过Python访问需Google登录的REST接口?

解决方案

1. 核心逻辑

目标网站依赖Google OAuth 2.0身份验证,你需要先获取有效的Google授权凭证(通常是access_token或会话Cookie),再将凭证传递给目标网站接口才能通过授权校验。

2. 无浏览器实现方案(分场景)

场景一:可获取目标网站的Google OAuth应用信息

如果能拿到目标网站用于Google登录的client_id和client_secret,可以尝试OAuth 2.0密码授权流程(注:Google已逐步废弃该流程,仅对部分遗留应用开放):

import requests

# Google令牌端点
token_url = "https://oauth2.googleapis.com/token"
payload = {
    "grant_type": "password",
    "client_id": "你的client_id",
    "client_secret": "你的client_secret",
    "username": "你的Google邮箱",
    "password": "你的Google密码",
    "scope": "目标网站要求的权限范围(如openid email)"
}

# 获取access_token
token_res = requests.post(token_url, data=payload)
if token_res.status_code == 200:
    access_token = token_res.json()["access_token"]
    # 携带令牌调用目标接口
    target_headers = {"Authorization": f"Bearer {access_token}"}
    api_res = requests.post("目标接口URL", json=你的payload, headers=target_headers)
    print(api_res.text)
else:
    print("令牌获取失败:", token_res.json())

⚠️ 注意:若账号开启两步验证,需额外传递一次性验证码;且多数Google服务已不再支持该流程。

场景二:无法获取目标网站OAuth应用信息

只能手动模拟登录流程,通过requests维护会话Cookie完成授权,但Google登录页面参数、反爬机制频繁变化,稳定性极低:

import requests
from bs4 import BeautifulSoup

# 创建会话自动管理Cookie
session = requests.Session()

# 1. 访问目标网站,触发Google登录重定向
target_home = "目标网站URL"
res = session.get(target_home)
# 解析重定向后的Google登录页面,提取必要参数(如xsrf_token、continue_url)
soup = BeautifulSoup(res.text, "html.parser")
continue_url = soup.find("input", {"name": "continue"})["value"]
xsrf_token = soup.find("input", {"name": "xsrf_token"})["value"]

# 2. 提交Google邮箱
login_url = "https://accounts.google.com/v3/signin/identifier"
email_payload = {
    "identifier": "你的Google邮箱",
    "continue": continue_url,
    "xsrf_token": xsrf_token
}
session.post(login_url, data=email_payload)

# 3. 提交Google密码(若有两步验证需额外处理验证码)
password_url = "Google密码验证接口URL"
password_payload = {
    "password": "你的Google密码",
    "xsrf_token": xsrf_token,
    "continue": continue_url
}
session.post(password_url, data=password_payload)

# 4. 回到目标网站完成授权,调用接口
session.get(continue_url)
api_res = session.post("目标接口URL", json=你的payload)
print(api_res.text)

3. 更可靠的替代方案

如果无浏览器方案难以维护,推荐用无头浏览器(如Playwright)模拟真实登录流程,获取Cookie后再用requests调用接口,稳定性更高:

from playwright.sync_api import sync_playwright
import requests

with sync_playwright() as p:
    browser = p.chromium.launch(headless=True)
    page = browser.new_page()
    # 完成Google登录流程
    page.goto("目标网站URL")
    page.fill('input[type="email"]', "你的Google邮箱")
    page.click('button:has-text("下一步")')
    page.fill('input[type="password"]', "你的Google密码")
    page.click('button:has-text("下一步")')
    # 等待登录完成并跳转至目标网站
    page.wait_for_url("目标网站首页URL")
    # 提取Cookie
    cookies = page.context.cookies()
    cookie_dict = {c["name"]: c["value"] for c in cookies}
    browser.close()

# 携带Cookie调用目标接口
api_res = requests.post("目标接口URL", json=你的payload, cookies=cookie_dict)
print(api_res.text)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.03 18:45:56