python requests访问报403 "Invalid username/password."

简介:

使用python requests访问一个rest api时,总是报错:

403
{"detail":"Invalid username/password."}

换成curl访问就没有问题。

为什么会这样呢?

把requests的请求header print出啦,看到加了authorization,但是代码并没有使用任何认证。

{'Content-Length': '650', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'user-agent': 'a', 'Connection': 'keep-alive',  'content-type': 'application/json', 'Authorization': 'Basic dGVzdDoxMjM='}

猜测和机器环境有关系。用户认证信息应该是存在某个文件中的吧?

用strace看一下打开了哪些文件

strace python test.py

open("/usr/lib64/python2.7/shlex.py", O_RDONLY) = 4
open("/usr/lib64/python2.7/shlex.pyc", O_RDONLY) = 5
open("/root/.netrc", O_RDONLY)          = 3
open("/usr/lib64/python2.7/encodings/idna.py", O_RDONLY) = 3
open("/usr/lib64/python2.7/encodings/idna.pyc", O_RDONLY) = 4
open("/usr/lib64/python2.7/stringprep.py", O_RDONLY) = 4

访问了一个可疑文件 ~/.netrc

$ cat ~/.netrc
default login test password 123

把这个文件拿掉,接口访问就没有报错了。

查一下requests的文档,requests果然会读取.netrc文件
http://docs.python-requests.org/en/master/user/authentication/?highlight=netrc

目录
相关文章
|
21天前
|
存储 应用服务中间件 开发工具
对象存储OSS-Python设置代理访问请求
通过 Python SDK 配置 nginx 代理地址请求阿里云 OSS 存储桶服务。示例代码展示了如何使用 RAM 账号进行身份验证,并通过代理下载指定对象到本地文件。
76 15
|
22天前
|
JSON 数据可视化 测试技术
python+requests接口自动化框架的实现
通过以上步骤,我们构建了一个基本的Python+Requests接口自动化测试框架。这个框架具有良好的扩展性,可以根据实际需求进行功能扩展和优化。它不仅能提高测试效率,还能保证接口的稳定性和可靠性,为软件质量提供有力保障。
54 7
|
3月前
|
数据采集 前端开发 算法
Python Requests 的高级使用技巧:应对复杂 HTTP 请求场景
本文介绍了如何使用 Python 的 `requests` 库应对复杂的 HTTP 请求场景,包括 Spider Trap(蜘蛛陷阱)、SESSION 访问限制和请求频率限制。通过代理、CSS 类链接数控制、多账号切换和限流算法等技术手段,提高爬虫的稳定性和效率,增强在反爬虫环境中的生存能力。文中提供了详细的代码示例,帮助读者掌握这些高级用法。
161 1
Python Requests 的高级使用技巧:应对复杂 HTTP 请求场景
|
3月前
|
网络协议 数据库连接 Python
python知识点100篇系列(17)-替换requests的python库httpx
【10月更文挑战第4天】Requests 是基于 Python 开发的 HTTP 库,使用简单,功能强大。然而,随着 Python 3.6 的发布,出现了 Requests 的替代品 —— httpx。httpx 继承了 Requests 的所有特性,并增加了对异步请求的支持,支持 HTTP/1.1 和 HTTP/2,能够发送同步和异步请求,适用于 WSGI 和 ASGI 应用。安装使用 httpx 需要 Python 3.6 及以上版本,异步请求则需要 Python 3.8 及以上。httpx 提供了 Client 和 AsyncClient,分别用于优化同步和异步请求的性能。
python知识点100篇系列(17)-替换requests的python库httpx
|
2月前
|
数据采集 JSON 测试技术
Python爬虫神器requests库的使用
在现代编程中,网络请求是必不可少的部分。本文详细介绍 Python 的 requests 库,一个功能强大且易用的 HTTP 请求库。内容涵盖安装、基本功能(如发送 GET 和 POST 请求、设置请求头、处理响应)、高级功能(如会话管理和文件上传)以及实际应用场景。通过本文,你将全面掌握 requests 库的使用方法。🚀🌟
242 7
|
3月前
|
存储 网络协议 API
详解Python中的Requests会话管理
详解Python中的Requests会话管理
|
4月前
|
SQL JavaScript 前端开发
基于Python访问Hive的pytest测试代码实现
根据《用Java、Python来开发Hive应用》一文,建立了使用Python、来开发Hive应用的方法,产生的代码如下
88 6
基于Python访问Hive的pytest测试代码实现
|
4月前
|
JSON API 数据格式
30天拿下Python之requests模块
30天拿下Python之requests模块
55 7
|
4月前
|
XML 数据格式 Python
python 解析xml遇到xml.etree.ElementTree.ParseError: not well-formed (invalid token): |4-8
python 解析xml遇到xml.etree.ElementTree.ParseError: not well-formed (invalid token): |4-8
|
4月前
|
UED Python
Python requests库下载文件时展示进度条的实现方法
以上就是使用Python `requests`库下载文件时展示进度条的一种实现方法,它不仅简洁易懂,而且在实际应用中非常实用。
145 1