【问题标题】:"Users" sending GET requests to a website, when POST is expected“用户”在需要 POST 时向网站发送 GET 请求
【发布时间】:2011-08-09 09:32:39
【问题描述】:

我一直在我们的日志中看到奇怪的行为,其中通常只能通过 POST 请求访问的 URL 通过 GET 调用。这些 URL 包括那些仅通过 javascript 构建的 URL,因此您不会期望常规蜘蛛会遇到它们。如果我在日志中搜索这些请求来自的 IP,则该用户似乎只向我们发送了 GET 请求。

这似乎不是典型的机器人行为 - 请求分散,而不是在短时间内向我们的服务器发送大量请求。用户代理都是常规浏览器。然而 - 这只是推测 - 它看起来不像是人类浏览网站,因为他们似乎在整个地方跳跃而不是跟随一个链接到下一个链接。

还有其他人在他们的网站上看到过这种行为吗?有什么建议是什么原因造成的?

【问题讨论】:

    标签: search browser bots


    【解决方案1】:

    我经常在网站上抓取信息,当我真的很懒惰时,我会将所有内容都提交为GET,而不是使用POST...很多时候,需要POST 的CGI 将接受GET。我将脚本设置为使用列表中的随机USER-AGENT:ipad 上的 safari、XP 上的 firefox 或 Vista 上的 Internet Exploder。

    谁知道呢,可能是我在抓取你的网站,然后得到答案的分数 ;-)。

    【讨论】:

      【解决方案2】:

      可能是有人在您的网站上寻找漏洞。他们会分析您的表单,然后制作自己的 URL,寻找使用该服务的弱点或非常规方式。如果它通常是相同的 IP 地址,那么您可能会认为是这种情况。

      一个例子可能是您是一个流媒体提供商,并且有人试图拼凑视频下载脚本的源 URL。虽然通常只是垃圾邮件发送者希望通过您的联系表格进行中继。

      不要对 IP 地址和用户代理做太多假设。前者可以代理(通过 Tor 等网络),后者可以随意更改。仅仅因为 IP 和用户代理发生变化并不意味着它不是同一个用户生成请求。

      【讨论】:

        【解决方案3】:

        只是一个疯狂的猜测:

        • 有一个叫做“网络加速器”的东西,一个可以预取链接的浏览器插件,所以当你决定点击一个时,它已经被缓存了。它不应该缓存看起来像查询的东西,但也许有些人会检测到您的 URL 适合预取。由于它在浏览器中运行,它至少会看到 javascript 添加到文档中的所有 URL(通过 document.write 或 DOM 访问)。

        • “Web 加速器”也可以作为 Web 代理的一部分来实现。这似乎不太可能,因为它必须解释 javascript,但如果 URL 完整地出现在 javascript 中,它可能只是简单地为任何看起来像 URL 的文本搜索任何文本并可能找到它们。

          李>

        这可以解释为什么请求会分散(每次真实用户访问该站点时都会触发几个请求),为什么用户代理字符串对应于实际浏览器(如果它是浏览器插件,它使用它的用户代理字符串)以及它们为什么会到处乱跳(它们同时尝试预取多个链接,并且可能是启发式方法选择哪些链接不适用于您的网站)。

        【讨论】:

        • 是的,我想知道这是否是由于网络加速器的原因,但似乎不太可能。例如,一些相关的 js 代码类似于 $.post(window.location.href+'/stats', {foo:bar}) - 所以它永远不会插入到页面中,并且是网络加速器的唯一方式如果它正在查看浏览器历史记录并重新获取旧请求,就会看到它。很奇怪。
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2015-09-20
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多