当前位置: 代码网 > it编程>前端脚本>Python > BUG解决:postman可以请求成功,但Python requests请求报403

BUG解决:postman可以请求成功,但Python requests请求报403

2024年08月01日 Python 我要评论
使用Python的requests库对接物联数据的接口之前一直正常运行,昨天突然请求不通了,通过进一步验证发现凡是使用代码调用接口就不通,而使用postman就能调通,请求参数啥的都没变。

目录

问题背景

问题定位

问题解决


问题背景

使用python的requests库对接物联数据的接口之前一直正常运行,昨天突然请求不通了,通过进一步验证发现凡是使用代码调用接口就不通,而使用postman就能调通,请求参数啥的都没变。

接口返回的结果如下:

问题定位

初步断定,在使用requests调用接口时少了点什么,而postman则有这个东西。

后来发现,postman在请求的时候自动加上了请求头user-agent,而代码中headers中没有配置这一项。

user-agent请求头是http请求中的一个头部字段,它包含了发起请求的应用程序的信息。这个字段通常用于告知服务器,发起请求的是哪种浏览器、设备、操作系统或者应用程序。服务器可以根据这个信息来决定是否允许该请求,或者根据不同的客户端类型返回不同的内容。

user-agent字符串通常包含了以下信息:

  • 浏览器名称和版本
  • 操作系统名称和版本
  • 设备类型(如智能手机、平板电脑、桌面电脑)
  • cpu类型
  • 默认语言

问题解决

在代码中加上自定义user-agent请求头即可:

import requests

url = "……"
headers = {'user-agent': "postmanruntime/7.39.0"}
req = requests.get(url=url, headers=headers)

同理,也可以将user-agent请求头设置为chrome浏览器:

headers = {'user-agent':"mozilla/5.0 (windows nt 10.0; win64; x64) applewebkit/537.36 (khtml, like gecko) chrome/58.0.3029.110 safari/537.3"}

该请求头告诉服务器,请求是由一个运行在windows 10上的64位版本的chrome 58浏览器发起的。

(0)

相关文章:

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论

验证码:
Copyright © 2017-2025  代码网 保留所有权利. 粤ICP备2024248653号
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com