【问题标题】:Apache Access Log request that does not start with a forward slash /不以正斜杠 / 开头的 Apache 访问日志请求
【发布时间】:2020-12-19 20:03:39
【问题描述】:

我遇到了一个 IP 地址/未知机器人,它发出了四个 HTTP 请求,设法以以下方式请求四个不同的域名第一个字符不是正斜杠 /:

"GET www.example.com

当我对请求 http://localhost/www.example.com 进行测试时,我在 Apache 中看到以下内容:

"GET /www.example.com

所有其他请求都以正斜杠开头。机器人是如何发出这样的请求的,我如何重现它以确定如何处理这样的请求?

引用的 Apache 日志减少为请求方法和 URL,以避免偏离主题的 cmets。

【问题讨论】:

    标签: apache http url


    【解决方案1】:

    根据HTTP requests 的工作方式,这可以通过向您的IP 地址发送原始HTTP 请求并指定GET 和Host 标头来实现,如上面链接页面中所述:

    Request-URI 最常见的形式是用于标识一个 源服务器或网关上的资源。在这种情况下绝对 必须传输 URI 的路径(参见第 3.2.1 节,abs_path)为 Request-URI 和 URI(授权)的网络位置必须 在 Host 头域中传输。例如,客户希望 直接从源服务器检索上面的资源将 创建到主机“www.w3.org”的端口 80 的 TCP 连接并发送 行:

       GET /pub/WWW/TheProject.html HTTP/1.1
       Host: www.w3.org
    

    随后是请求的其余部分。注意绝对路径不能为空;如果没有 原始 URI,它必须以“/”(服务器根目录)的形式给出。

    这可以在 Windows 上使用 PuTTY 完成,或在 Linux/Mac 上使用 nc 完成(更多详细信息请参见此处的答案:https://stackoverflow.com/a/3620596/1038813)

    【讨论】:

    • 很好,这对我来说更像是一个不错的选择,所以在我处理完其他一些事情后,我会适当地审查它并正式接受它。谢谢!
    • 那么,使用cURL,如何指定主机和分别指定相对URL呢?我应该用 cURL 标记我的问题...
    • 使用 cURL,您必须创建一个包含请求标头的文本文件(或回显它),然后使用telnet://TARGETHOST:80 作为 URL:cat raw.http | curl "telnet://TARGETHOST:80" 将其通过管道传输到 cURL:cat raw.http | curl "telnet://TARGETHOST:80"
    猜你喜欢
    • 2012-05-26
    • 1970-01-01
    • 1970-01-01
    • 2022-01-01
    • 2020-12-20
    • 2019-04-14
    • 1970-01-01
    • 1970-01-01
    • 2016-09-28
    相关资源
    最近更新 更多