Requests: 忽略规范化 URL

创建于 2019-12-10  ·  4评论  ·  资料来源: psf/requests

如果我想测试 Web 应用程序中的路径遍历漏洞,目标 URL 通常是https://example.com/../../path 。 在请求中使用 GET 方法,该 URL 将被规范化如下。 因此,这将导致测试中出现意外结果。

r = requests.get('https://example.com/../../path')
print(r.url)
# https://example.com/path

使用curl ,我们可以选择忽略规范化: --path-as-is 。 那么,我们是否有requests的等效选项?

最有用的评论

尝试使用准备好的请求

url = "http://example.com/../something.txt"
s = requests.Session()
req = requests.Request(method='POST' ,url=url, headers=headers, data=data)
prep = req.prepare()
prep.url = url
r = s.send(prep, verify=False)

所有4条评论

@EDjur谢谢你的信息。 您知道解决此问题的解决方法吗?

尝试使用准备好的请求

url = "http://example.com/../something.txt"
s = requests.Session()
req = requests.Request(method='POST' ,url=url, headers=headers, data=data)
prep = req.prepare()
prep.url = url
r = s.send(prep, verify=False)

@akmalhisyam非常感谢。 它运作良好。

@akmalhisyam在这里是正确的。 如果您必须明确设置某些内容,则使用 PreparedRequests 工作流通常可以解决此类问题。

此页面是否有帮助?
0 / 5 - 0 等级