我为什么要使用用户代理访问url?
我有一个类似于这个问题的代码。 在接受的答案中扩展代码也对我有用。
在此之前,我使用过这种类型的代码,从不遇到任何exception。
现在,我的问题是:
- 我为什么要使用用户代理?
- 为什么有必要在我的程序中使用?
-
是否有必要在每个程序中使用?
- 如果是的话,我的程序之前如何运行得如此之好?
- 如果不是,为什么我现在必须处理这个?
- 如何生成字符串
"Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0)"
? (我想知道确切的格式)。
请注意 :
我修复它的程序,我每天都使用它,但之前从未遇到任何问题。
许多网络管理员希望阻止僵尸程序访问他们的网站,因为他们所做的是定期抓取数据,但所有者无法从这些匹配中获得任何广告收入。 所以没有明显的好处,但他们继续使用资源。 出于这个原因,它们会阻止任何看起来不像人类使用的浏览器的东西。 正如您所看到的,让您的程序假装成另一个程序是完全无足轻重的。 所以这种技术对任何知道自己在做什么的人都无效。 一般来说,不要假装你不是的东西(互联网礼仪)是礼貌的。
用户代理字符串在技术上可以是您想要的任何内容,但大多数应用程序遵循常见模式,例如$product/$version
。 你可以在这里看到一些例子。
有关更多信息,请查看维基百科关于此事的文章 。
如此快速的总结:
- 您应该使用它,因为服务器希望所有客户端都有一个
- 该库可能有一个默认的用户代理(例如
JavaLib/1.1
),但由于上述原因,您必须设置自己的代理。 - 并非所有程序都需要,但假装是浏览器对机器人很有用。 请记住它被认为是不礼貌的。 例如, wget在没有修改的情况下99%的时间工作,但有些网站会阻止其用户代理。
- 该字符串未生成,只是从现有浏览器复制,在这种情况下为IE 6.0。 你连接的服务器似乎接受它。