大家好,小弟最近在学 socket,前几天写了一个单线程 HTTP 服务器后,觉得单线程上有很多东西都不能用上,比如线程,感觉有点亏,所以就又简单地实现了一个线程池,写完这个线程池后,又想写个复杂一丢丢的 example.c,刚好遇到了 MIT 的这个Lab(不知道中文怎么说……),觉得可以把自己最近学的东西一次都用上了,于是就又实现了这个简单的代理服务器……
GitHub 链接: https://github.com/ahhzee/parrots
目前这个代理服务器只做到了可以满足课程要求的程度,比较简单(但可以学到多),用 Firefox 可以完美打开 NeverSSL 之类的网站,我学校官网也可以打开,但似乎个别图片使用 HTTPS,不能完全显示页面,个别 gov 网站会返回 200 OK 但不返回内容,目前原因未知,后期有机会会再改善一下,不过今天 HTTP 站点真是用少见少,国内的就更难找,所以测试的机会也不是很多,有兴趣可以自己玩一下~
(图为通过代理服务器访问 eu.httpbin.org 页面)
1
fuyufjh 2021-01-08 14:46:03 +08:00
记忆中 Lab1 一直是 MapReduce 。然后发现 lz 看的是 2004 年的课程网站
|
3
twoconk 2021-01-08 16:57:49 +08:00
lz 大几,动手能力不错!
|
5
nightwitch 2021-01-08 21:53:12 +08:00
csapp 也有一个 proxylab,里面要实现个 LRU 做缓:)
|
6
heijiaotuan123 2021-01-08 21:59:30 +08:00
https 可以使用隧道模式, 先发送一个 CONNECT,之后就是 TCP 直接转发
|
7
perapera OP @nightwitch 我也记得有!!第一次知道 proxy 这个概念就是 CSAPP,不过今天懒得翻书了,改天一定看一下
|
8
perapera OP @heijiaotuan123 我看的书没几本提到 HTTPS 的,好惨,改天了解一下
|
9
vance123 2021-01-08 23:18:30 +08:00 via Android
当初拿建行的首页测试 csapp 的 proxylab,结果老是崩溃,最后发现是因为一个长度超过 8000 字符的 url
|
10
perapera OP @vance123 哈哈,神了,我也想过这个问题,我还查了 url 有没有[长度限制]( https://stackoverflow.com/questions/417142/what-is-the-maximum-length-of-a-url-in-different-browsers),只是我没想过真的会有这么长的 url,真是太年轻,我直接把超过 512 字节的 URL 给 truncate (截断?)了 😬
|