使用代理和 Axios Node.js 解除对网站的封锁并保护您的身份信息
Suciu Dan,2023 年 4 月 25 日

什么是 Axios?
Axios 是一种流行的基于承诺的 HTTP 客户端库,可让您在 Node.js 中发出 HTTP 请求。它轻便易用,是网络搜索项目的最佳选择。
Axios 支持多种功能,如代理、自动转换 JSON 数据、支持取消请求,以及支持拦截器(允许您处理身份验证和错误处理等任务)。
什么是代理?
代理也称代理服务器,是客户端(如网络浏览器或搜刮器)和目标服务器(如网站)之间的中介。
代理接收来自客户端的请求,并将其转发给目标服务器。然后,目标服务器将响应发送回代理,代理再将响应发送回客户端。
在网络搜刮中,您可以使用代理服务器来隐藏搜刮器的 IP 地址,这样您搜刮的网站就不会检测到并阻止请求。此外,使用多个代理也有助于防止被发现和被阻止。
有些代理服务器提供轮换 IP 选项,因此您可以轮换代理服务器以避免被屏蔽。
先决条件
要在 Axios 和 Node.js 中使用代理,需要在电脑上安装 Node.js 和 npm(Node 包管理器)。如果尚未安装,可从Node.js 网站下载并安装。
安装 Node.js 和 npm 后,打开终端,为项目创建一个新文件夹,然后运行 `npm init` 命令。按照说明创建基本 package.json 文件。
使用此命令安装 axios:
npm install axios
提出 HTTP 请求
让我们用 Axios 进行第一次请求。我们将向 ipify 端点发送一个 GET 请求。请求将返回我们的 IP 地址。
创建一个 index.js 文件并粘贴以下代码:
// Import axios
const axios = require('axios');
(async () => {
// For storing the response
let res
try {
// Make a GET request with Axios
res = await axios.get('https://api.ipify.org?format=json')
// Log the response data
console.log(res.data)
} catch(err) {
// Log the error
console.log(err)
}
// Exit the process
process.exit()
})()
我们首先导入 axios 库,然后利用 get 方法向 api.ipify.org 端点发送请求。
您可以在终端中使用 `node index.js` 命令运行代码。输出结果应显示您的 IP 地址。在浏览器中访问URL,仔细检查结果。
使用代理服务器
在编写任何代码之前,请访问免费代理列表网站,然后选择一个离您所在地最近的代理。在我的例子中,我将选择一个德国的代理。
axios 的 `get` 方法支持名为 options 的第二个参数。在这个参数中,我们可以定义代理的详细信息。
我们之前使用代理发出的 GET 请求将如下所示:
res = await axios.get('https://api.ipify.org?format=json', {
proxy: {
protocol: 'http',
host: '217.6.28.219',
port: 80
}
})
运行代码后,你会发现返回的 IP 地址与你自己的不同。这是因为请求是通过代理服务器发出的,因此你的 IP 地址不会被检测到。
认证怎么办?
订购高级代理服务时,您将收到一个用户名和密码,供您在应用程序中进行身份验证时使用。
Axios 的 `proxy` 对象有一个 auth 属性,可以接收身份验证凭据。使用这种设置的 GET 请求示例如下:
res = await axios.get('https://api.ipify.org?format=json', {
proxy: {
protocol: 'http',
host: '217.6.28.219',
port: 80,
auth: {
username: "PROVIDED_USER",
password: "PROVIDED_PASSWORD"
}
}
})
将代理设置为环境变量
在 Axios 中配置代理的另一种方法是设置 `http_proxy` 或 `https_proxy` 环境变量。这种方法允许你跳过在 Axios 命令中配置代理详细信息,因为它们会自动从环境变量中获取。
为了实现跨平台兼容性,我建议安装 "cross-env "软件包,它为 Windows 实现了类似导出的命令。
使用此命令全局安装软件包:
npm install -g crossenv
让我们清理一下 `axios.get` 代码,使其达到初始版本。代码应该是这样的
res = await axios.get('https://api.ipify.org?format=json')
我们将在命令前面加入代理 URL,而不是简单地使用 node index.js 运行代码,如下所示:
crossenv https_proxy=http://217.6.28.219:80/ node index.js
脚本的输出应该是代理的 IP 地址,而不是你自己的 IP 地址。要确认这一点,可以访问浏览器中的 ipifyURL。
轮流代理
轮流使用代理服务器是个好主意,因为这有助于避免被发现并防止网站屏蔽你的 IP 地址。如果 IP 地址在短时间内发出过多请求,或与搜索活动有关,网站就会对其进行跟踪和屏蔽。
我们可以使用 "免费代理列表"网站来编制一个代理列表,以便在每次 "axios "请求时轮流使用。
请注意,您在网站上找到的代理列表可能与我编制的列表不同。我创建的列表如下:
const proxiesList = [
{
protocol: 'http',
host: '217.6.28.219',
port: 80
},
{
protocol: 'http',
host: '103.21.244.152',
port: 80
},
{
protocol: 'http',
host: '45.131.4.28',
port: 80
}
];
好了,让我们把 `proxy` 属性放回 `axios` 配置中。但我们不会只使用一个代理,而是从代理列表中随机挑选一个。代码如下
res = await axios.get('https://api.ipify.org?format=json', {
proxy: proxiesList[Math.floor(Math.random() * proxiesList.length)]
})
这是 index.js 文件的内容:
// Import axios
const axios = require('axios');
const proxiesList = [
{
protocol: 'http',
host: '217.6.28.219',
port: 80
},
{
protocol: 'http',
host: '172.67.180.244',
port: 80
},
{
protocol: 'http',
host: '45.131.4.28',
port: 80
}
];
(async () => {
// For storing the response
let res
try {
// Make a GET request with Axios
res = await axios.get('https://api.ipify.org?format=json', {
proxy: proxiesList[Math.floor(Math.random() * proxiesList.length)]
})
// Log the response data
console.log(res.data)
} catch(err) {
// Log the error
console.log(err)
}
// Exit the process
process.exit()
})()
使用 WebScrapingAPI 代理
使用 WebScrapingAPI 等服务提供的高级代理服务比使用免费代理服务更好,因为它们更可靠、更快速、安全性更高。高级代理不容易被网站屏蔽,延迟也更低。
相比之下,免费的代理服务器可能速度慢、不可靠、含有恶意软件,而且容易被网站屏蔽。
想试用 WebScrapingAPI?没问题,只需注册我们的 14 天免费试用版,您就可以使用所有很酷的功能,甚至还能获得 5,000 点数。
拥有账户后,前往API Playground,在代码示例部分选择代理模式选项卡

