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

我有一个类似于这个问题的代码。 在接受的答案中扩展代码也对我有用。

在此之前,我使用过这种类型的代码,从不遇到任何exception。

现在,我的问题是:

  1. 我为什么要使用用户代理?
  2. 为什么有必要在我的程序中使用?
  3. 是否有必要在每个程序中使用?

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

请注意

我修复它的程序,我每天都使用它,但之前从未遇到任何问题。

许多网络管理员希望阻止僵尸程序访问他们的网站,因为他们所做的是定期抓取数据,但所有者无法从这些匹配中获得任何广告收入。 所以没有明显的好处,但他们继续使用资源。 出于这个原因,它们会阻止任何看起来不像人类使用的浏览器的东西。 正如您所看到的,让您的程序假装成另一个程序是完全无足轻重的。 所以这种技术对任何知道自己在做什么的人都无效。 一般来说,不要假装你不是的东西(互联网礼仪)是礼貌的。

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

有关更多信息,请查看维基百科关于此事的文章 。


如此快速的总结:

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