我在 access.log 中获取日志条目,但没有 GET 或 POST 指示。
例如:
<ip_addr> - - [27/Jan/2024:07:06:39 +0000] "\x03\x00\x00/*<snip>Cookie: mstshash=Administr" 400 166 "-" "-"
我一直在尝试使用 Python 重新创建这些请求。当我这样做时,我使用的测试系统会报告不同的日志条目:
<ip_addr> - - [02/Feb/2024:00:03:16 +0000] "POST / HTTP/1.1" 301 178 "-" "python-requests/2.31.0"
我尝试从日志条目发送字符串而不转换为字节数组。 这不会复制我在生产系统中看到的相同日志条目
<ip_addr> - - [02/Feb/2024:00:20:37 +0000] "GET /%5Cx03%5Cx00%5Cx00<snip>Cookie:%20mstshash=Administr HTTP/1.1" 502 190 "-" "python-requests/2.31.0"
即它显示为“GET”,并且日志条目的其余部分也不匹配。
接下来要尝试什么有什么想法吗?
这些请求是通过套接字发送的原始数据。内容未按照 HTTP 格式化,因此 nginx 报告内容并将状态码设置为 400。
我能够用 python 复制这些。
我在 serverfault 中创建了另一个问题,看看是否有合适的方法来处理它们,除了让 nginx 发出 400 状态代码之外。
[https://serverfault.com/questions/1152890/nginx-config-for-binary-requests-on-port-80-or-443]