examplecode / mproxy

c 语言实现的一个最小的http代理,支持翻墙
990 stars 378 forks source link

接收和发送字节不匹配的问题 #18

Closed zac372424332 closed 7 years ago

zac372424332 commented 7 years ago

最近研究了一下代码,发现如果把send 和recv 得到的buffer 长度和字母打印出来,得到的长度是一样的,但实际buffer里的数据长度却不一样。实际收到的字节比发出的字节要多一些。很奇怪啊,为什么会这样?加密不是每个字节一一对应的吗?这样解密是才能得到正确的数据。但是又能正常工作。好奇怪的现象。

recv len = 502 buffer recv = GET http://www.google.com/ HTTP/1.1 Host: www.google.com User-Agent: Mozilla/5.0 (Android 7.1.1; Mobile; rv:53.0) Gecko/53.0 Firefox/53.0 Accept: text/html,application/xhtml+xml,application/xml;q=0.9,/;q=0.8 Accept-Language: zh-CN,zh;q=0.8,en-US;q=0.5,en;q=0.3 Accept-Encoding: gzip, deflate Cookie: NID=104=m5-no8IetRfnkhU2ccoy3wv-3pnG1ZdBMETkAchadvIN0NLskY4lsZzGdVMTDK7LpSdXzXA1Z3I_5LBEcL-rsrbcr3E8opwieGQp19hdRFg0qR13CwocB1dP5aIc8W_3 Connection: keep-alive Upgrade-Insecure-Requests: 1

send len = 502 buffer send = r:&&"h}}%%%|5==5>7|1=?}r}c|c_X=!&hr%%%|5==5>7|1=?_X!7 57<&hr=(;>>3}g|brz<6 =;6re|c|cir=0;>7ir $hga|b{r719=}ga|br; 74=}ga|b_X117"&hr&7&}:&?>~3"">;13&;=<}:&?>y?>~3"">;13&;=<}*?>i#ob|k~x}xi#ob|j_X117"&3<5'357hr(:~(:i#ob|j~7<i#ob|g~7<i#ob|a_X117"&<1=6;<5hr5(;"~r674>3&7_X==9;7hrocbfo?g<=j&