使用代理和 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 等工具到法律注意事项,了解如何应对挑战、绕过验证码并高效提取有价值的见解。

Suciu Dan
作者头像
Suciu Dan
15 分钟阅读
缩图
指南了解如何使用最好的 Selenium 浏览器绕过 Cloudflare 检测

了解在使用 Selenium 进行网络刮擦时,绕过 Cloudflare 检测系统的最佳浏览器是什么。

米赫内亚-奥克塔维安-马诺拉什
作者头像
米赫内亚-奥克塔维安-马诺拉什
9 分钟阅读
缩图
指南了解如何使用 Golang 抓取 HTML 表格

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

安德烈-奥吉奥兰
作者头像
安德烈-奥吉奥兰
8 分钟阅读