0


记录一个aiohttp的大坑,aiohttp请求不成功,而requests可以

记录一个aiohttp的大坑,aiohttp请求不成功,而requests可以
差异:
1.
requests发请求的时候会自动对headers进行排序,但是aiohttp不会
如果有些平台会对headers顺序检测的时候,就会出现问题

requests请求的时候的url发请求的时候url填的是,那么真实请求的时候就会是什么
但是!!!
aiohttp就不一样!!!!aiohttp会把冒号、逗号等字符有解码回来!
有写网站会对url进行签名,这时候,aiohttp发请求时候的url做了转换,那么签名一定失败

案例:

我这边只给个测试地址
原始url:
www.host.com/test?aaa=%7B%22http%22%3A666%2C%22tcp%22%3A666%2C%22quic%22%3A666%2C%22stream%22%3A666%7D

在requests里面如果将url直接填进去,真实发包发的也是这个地址
但是!
aiohttp是这样的:
www.host.com/test?aaa=%7B%22http%22:666,%22tcp%22:666,%22quic%22:666,%22stream%22:666%7D

发现问题了吗。。
真实地址里面:
%3A 对应的是 :
%2C 对应的是 ,

这特么的!aiohttp把这两个字符编码又自动编回来了,我特么吐了

具体解决方案是把url包裹一层,类似这样

from yarl import URL
url=URL("www.host.com/test?aaa=%7B%22http%22%3A666%2C%22tcp%22%3A666%2C%22quic%22%3A666%2C%22stream%22%3A666%7D", encoded=True)

借鉴了这篇文章,感谢这位博主
https://blog.csdn.net/qq_31720329/article/details/82024036

标签:

本文转载自: https://blog.csdn.net/weixin_43107613/article/details/115764212
版权归原作者 忆雨星辰 所有, 如有侵权,请联系我们删除。

“记录一个aiohttp的大坑,aiohttp请求不成功,而requests可以”的评论:

还没有评论