【发布时间】:2012-04-05 19:21:38
【问题描述】:
我如何确定 HTTP 请求是来自浏览器还是来自网络服务之类的其他东西?
我知道有一个用户代理,但这似乎主要用于网络浏览器。例如,我知道请求来自谷歌地图或 youtube。请求来自连接的设备。
如果他们有不同的用户代理,我可以举个例子吗?
谢谢。
【问题讨论】:
标签: http http-headers httprequest
我如何确定 HTTP 请求是来自浏览器还是来自网络服务之类的其他东西?
我知道有一个用户代理,但这似乎主要用于网络浏览器。例如,我知道请求来自谷歌地图或 youtube。请求来自连接的设备。
如果他们有不同的用户代理,我可以举个例子吗?
谢谢。
【问题讨论】:
标签: http http-headers httprequest
绝对无法确定请求是来自浏览器还是其他发出 HTTP 请求的东西。
HTTP 协议允许客户端任意设置用户代理。
可以尝试确定另一端的东西是否是浏览器,例如通过执行 JavaScript 并测量结果。但是,有些机器人可以执行 JavaScript,但并非所有浏览器都执行 JavaScript,因此测试类型永远不可能完美。
行为良好的“机器人”(如常见的搜索引擎蜘蛛)将使用特定于它们的用户代理来识别自己。这里有一个非常全面的用户代理列表:
【讨论】:
您无法确定,但您可以解析 User-Agent 标头并了解它可能是什么。
这里是其中的一些列表。 我怀疑它的全面性,但你应该明白: http://www.zytrax.com/tech/web/browser_ids.htm
【讨论】: