1 个不稳定版本
0.1.0 | 2023年3月23日 |
---|
#8 在 #refresh
14KB
279 行
refresh_parser
现代浏览器有几种重定向机制。其中之一是 refresh
。您可以在
- HTTP 头部
Refresh: 5; url=https://gitlab.com/
- HTML 内容
<meta http-equiv="Refresh" content="5; URL=https://gitlab.com/" />
中填充 refresh
内容。因此,它的解析算法相当复杂
- https://searchfox.org/mozilla-central/rev/4d6a262deed98ddb4d609de94048e7f97b6e85d3/docshell/base/nsDocShell.cpp#5377
- https://github.com/yoavweiss/Blink/blob/0e22e374087693ab579b336e0a639e13f637fed1/Source/platform/network/HTTPParsers.cpp#L171
此仓库展示了在 rust 上实现此 算法。
运行测试
cargotest
运行模糊测试 (https://rust-fuzz.github.io/book/introduction.html)
cargofuzz run fuzz_refresh_parser
依赖项
~280–740KB
~17K SLoC