Skip to content
This repository was archived by the owner on Feb 22, 2018. It is now read-only.

Latest commit

 

History

History
45 lines (32 loc) · 2.73 KB

File metadata and controls

45 lines (32 loc) · 2.73 KB

###1.1 (2017-11-26)
时隔两三年,已经不是在校生了。从一个工作两年的工程师的角度来看,这工程质量实在是不行啊。好在功能还是能用的。在Ubuntu 服务器上安装了一遍,更新了文档,更新了依赖库的版本,让程序可用。再过两三个月过春节,那时候准备重构下,让它从“程序”进化成“工程”吧(写了三年java,其实并不知道python的工程怎么样算是好的实践额。)

为了ipad 能正常上网,又搞起了 http 代理。。最早是为了什么来着?好像是大学生创建项目,为了在外网能爬校内的网站。。

###1.0

  • 支持CONNECT方法(支持https等)
  • 按协议规定,替换对应的报文头信息

###0.6

  • 实现多进程!!!
  • 修复response为空时,不退出接收的死循环,gevent一直切换回来,导致的cpu使用率100%的bug(腾讯首页就有这种response,可能是想长连接)

###0.5

  • 使用单进程单线程的gevent提高性能
  • 可怕的腾讯首页。。

###0.4

  • 支持HEAD请求
  • 确认支持204,206,303,307,413,414,500,501,505响应
  • 已经能正常浏览http网页(常见的还有CONNECT方法未支持,应该是在https中用到;连着多打开几个可怕的门户网站首页:内存11M,(cpu单核100%,因为有长连接,recv()到的是空的,gevent会一直切换回来等待接收到数据))

###0.3

  • 修改请求的接收方式,支持post请求
  • 确认支持201,503,404,301,302响应

###0.2

  • 正确完善http响应报文已接收完的判断方式,已经能正常代理响应为200,304的get和post请求。
  • 连接接目标主机失败(原因是类似目标网站的服务器压根没开。。之类的),返回自定义的错误信息
  • 200的通过Content-Length, Transfer-Encoding判断。都没有的默认Transfer-Encoding。
  • 304的是not modify,直接返回报文头
  • 404的响应也行,只是在收完报文头就直接返回了,还没有管它收完了没,正常的404报文如果够短的话是没问题的。

###0.1.1

  • 增加http响应报文已接收完的判断方式,至少校内办公可用了

###0.1

  • 实现基本功能,能解析get和post请求,并转发请求报文给目标主机,收到响应报文后转回给请求方
  • 主线程接收请求,把分配的socket传给代理线程;代理线程转发请求报文和响应报文
  • 性能极烂!!请求一多(只是打开一个大网页)cpu占用率就爆满。原因是,来一个请求,分配一个socket时,每个socket都启动一个新线程。而且判断响应报文是否接收完整的方式不对,会在接收响应报文时无限循环
  • 不知如何判断http响应报文已接收完