请求被服务器识别为非法请求, 但使用 postman/curl 可以正常通过

来源: 在您之前已被浏览:1 次
导读:目前正在解读《请求被服务器识别为非法请求, 但使用 postman/curl 可以正常通过》的相关信息,《请求被服务器识别为非法请求, 但使用 postman/curl 可以正常通过》是由用户自行发布的知识型内容!下面请观看由(国外主机 - www.2bp.net)用户发布《请求被服务器识别为非法请求, 但使用 postman/curl 可以正常通过》的详细说明。
国外云主机,www.2 bp .net

请求被服务器识别为非法请求, 但使用 postman/curl 可以正常通过

背景: 有一个接口通过 postman/curl 测试正常.

问题: 但我用 python 的 requests 库构造了一个 GET 请求, 请求的 headers 完全和 postman 发出的一样, 但是被服务器识别为非法请求(返回的 http status 为 200, body 的错误描述为非法请求). 1. 它是怎么知道这个请求不是来自于浏览器 /postman/curl 的? 2. postman/curl 是否做了些其他我不知道的逻辑或添加了我不知道的请求参数吗?

lolizeppelin

抓包看区别啊

danielmiao

UA

LukeChien

把请求发给 httpbin.org 看看区别

sadddhu

@lolizeppelin 问题已经解决了.

requests.get('http://example.com?A=1&B=2') 和 requests.get('http://example.com, params={'A': 1, 'B': 2})有区别吗?

WizardMeow

@sadddhu 有。[相关源码]( https://github.com/requests/requests/blob/master/requests/models.py#L350-L434)

坑一定在编码和一些非标准字符,构建 URL 的时候出现了错误,你可以看看它构建的是什么

WizardMeow

也不能说是错误,它是严格遵守标准的……错误的是那边服务器非标……

lolizeppelin

有字典无序 标准是无序但是服务端不一定按照无序解析

无序最坑的是加密 的时候 这种时候要用有序字典

sadddhu

@WizardMeow 感谢.

根本原因找到了. 我在使用上述我提到的第二种方式的时候, 其中有个参数我已经做了 url encode, 但 requests 对已经 encode 的内容再次 encode, 导致了构造的 url 不一样.

国外云主机,www.2 bp .net
提醒:《请求被服务器识别为非法请求, 但使用 postman/curl 可以正常通过》最后刷新时间 2023-03-27 02:11:25,本站为公益型个人网站,仅供个人学习和记录信息,不进行任何商业性质的盈利。如果内容、图片资源失效或内容涉及侵权,请反馈至,我们会及时处理。本站只保证内容的可读性,无法保证真实性,《请求被服务器识别为非法请求, 但使用 postman/curl 可以正常通过》该内容的真实性请自行鉴别。