如何在Python中用PFX证书实现McMaster API登录请求?
爬取McMaster API数据的Python请求问题
问题背景
- 需爬取
https://www.mcmaster.com网站数据,已获取PFX证书文件(Schallert.pfx)及对应密码短语mcmasterAPI@1901 - Postman中完成配置(导入请求JSON、填写网站登录邮箱/密码、上传带密码的PFX证书)后,GET请求可正常执行
- Python实现时,无法确定如何添加网站登录邮箱/密码,且现有代码存在错误,需获取正确的GET请求实现
现有错误代码
import requests_pkcs12 from requests_pkcs12 import get r = get('https://api.mcmaster.com/v1/login', pkcs12_filename='Schallert.pfx', pkcs12_password='mcmasterAPI@1901') response = requests_pkcs12.get(r) print(response.text)
问题分析与修正方案
核心错误点
- 错误将第一个
get请求的响应对象作为参数传入第二个get方法,requests_pkcs12.get的第一个参数必须是URL字符串 - 未传入网站登录的邮箱/密码凭证,结合Postman的配置逻辑,这类场景通常使用HTTP Basic Auth传递登录信息
修正后的代码
import requests_pkcs12 # 替换为你的实际网站登录邮箱和密码 LOGIN_EMAIL = "your_actual_login_email" LOGIN_PASSWORD = "your_actual_login_password" # 发起带PFX证书和Basic Auth的GET请求 response = requests_pkcs12.get( url="https://api.mcmaster.com/v1/login", pkcs12_filename="Schallert.pfx", pkcs12_password="mcmasterAPI@1901", auth=(LOGIN_EMAIL, LOGIN_PASSWORD) ) # 输出请求结果 print(f"请求状态码: {response.status_code}") print(response.text)
额外说明
- 如果McMaster API不采用Basic Auth传递登录信息,可以打开Postman的请求详情(查看
Headers或Params标签),将对应凭证信息添加到请求的headers或params参数中 - 确保PFX文件路径正确,若文件不在当前脚本执行目录,需填写完整绝对路径
内容的提问来源于stack exchange,提问作者Kaevonz
相关产品推荐
相关产品推荐

