如何使用Pypac发起带双因素代理认证的Python GET REST请求
使用PyPAC发起带双因素代理认证的Python GET请求
我来帮你把代码补全并优化下,确保能正确发起需要代理2FA认证的REST API请求。你的思路是对的,但有几个关键细节需要调整,比如一定要用配置好的PACSession来发起请求,而不是直接用requests.get,不然之前设置的代理和认证不会生效。
完整示例代码
import requests from pypac import PACSession, get_pac from requests.auth import HTTPProxyAuth # 1. 获取PAC代理配置文件 pac = get_pac(url='https://abcd.com') # 2. 创建PACSession并设置代理双因素认证 # 注意:Yubikeycode是实时生成的一次性验证码,每次请求都需要更新 session = PACSession(pac) session.proxy_auth = HTTPProxyAuth('rkrisha', '实时生成的Yubikey验证码') # 3. 配置API请求信息 api_url = 'http://company.com/sampleapi/v1/logs/errors?startDt=2018-03-26&endDt=2018-03-26' # 根据API实际要求填写Authorization头,比如Bearer Token格式 headers = { "Authorization": "Bearer 你的API访问令牌", "Content-Type": "application/json" # 如果API要求JSON格式的话 } # 4. 用配置好的session发起GET请求 try: response = session.get(api_url, headers=headers) # 检查请求是否成功 response.raise_for_status() print("请求成功!") print(response.json()) # 如果返回JSON数据的话 except requests.exceptions.RequestException as e: print(f"请求失败:{e}")
关键注意事项
- 必须使用
session.get():直接调用requests.get()不会应用我们配置的代理和认证信息,一定要用创建好的PACSession实例来发起请求。 - 2FA验证码的实时性:Yubikey生成的是一次性验证码,不能硬编码在代码里,每次请求前都需要生成新的验证码填入。
- API Authorization头:根据你调用的API实际要求填写,常见的有Bearer Token、Basic Auth等格式,确保头信息符合API的认证规范。
- 异常处理:加上异常捕获可以更好地排查请求失败的原因,比如代理连接问题、API认证失败、网络错误等。
内容的提问来源于stack exchange,提问作者user5574984
相关产品推荐
相关产品推荐

