python requests模块upgrade_python requests 模块的一些坑点

0818b9ca8b590ca3270a3433284dd417.png

这里就不总结requests的用法了,网上一大堆。总结一下个人遇到的requests有时候的一些坑爹的地方。

1. 3xx跳转 如果对方的返回码是3xx,requests默认是会跳转的,在debug的时候总是会遇到requests返回的包和burp返回的不一样,就是因为这个。

解决方法:

res = requests.get(url, allow_redirects=False)

2. 编码问题 http中为了防止错误有各种编码,主要是url编码,requests会自动将特殊字符编码,但是有时候写poc的时候就不能让他自动编码。

解决方法:

>>> import socket

>>> ip = "180.97.33.107"

>>> port = 80

>>> sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)

>>> sock.connect((ip,port))

>>> sock.send('GET / HTTP/1.1\r\nHost: www.baidu.com\r\n\r\n')

39

>>> a=sock.recv(10240)

>>> print a

直接socket解决吧,在各种语言中都通用。

3. 上传文件问题 上传文件的时候,很多时候都是multipart/form-data 编码的,这种编码有很特别的格式,是不是代表我们无法用requests上传文件了呢?

files={'username':(None,'test'),

'password':(None,'test'),

'image':('1.jpg',open(r'C:\tmp\data_2\1.jpg','rb').read(),'image/jpeg')

}

res = requests.post("http://www.xxx",files=files,headers=headers)

即可直接上传multipart/form-data 编码的文件,当然,其实socket更爽。

4. 其他格式的post数据 好吧,我一直以为requests中的data参数只能是dict结构,其实他还可以是string类型。。。在SOAP这种自定义协议中就能派上用场了

其他坑点欢迎吐槽!

---------------------------

0818b9ca8b590ca3270a3433284dd417.png

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值