以前自己做测试的时候经常使用python requests,发送各种http请求非常方便。但是最近升级到python3使用requests之后,发现在我的请求发出去之前,requests会做一些解码/目录压缩之类的工作。
举几个例子:
/test.php?a=%61%62%63%64
使用requests发出请求后,抓包会发现实际请求中的参数被解码,变成了如下内容:
/test.php?a=abcd
另外一个例子:
aa.com/abcd/../123/../test.php
最后发出去的请求,path变成了如下内容:
aa.com/test.php
本来是要使用requests发各种攻击请求,然后观察效果的,结果最后发出去的内容都给我解码了。
因为太习惯使用python reqeusts了,也不想换其他的库,所以简单该了下源码解决上面的问题。
python3.8/site-packages/urllib3/util/url.py 注释掉如下几行

python3.8/site-packages/requests/models.py 做如下修改


本文介绍了一位开发者在升级到python3后遇到requests库在发送HTTP请求前自动解码URL参数和规范化路径的问题,这对其进行安全测试造成困扰。为了解决这个问题,作者选择直接修改requests库的源码,注释掉了`urllib3.util.url`和`requests.models.py`中相关的代码段,以阻止这种行为。文章适合对requests库有深入使用需求的Python开发者阅读。
928





