Burpsuite转发器和python请求的不同返回

问题描述

出于我公司的安全原因,我删除了 URL。但我认为它们对于理解问题并不重要。

当我使用 Burpsuite 发布帖子时,帖子被正确执行,like this print. 请求如下所示:

POST /upload/1 HTTP/1.1
Host: URL REMOVED
Connection: close
Content-Length: 0
sec-ch-ua: "Google Chrome";v="87"," Not;A Brand";v="99","Chromium";v="87"
Accept: application/json,text/plain,*/*
sec-ch-ua-mobile: ?0
x-access-token: TOKEN REMOVED
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML,like Gecko) Chrome/87.0.4280.141 Safari/537.36
Content-Type: application/x-www-form-urlencoded
Origin: URL REMOVED
sec-fetch-site: same-site
sec-fetch-mode: cors
Sec-Fetch-Dest: empty
Referer: URL REMOVED
Accept-Encoding: gzip,deflate
Accept-Language: pt-BR,pt;q=0.9,en-US;q=0.8,en;q=0.7

BurpSuite 中的答案如下所示:

HTTP/1.1 200 OK
Date: Mon,25 Jan 2021 15:28:46 GMT
Server: Apache
X-DNS-Prefetch-Control: off
x-frame-options: SAMEORIGIN
Strict-Transport-Security: max-age=15552000; includeSubDomains
X-Download-Options: noopen
X-Content-Type-Options: nosniff
X-XSS-Protection: 1; mode=block
Access-Control-Allow-Origin: *
Content-Type: application/json; charset=utf-8
Content-Length: 86
ETag: W/"56-bL6Iw6mpmbZmkXyESXWzn8xcLXc"
Connection: close

{"status":{"type":"success","message":"success","code":200,"error":false},"data":"Ok"}

但是当我尝试使用 python 请求做同样的帖子时,我收到了 401 错误代码如下:

import requests
import json
#DESAFIO 2

url_post = 'URL REMOVED'
parametros_post = {
    "Host": "URL REMOVED","Connection": "close","Content-Length": 0,"sec-ch-ua": '"Google Chrome";v="87","Chromium";v="87"',"Accept": "application/json,*/*","sec-ch-ua-mobile": "?0","x-access-token": "TOKEN REMOVED","User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML,like Gecko) Chrome/87.0.4280.141 Safari/537.36","Content-Type": "application/x-www-form-urlencoded","Origin": "URL","sec-fetch-site": "same-site","sec-fetch-mode": "cors","Sec-Fetch-Dest": "empty","Referer": "URL REMOVED","Accept-Encoding": "gzip,deflate","Accept-Language": "pt-BR,en;q=0.7"
}
headers_post = {}
r = requests.post(url_post,data = json.dumps(parametros_post),headers = headers_post)

print(r.json())

返回的python代码如下:

{'status': {'type': 'AppError','message': 'Please log in.','error': True,'code': 401}}

我对两种请求方式都使用相同的用户代理和相同的标头。 我该怎么做才能让它在 python 上运行?

解决方法

您发送的请求如下所示:

enter image description here

您的脚本在请求正文中以 json 格式发送这些标头,但这些是请求标头。 您应该将它们作为标题发送。

enter image description here

此更改请求后如下所示: enter image description here

你可以使用 Burp Comparer 比较你的请求,你只需要通过 Burp 代理发送你的请求,就像 8040 是 Burp 代理的例子一样。在“比较器”窗口中,您将看到您的请求是什么样的,并且更容易注意到问题所在。

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...