整合Wget与代理网络

2 min read

GNU Wget是一个多功能的命令行实用程序,对于许多依靠它轻松从互联网获取文件的 Linux 用户来说不可或缺。它功能丰富、易于使用,并且支持常见的网络协议,包括HTTP、HTTPS和FTP。此外,Wget内置支持下载整个网站或页面子集,因而是网页抓取、镜像和存档的理想工具。

Wget最令人印象深刻的功能之一是它能够与代理无缝协作。作为 Linux 用户,您经常会发现自己需要代理来掩盖您的身份、绕过讨厌的区域限制或通过负载平衡增强性能。有了工具包中的 Wget,集成代理就变得很容易。

什么是 Wget?

Wget 是“World Wide Web”和“get”的缩写,是一个免费的开源程序,用于与互联网上的文件进行交互。是GNU Project的一部分,也是一个自由软件大规模协作项目。

Wget为在线处理文件的技术用户配备了方便的功能。其中包括批量下载、恢复中断的下载、递归下载、代理支持、下载调度、带宽限制、可定制用户代理和 SSL/TLS 支持。它也是非交互式的,非常适合在后台运行的脚本和cron jobs。

Wget令人印象深刻的一系列功能和跨平台兼容性使其成为各种基于 Web 任务的首选工具,例如下载大文件、自动下载和创建网站镜像。Wget在Linux和Unix用户中大受欢迎,也有适用于Windows和macOS的版本。

通过Wget在Linux中使用代理

代理网络有很多种,包括机房代理和动态住宅代理,每种代理都有自己的优势和用例。将代理与Wget结合使用可以带来各种好处,例如绕过地理和网络/ISP 限制。它还允许您在浏览网页或下载文件时保持匿名和隐私。

使用好的代理网络供应商,还可以用于缓存经常访问的资源,从而提高性能。此外,代理提供商提高您的网络速度,通过提供广泛的 IP 地址来帮助您绕过速率限制,甚至提供绕过验证码的技术解决方案。所以,选择正确的代理供应商对于确保您的代理高效至关重要,尤其是在将其与Wget一起使用时。

配置Wget和代理网络

要将Wget与代理一起使用,需要在您的设备环境中或 Wget 命令本身中配置适当的设置。有几种不同的方法,本教程将介绍其中四种:使用环境变量配置设置代理;通过更新 /etc/wgetrc 文件为所有用户设置代理;通过更新 ~/.wgetrc 为当前用户设置代理;并使用 -e 标志设置当前终端的代理。您还将了解如何将Wget与经过身份验证和未经身份验证的代理一起使用。

您可以在this GitHub gist中找到本文中讨论的所有配置。

首先,你需要满足以下条件:

  • Linux环境:本指南是针对Linux系统编写的,可以是Ubuntu、Fedora、Debian或任何其他Linux发行版。确保您的计算机或虚拟设备环境上安装了Linux。
  • Wget:Wget预装在大多数 Linux 系统上。要检查它是否已安装,请打开终端并输入wget –version。如果安装了Wget,该命令将返回其版本号。如果未安装,您可以使用发行版的包管理器安装 Wget,例如适用于基于Debian-based systems的apt或适用于Fedora.的yum
  • 代理服务器详细信息:要将Wget与代理一起使用,您需要代理服务器的详细信息。这包括服务器的IP地址或主机名、端口号以及身份验证信息(即用户名和密码)。您可以从代理提供商或网络管理员处获得此信息。

1.不同设备环境变量下的代理设置

最简单的配置代理和Wget的方法是在系统级别使用变量定义它们。这允许多个程序读取该值并使用它,只要一次更改就行。将代理设置为环境变量可确保Wget将其用于从您的计算机发出的所有请求。

