westlife73 发表于 2023-11-15 15:31:35

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


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

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

```python

import requests

s = requests.Session()

s.proxies = {

"http" : "http://127.0.0.1:8080",

"https" : "http://127.0.0.1:8080",

}

s.verify = False

base_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 += query

req = p

resp = s.send(req)

print(resp.request.url)

```

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

希望这个简短的总结对您有所帮助。如果您需要更详细的信息或有其他问题,请随时提问。​​​​
页: [1]
查看完整版本: 解决 requests 库 URL 编码问题:使用 prepare 方法发送未编码的 URL