هم نشست مجاز API در gspread و هم انتقال درخواست تازه‌سازی اعتبارنامه را پیکربندی کنید، هرگاه یکی از آن دو به پروکسی نیاز دارد:

import requests
import gspread
from google.auth.transport.requests import AuthorizedSession, Request

routes = {
    'http': 'http://proxy.example:8080',
    'https': 'http://proxy.example:8080',
}
token_session = requests.Session()
token_session.proxies.update(routes)

session = AuthorizedSession(
    credentials,
    auth_request=Request(session=token_session),
)
session.proxies.update(routes)
client = gspread.Client(auth=credentials, session=session)

این کد از رابط Client در gspread 6 با نشستی که خودتان می‌دهید و اعتبارنامه‌های موجود برنامه استفاده می‌کند. انتقال را پیکربندی می‌کند، نه مجوزهای صفحه‌گسترده یا دامنه‌های OAuth را. برای نقاط پایانی عمومی API و توکن روی مسیر عمومی مجاز، یک نامزد HTTP بدون احراز هویت از فهرست پروکسی HTTP برای نقشه مسیرها انتخاب کنید. هنگام تغییر واسطه، هر دو نشست را از هر حساب پروکسی ذخیره‌شده خالی نگه دارید.

AuthorizedSession اعتبارنامه‌ها را به درخواست‌های API اضافه می‌کند و می‌تواند آن‌ها را تازه کند. بدون auth_request، google-auth می‌تواند نشست Requests دیگری برای آن ترافیک بسازد. پیش‌فرض‌های پروکسی روی نشست مجاز، نشستی را که مستقل ساخته می‌شود پیکربندی نمی‌کنند.

آداپتور Request در بالا آن مسیر دوم را عمداً فراهم می‌کند. هر دو نشست را تا زمانی که استفاده می‌شوند نگه دارید، سپس نشست‌هایی را که مالکیت بیرونی دارند در پایان دامنه کاربردشان ببندید.

این‌ها پیش‌فرض‌های Session هستند، بنابراین ادغام محیط Requests هنوز می‌تواند بر آن‌ها اثر بگذارد. وقتی مسیر ثابتی لازم است، ورودی‌های پروکسی به‌ارث‌رسیده را در نظر بگیرید.

از نشانی ناموفق استفاده کنید تا رد شدن از سوی صفحه‌گسترده، چالش پروکسی و شکست نقطه پایانی اعتبارنامه را از هم تشخیص دهید. یک توکن دسترسی ذخیره‌شده می‌تواند باعث شود فراخوانی‌های API بدون اجرای هیچ تازه‌سازی‌ای موفق شوند.

مقالات مرتبط