要为Wget设置代理,请将以下行添加到 shell配置文件(即 .bashrc 或 .bash_profile)中,并将占位符替换为代理服务器的地址和端口(即 http://proxy.example.com:8080):

export http_proxy=http://proxy_address:proxy_port
export https_proxy=https://proxy_address:proxy_port

如果代理网络要求身份验证,不要仅提供链接http://proxy_address:proxy_port 你应该将用户名和密码添加到链接中,这个链接看起来如下:

export http_proxy=http://username:password@proxy_address:proxy_port
export https_proxy=username:password@proxy_address:proxy_port
export ftp_proxy=username:password@proxy_address:proxy_port

请记住将username, password, proxy_address和proxy_port的变量替换为适当的值(即 http_proxy=http://username:[email protected]:8080)。

设置好后,重新启动shell或运行source .bashrc或source .bash_profile,具体取决于您用于应用更改的文件。

2.通过更新 /etc/wgetrc 文件为所有用户设置代理

如果需要为整个系统设置代理。例如,如果您只想在使用Wget下载文件时使用代理来保护您的身份,Wget提供了一种简单的方法,适用于单个系统用户或所有系统用户。

如果共享公司计算机上的不同用户依赖同一代理来执行工作,则为所有系统用户设置代理会很有帮助。Wget允许您配置一次代理,以便所有用户都可以访问它。

要为所有用户设置代理,您需要修改位于 /etc/wgetrc中的配置文件。wgetrc文件是一个初始化文件,存储Wget的默认设置和选项。该文件允许您自定义其行为,而无需始终指定命令行参数。

要设置代理,请使用您喜欢的文本编辑器打开wgetrc文件并添加以下行:

https_proxy = http://proxy.example.com:8080
http_proxy = http://proxy.example.com:8080
ftp_proxy = http://proxy.example.com:8080

需要身份验证的代理,请使用以下语法:

https_proxy = http://username:[email protected]:8080
http_proxy = http://username:[email protected]:8080
ftp_proxy = http://username:[email protected]:8080

将proxy.example.com:8080和 username:password替换为代理服务器的地址、端口和授权身份。保存文件并关闭编辑器。从现在开始,系统上任何用户发出的所有 Wget 请求都将使用指定的代理服务器。

  1. 通过更新 ~/.wgetrc文件为当前用户设置代理

Wget还允许您仅更改当前用户的代理配置。如果您的代理信息因为每个用户的身份不同而有不同的验证信息,这一点将大有用处。

要设置代理,您需要创建/修改 ~/.wgetrc 文件。它是位于您的主目录~/)中的特定于用户的wgetrc文件。这种配置只适用于当前的用户。默认情况下 ~/.wgetrc文件可能不存在,尤其是在新安装的Linux或用户帐户上,因为该文件通常是在用户需要自定义特定于其帐户的Wget设置时创建的。如果该文件不存在,您可以创建它。

获得 ~/.wgetrc文件后,在您喜欢的文本编辑器中打开它并添加以下行:

https_proxy = http://proxy.example.com:8080
http_proxy = http://proxy.example.com:8080
ftp_proxy = http://proxy.example.com:8080

同样,请记住将proxy.example.com:8080 替换为您的具体详细信息。该方法仅影响当前用户发出的Wget请求。如果您在同一计算机上切换到不同的用户,这些设置将不适用。

  1. 使用 -e 标志为当前终端设置代理

如果您不想在系统或Wget级别设置代理,可以在运行Wget命令时直接配置。此方法允许您对各个Wget命令使用不同的代理设置,也更灵活。

要为单个Wget请求指定代理配置,请使用以下语法:

# http proxy
wget -e use_proxy=yes -e http_proxy=http://proxy_address:proxy_port URL
# https proxy
wget -e use_proxy=yes -e https_proxy=http://proxy_address:proxy_port URL

在此代码中,URL是您希望Wget获取的 URL(例如 www.google.com)。

需要身份验证的代理,您可以使用 http://username:password@proxy_address:proxy_port 语法来指定代理,如上一节中所讲到的一样。

此方法允许您为单个请求设置代理,而不影响其他请求、终端会话或用户。

使用Wget

得益于Wget简单宜用。Wget的一般语法是wget [options] [url],首先指定可选参数(即 [options]),例如您之前了解的-e use_proxy=yes,然后是您想要的 [url]获取。这可以是媒体文件,例如文档甚至网页。

因为第一部分是可选的,所以您可以通过指定 wget [url] 来获取 Web 资源。例如,调用 wget http://example.com/file.pdf 会获取文件并将其下载到本地计算机。

您还可以下载文件,同时指定将文件保存到磁盘时要使用的名称。为此,请使用 –output-document 参数:

 wget --output-document=image.jpg https://httpbin.org/image/jpeg

Wget 还允许您通过一个命令从多个URL批量下载。为此,您需要创建一个文件并粘贴您的URL,每个URL各占一行。完成此操作后,您可以运行以下命令:

wget ‐‐input list-of-file-urls.txt

请注意:如果您使用方法 4 指定代理,则必须将-e use_proxy=yes -e http_proxy=http://proxy_address:proxy_port 附加到前面的命令中。由于代理已配置,因此选项 1、2 和 3 将按原样工作。

总结

本文详细介绍了通过代理使用Wget的四种不同方法以及这样做的优点。您可以根据您的偏好选择最合适的方法,可通过系统、向所有用户、向特定用户或向单个 Wget 请求配置和应用代理。

虽然将Wget与代理结合使用可以带来许多好处,但选择正确的代理服务对于最大限度地提高性能和可靠性至关重要。亮数据Bright Data是一个网络数据平台,可帮助企业从网络采集大量结构化数据。通过使用他们的代理解决方案,您可以改善Wget体验并减少失败请求的数量,从而确保更好地从互联网检索信息。

无论您是初创公司还是大型企业,亮数据Bright Data都可以帮助您使用其代理解决方案和自主研发的工具(例如 Web Scraper IDEWeb Unlocker)抓取网站信息并收集数据。点击了解亮数据的机房代理代理服务器选项定价,找到最适合您的代理网络要求的产品。