@
billlee 1. 直接搜索是很快的,商用防火墙可以在内核态拿着上万条正则扫万兆以太网的全部流量。
这个主要看 CPU 性能,我们在家用路由器上做过类似操作,性能损失很明显。
来回答下楼主的问题
如果只是想实现功能,nginx 反代有可能能满足楼主需求,不过这个我没有仔细研究过,只是提出来,需要楼主自行查证。
如果是自己写代码实现,应该有下面这些需要留意
1 、HTTP 1.x 也是可以一条 tcp 连接承载多个 http 请求的,关键字 keepalive ,这种情况也是需要持续处理后续数据的。
2 、可以考虑使用类似反代的思路,这样的话,UA 跨包和因为修改 UA 导致的数据包长度变化问题就迎刃而解了。
3 、UA 定位建议按协议进行分析,暴力查找感觉性能还是低了些,而且本来你也是抱着一部分学习的目的。
4 、某些应用的服务器会检测 UA ,修改 UA 可能会导致功能异常,这种需要特殊处理。
最后再提供另一个思路。
不知道你们校园网 UA 检测对于 http 头跨包的情况处理到了什么程度,可以试试将 HTTP 头逐个字节发送,看看是不是能被检测到。逐个字节发送需要在网络层抓包确认,并不只是在代码里一次 write 一个字节,多次 write 的数据,内核可能会合成一个包发出去。