为什么我应该使用用户代理访问 url?

Why should I access a url using a User Agent?

我有一个与 this question 类似的代码。在接受的答案中扩展代码对我也有用。

这一次之前,我一直使用这种类型的代码,从未遇到过任何异常情况。

现在,我的问题是:

  1. 为什么要使用 USER AGENT?
  2. 为什么有必要在我的程序中使用?
  3. 是不是每个程序都要用到?

    • 如果有,我的程序怎么运行以前那么好?
    • 如果没有,为什么我现在必须处理这个?
  4. 字符串"Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0)"是如何生成的? (我想知道确切的格式)。

注意:

我修复它的程序,我每天都在使用它,但以前从未有过任何问题。

许多网络管理员希望阻止机器人访问他们的网站,因为他们所做的是定期抓取数据,但所有者无法从这些点击中赚取任何广告收入。所以没有明显的好处,但他们继续使用资源。出于这个原因,他们会阻止任何看起来不像人类使用的浏览器的东西。如您所见,让您的程序伪装成另一个程序是完全微不足道的。所以这种技术对任何知道自己在做什么的人都无效。不过,总的来说,不假装自己不是的人被认为是有礼貌的(网络礼仪)。

用户代理字符串在技术上可以是您想要的任何内容,但大多数应用程序都遵循一种常见的模式,例如 $product/$version。你可以看到一些例子 here.

有关详细信息,请查看有关此事的 wikipedia article


如此快速的总结:

  1. 你应该使用它,因为服务器希望所有客户端都有一个
  2. 图书馆可能有一个默认的用户代理(例如 JavaLib/1.1),但由于上述原因,您必须自己设置。
  3. 并非所有程序都需要,但伪装成浏览器对机器人很有用。请记住,这被认为是不礼貌的。例如,wget 对我来说 99% 的时间无需修改,但有些网站会阻止其用户代理。
  4. 字符串未生成,它只是从现有浏览器(在本例中为 IE 6.0)复制而来。您正在连接的服务器似乎接受它。