关于python request请求出现时间过长的处理

1. 问题:

  使用 python requests get请求 https://m.ximalaya.com/down,执行下载,并对内容进行处理,出现时长大与900多秒,影响性能

2. 问题复现

  • 运行代码:
import requests
import time

url = "https://m.ximalaya.com/down"
start = time.time()
res = requests.get(url)
a = res.content
print(time.time() - start)
start = time.time()
res.text
print(time.time())
  • 运行结果: 

 

 

 

3. 问题分析:

  • requests.get(url) 10s 左右, 可以接受
  • 再由字节码转为text,910秒,花费时间过程 => 造成程序过慢
  • 同时通过下面源码,发现每调用一次 res.text 需要一次编码转译,造成时间成倍增加

4. 解决方案:

  • poc 插件对请求相应header 做类型判断,丢弃适当的类型(二进制,word,execl,ppt, pdf,音频,视频,图片等文件)
  • 在插件分析过程中,避免减少过程调用 .text 次数
  • 在插件分析请求返回body过程中,使用字节码分析,代替文本格式分析

 

 

posted @ 2020-12-22 17:20  binger0712  阅读(2794)  评论(0编辑  收藏  举报