使用Python requests库从SSRS下载报告遇401错误求助
解决Python requests访问SSRS的401认证问题
网页访问SSRS时弹出的登录窗口属于NTLM认证,而requests默认的auth=(usr,pwd)使用的是Basic认证,二者不匹配才会导致401错误。以下是可行的解决方案:
步骤1:安装NTLM认证扩展库
requests本身不支持NTLM认证,需要安装requests_ntlm扩展:
pip install requests_ntlm
步骤2:使用NTLM认证发起请求
替换原有的认证方式为HttpNtlmAuth,代码示例如下:
import requests from requests_ntlm import HttpNtlmAuth url = "report-url" # 域账号需写成「域\用户名」格式,例如:DOMAIN\user123 usr = "你的用户名" pwd = "你的密码" # 单次请求方式 response = requests.get(url, auth=HttpNtlmAuth(usr, pwd)) # 或者使用Session复用会话(适合多次请求) session = requests.Session() session.auth = HttpNtlmAuth(usr, pwd) response = session.get(url) # 验证请求结果 if response.status_code == 200: print("报告获取成功") # 可将响应内容保存为文件(比如SSRS的HTML报告) with open("ssrs_report.html", "wb") as f: f.write(response.content) else: print(f"请求失败,状态码:{response.status_code}")
内容的提问来源于stack exchange,提问作者mdp
相关产品推荐
相关产品推荐

