删除或注释requests发送数据包自动URL编码问题
前言
当python使用requests在发送一些包含中文的数据包或者带有/…/目录的url会自动编码和转目录,下面记录我是怎么去除的
1.首先修改requests库的models.py文件prepare_url函数
目录如下
C:\Users\用户名\AppData\Local\Programs\Python\Python版本\Lib\site-packages\requests\models.py
关键代码如下
def prepare_url(self, url, params):
/***
此处省略一部分代码
***/
#注释下面,让url不编码
url = requote_uri(urlunparse([scheme, netloc, path, None, query, fragment]))
#注释上面,让url不编码
self.url = url
把下面代码注释掉,各个版本的代码位置不一样,我的是在480行左右
#注释下面,让url不编码
# url = requote_uri(urlunparse([scheme, netloc, path, None, query, fragment]))
#注释上面,让url不编码
self.url = url
2.在此修改urllib3库的connectionpool.py文件urlopen函数
目录如下
C:\Users\用户名\AppData\Local\Programs\Python\Python版本\Lib\site-packages\urllib3\connectionpool.py
关键代码如下
def urlopen(
self,
method,
url,
body=None,
headers=None,
retries=None,
redirect=True,
assert_same_host=True,
timeout=_Default,
pool_timeout=None,
release_conn=None,
chunked=False,
body_pos=None,
**response_kw
):
/***
此处省略一部分代码
***/
#注释下面,让url不编码
if url.startswith("/"):
url = six.ensure_str(_encode_target(url))
else:
url = six.ensure_str(parsed_url.url)
#注释上面,让url不编码
conn = None
把下面代码注释掉,各个版本的代码位置不一样,我的是在480行左右
#注释下面,让url不编码
# if url.startswith("/"):
# url = six.ensure_str(_encode_target(url))
# else:
# url = six.ensure_str(parsed_url.url)
#注释上面,让url不编码
conn = None