让我们在代码中使用代理 URL。axios GET 请求将如下所示:
res = await axios.get('https://api.ipify.org?format=json', {
proxy: {
host: 'proxy.webscrapingapi.com',
port: 80,
auth: {
username: 'webscrapingapi.render_js=0.device=desktop.proxy_type=datacenter',
password: '[YOUR_API_KEY]'
}
}
})
用户名 "属性允许您启用或禁用特定的 API 功能。请记住,您还必须在 "密码 "属性中设置 API 密钥。您可以在此处查看完整的文档。
由于 WebScrapingAPI 会在每次请求时轮换 IP,因此每次运行此代码时,都会收到不同的 IP 地址。您可以阅读代理模式的文档,了解有关此功能的更多信息。
此外,您还可以在数据中心代理和住宅代理之间进行切换。有关我们提供的不同类型代理的更多信息,请访问代理文档。
结论
使用代理是网络搜刮的一个重要方面,因为它可以让你隐藏 IP 地址并访问被屏蔽的网站。Axios 是一个功能强大的数据搜刮库,与可靠的代理相结合,可以实现高效快速的数据提取。
通过使用像 WebScrapingAPI 这样的高级代理服务,您可以获得广泛的功能,包括 IP 轮换以及在数据中心和住宅代理之间切换的选项。
我们希望这篇文章能帮助您了解如何使用 Axios 和 Node.js 代理,以及如何满足您的刮擦需求。欢迎注册我们的 14 天免费试用版,以测试我们的服务并探索所有特性和功能。
新闻和更新
订阅我们的时事通讯,了解最新的网络搜索指南和新闻。
We care about the protection of your data. Read our <l>Privacy Policy</l>.Privacy Policy.

相关文章

通过我们的深入指南,探索刮擦亚马逊产品数据的复杂性。从最佳实践和亚马逊 Scraper API 等工具到法律注意事项,了解如何应对挑战、绕过验证码并高效提取有价值的见解。




学习如何使用 Golang 搜刮 HTML 表格以进行强大的数据提取。探索 HTML 表格的结构,并使用 Golang 的简洁性、并发性和强大的标准库构建网络刮擦工具。
