解决 requests 库 URL 编码问题:使用 prepare 方法发送未编码的 URL

208 阅读1分钟

​​在使用requests库进行URL请求时,通常需要对URL进行编码。然而,有些情况下需要发送未编码的URL,如测试防火墙配置。但即使按照requests库官方文档中的方法,发送的URL仍然被编码,这引发了用户LudiusMaximus的问题。

为了解决这个问题,可以使用requests库提供的`prepare`方法来创建一个预处理的请求,然后使用此请求来发送请求。下面是一个示例代码:

```pythonimport requestss = requests.Session()s.proxies = {"http" : "http://127.0.0.1:8080","https" : "http://127.0.0.1:8080",}s.verify = Falsebase_url = 'https://www.example.com/search'query = '?date_range=2017-01-01|2017-03-01'req = requests.Request('GET', base_url)p = req.prepare()p.url += queryreq = presp = s.send(req)print(resp.request.url)```

在这个代码中,首先创建了一个requests.Request对象,然后使用`prepare`方法创建了一个预处理的请求,并使用这个请求来发送URL请求,从而避免了URL编码的问题。

希望这个简短的总结对您有所帮助。如果您需要更详细的信息或有其他问题,请随时提问。​​​​