找回密码
 会员注册
查看: 37|回复: 0

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

[复制链接]

4

主题

0

回帖

13

积分

新手上路

积分
13
发表于 2024-9-3 11:08:21 | 显示全部楼层 |阅读模式
目录问题背景问题定位问题解决问题背景使用Python的requests库对接物联数据的接口之前一直正常运行,昨天突然请求不通了,通过进一步验证发现凡是使用代码调用接口就不通,而使用postman就能调通,请求参数啥的都没变。接口返回的结果如下:\n\n\n\n  \n     403 \n     Forbidden \n    å\x9b\xa0æ\x9d\x83é\x99\x90é\x97®é¢\x98æ\x88\x96è¡\x8c为é\x9d\x9eæ³\x95ï¼\x8cæ\x82¨ç\x9a\x84访é\x97®è¢«æ\x8b\x92ç»\x9dã\x80\x82\n    \n  \n\n问题定位初步断定,在使用requests调用接口时少了点什么,而postman则有这个东西。后来发现,postman在请求的时候自动加上了请求头User-Agent,而代码中headers中没有配置这一项。User-Agent请求头是HTTP请求中的一个头部字段,它包含了发起请求的应用程序的信息。这个字段通常用于告知服务器,发起请求的是哪种浏览器、设备、操作系统或者应用程序。服务器可以根据这个信息来决定是否允许该请求,或者根据不同的客户端类型返回不同的内容。User-Agent字符串通常包含了以下信息:浏览器名称和版本操作系统名称和版本设备类型(如智能手机、平板电脑、桌面电脑)CPU类型默认语言问题解决在代码中加上自定义User-Agent请求头即可:importrequestsurl="……"headers={'User-Agent':"PostmanRuntime/7.39.0"}req=requests.get(url=url,headers=headers)同理,也可以将User-Agent请求头设置为Chrome浏览器:headers={'User-Agent':"Mozilla/5.0(WindowsNT10.0;Win64;x64)AppleWebKit/537.36(KHTML,likeGecko)Chrome/58.0.3029.110Safari/537.3"}该请求头告诉服务器,请求是由一个运行在Windows10上的64位版本的Chrome58浏览器发起的。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 会员注册

本版积分规则

QQ|手机版|心飞设计-版权所有:微度网络信息技术服务中心 ( 鲁ICP备17032091号-12 )|网站地图

GMT+8, 2024-12-26 23:31 , Processed in 0.392520 second(s), 26 queries .

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表