我什么时候应该使用 Wget 而不是浏览器?我听说 Stallman 出于匿名原因使用它而不是浏览器。当您使用 Wget 获取其文件时,服务器会想到/看到什么?
答案1
在什么情况下我应该更喜欢使用 Wget 而不是某些浏览器?
GNU Wget 是一个免费实用程序,用于从 Web 上以非交互方式下载文件。它支持 HTTP、HTTPS 和 FTP 协议,以及通过 HTTP 代理进行检索。
Wget 是非交互式的,这意味着它可以在用户未登录时在后台工作。这允许您开始检索并断开与系统的连接,让 Wget 完成工作。相比之下,大多数 Web 浏览器需要用户始终在场,这在传输大量数据时可能会成为很大的障碍。
wget 的好处是您可以在命令行或脚本中使用它并在后台下载文件。
当您使用 Wget 获取文件时,服务器会想到/看到什么?
他们将其视为像其他浏览器一样请求文件的浏览器。
这是 wget 的标头(这是服务器看到的):
GET / HTTP/1.1
User-Agent: Wget/1.18 (linux-gnu)
Accept: */*
Accept-Encoding: identity
Host: localhost:80
Connection: Keep-Alive
这是 Firefox 的标题:
GET / HTTP/1.1
Host: localhost:80
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:48.0) Gecko/20100101 Firefox/48.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: zh-TW,en-US;q=0.5
Accept-Encoding: gzip, deflate
DNT: 1
Connection: keep-alive
Upgrade-Insecure-Requests: 1
如您所见,它们很相似。
答案2
也许最好的论点之一是,wget
如果连接不可靠,它能够重试,甚至可以指示服务器“重新获取”,从上次下载失败的位置继续下载 - 这在下载大文件时非常受欢迎。一些浏览器插件也可以做到这一点。
另外,非常有用的是,wget
可以下载整个目录(包括子目录),并且这样做可以避免重复下载。
关于匿名——这是非常相对的。通常,wget
这样标识,并且不少站点认为这是一件坏事 - 有些站点阻止 wget。
但是,可以wget
使用命令行选项将标识设置为任何其他字符串--user-agent=agent-string
。 (同样,某些浏览器插件也可以使用类似的技巧)
所以,基本上,这是一个品味问题......一个很好的论点是wget
可以在脚本中轻松使用,而对于浏览器来说则更复杂。
答案3
图形浏览器中有很多功能(Firefox
、Chrome
等),它们将用于识别用户。不仅仅是 HTTP 标头。它们被称为“浏览器指纹”。
- 已安装的插件
- 当前屏幕分辨率
- 安装的字体
- 支持的功能
还有许多其他...(参考:“我是独一无二的吗?”,《全景全景》, “浏览器泄漏网站” )
CLI 浏览器(wget
、curl
等...)没有很多这样的“指纹”,因为它们非常简单。这增加了匿名性,使得追踪用户变得困难。