【问题标题】:How do I determine if a HTTP request came from a browser or something else like a web service?如何确定 HTTP 请求是来自浏览器还是来自 Web 服务之类的其他东西?
【发布时间】:2012-04-05 19:21:38
【问题描述】:

我如何确定 HTTP 请求是来自浏览器还是来自网络服务之类的其他东西?

我知道有一个用户代理,但这似乎主要用于网络浏览器。例如,我知道请求来自谷歌地图或 youtube。请求来自连接的设备。

如果他们有不同的用户代理,我可以举个例子吗?

谢谢。

【问题讨论】:

    标签: http http-headers httprequest


    【解决方案1】:

    绝对无法确定请求是来自浏览器还是其他发出 HTTP 请求的东西。

    HTTP 协议允许客户端任意设置用户代理。

    可以尝试确定另一端的东西是否是浏览器,例如通过执行 JavaScript 并测量结果。但是,有些机器人可以执行 JavaScript,但并非所有浏览器都执行 JavaScript,因此测试类型永远不可能完美。

    行为良好的“机器人”(如常见的搜索引擎蜘蛛)将使用特定于它们的用户代理来识别自己。这里有一个非常全面的用户代理列表:

    http://www.user-agents.org/

    http://www.botsvsbrowsers.com/

    【讨论】:

      【解决方案2】:

      您无法确定,但您可以解析 User-Agent 标头并了解它可能是什么。

      这里是其中的一些列表。 我怀疑它的全面性,但你应该明白: http://www.zytrax.com/tech/web/browser_ids.htm

      【讨论】:

        猜你喜欢
        • 2013-08-06
        • 1970-01-01
        • 2013-12-11
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-09-02
        • 1970-01-01
        • 2013-04-12
        相关资源
        最近更新 更多