在 Python 中制作虚假的 HTTP 响应

Making a fake HTTP response in Python

作为初学者,我正在尝试进行伪造的 HTTP 响应。我想到的方法是制作 class requests.models.Response() 的对象,然后设置其属性:

def getFakeHTTPResponse(statusCode, text):
        response = requests.models.Response()
        response.status_code = statusCode
        response.text = text
        return response

上面的功能应该可以。但是我收到错误:"AttributeError: can't set attribute." 这让我感到疑惑,因为可以获取 HTTP 响应的文本属性,但无法设置它。此外,这对 status_code 属性完全没问题,但我收到文本属性的错误消息。 你有什么建议使用这个 class requests.models.Response() 来做出虚假回应?

.text.content方法都是用@property实现的,可以读,不能写。需要设置._content(被.content使用)和.encoding(被.text使用),即

import requests
r = requests.models.Response()
r.status_code = 200
r._content = "sometext".encode("utf-8")
r.encoding = "utf-8"
print(r.text)

输出

sometext