当你匿名冲浪时,您是否希望控制你的代理网络?那么你就来对地方了。本文中的信息将向你展示如何使用 Node Unblocker 创建和自定义你自己的代理网络。

互联网有很多优势,特别是在数据收集和数字营销领域。然而,由于网络攻击如此之多,网站已经学会了不懈地保护自己的域名。然而,有些简单的任务需要匿名浏览互联网。其中一些包括网络数据抓取和访问有价值的地理限制内容。

因此,使用网络代理是更私密地浏览互联网的最佳方法之一。除了保护您的隐私之外,网络代理还可以帮助您绕过各种限制并避免阻止和禁止。您可以购买昂贵的现成 Web 代理,也可以使用 Node Unblocker 等 Web 代理包创建自己的代理。为了通过代理路由所有传入请求,Node Unblocker 将添加一个额外的层,无论您尝试抓取或访问哪个网站。这对于自由浏览和抓取网站非常有益。

在本文中,我们将解释什么是 Node Unblocker 以及如何使用它来创建自己的 Web 代理,以绕过互联网审查和反网络抓取工具。我们还将进一步研究其优点和缺点。那么我们开始吧。


什么是Node Unblocker?

Node Unblocker 本质上是一个 Web 代理,使您能够访问目标网站上被阻止或受限的内容。换句话说,Node Unblocker 是一个用于代理和修改远程网站的多用途库。它是一个 Node.js 包,具有​​与 Express 兼容的 API,可以轻松设置代理。它具有非常灵活的JS接口,可以通过多种方式使用。任何具有 Express 使用经验的 Node.js 开发人员都会发现使用代理服务器很简单。

将 Node Unblocker 用作 REST API 的能力是传统 HTTP 或 SOCKS5 代理与 Node Unblocker 代理之间的主要区别。因此,Node Unblocker 公开的 REST API 端点是浏览器和网络抓取工具与其通信的方式。如果您想检索页面,只需将页面的 URL 添加到代理端点即可。

Node Unblocker 服务器使用当前正在运行的计算机的 IP 地址提取内容。Node-Unblocker 是一种非常快速且有效的代理选择,因为它确保所有数据都得到处理并传输到客户端,而无需进行不必要的缓冲。此外,由于其 JS 接口,它的适应性非常强,可以在多种方面发挥作用。

从本质上讲,Node Unblocker使您能够匿名浏览互联网,访问受地理限制的内容,甚至从网站上抓取数据而不被检测或禁止。例如,如果您想使用 AJAX 调用从网站或登录墙后抓取数据,此代理可以提供帮助。

但是,您应该意识到,如果您的目标是 Google 或 Facebook 相关网站,则这不会有效。话虽这么说,让我们看看如何设置 Node Unblocker。


设置Node Unblocker

Node Unblocker服务器设置简单明了。但是,您需要安装所有必要的依赖项。因此,请确保您的计算机上安装了 Node.js 和 npm 才能设置Node Unblocker程序。您可以使用 nvm 等版本管理应用程序或参考 Node.js 网站的官方文档来完成此操作。在我们完成整个过程时,请务必遵循本教程。

步骤1:集成Node Unblocker服务器 

在计算机上安装 Node.js 后,您需要将 Node Unblocker 服务器与 Express 等 API 服务器集成。这可以使用 npm 命令来完成:

npm init -y 

npm install unblocker express

Express 是一个简单的 Web 框架,可以帮助 Node.js 开发人员快速构建服务器。Express 兼容代理的 use() 方法使您能够在代理实例和 Express 服务器之间建立连接。另一方面,Node Unblocker 的软件包名称是 Node Unblocker。在上面的代码中,一个 Express 应用程序、一个新的 unblocker 实例和 npm 都已初始化。

第 2 步:构建 Node Unblocker 服务器

让我们通过创建 app.js 文件来构建 Node Unblocker 服务器。观察下面的代码:

// app.js

var express = require('express')
var Unblocker = require('unblocker');

// This Creates Express Server
var app = express();

// This Creates Unblocker Instance, and Configure your Express Server to Use It
var unblocker = new Unblocker({prefix: '/proxy/'});
app.use(unblocker);

// Launches Server on Port 8080

app.listen(process.env.PORT || 8080).on('upgrade', unblocker.onUpgrade);
console.log("Node Unblocker Server Running On Port:", process.env.PORT || 8080)

上面的代码首先需要您的依赖项。然后它继续启动一个新的 Unblocker 实例和 Express 应用程序。此外,如您所见,仅设置了前缀属性。更进一步,指示可以访问代理的路径,在本例中为“/proxy/”。要将代理实例连接到 Express 服务器,您所要做的就是调用 use() 方法,这要归功于 API 与 Express 的兼容性。这意味着您可以使用 Listen() 方法来启动 Express 服务器。

如果一切按计划进行,这个基本服务器将在 localhost:8080 或您在启动时指定的 PORT 环境变量上运行。此外,我们已将 .on(升级处理程序)添加到应用程序中。监听 process.env.port 8080。如果连接协议从 HTTP 切换到 WebSocket,这有助于通知代理。


测试服务器

现在您已经设置了 Node Unlocker 代理服务器,您需要对其进行测试以确保其正常工作。首先使用 Node.js 运行脚本来实现这一点。

node app.js

如果一切正确,console.log() 消息应该出现在您的终端中。获取 URL 并附加 localhost: [PORT]/ proxy/ 以确保代理正常工作。例如:

http://localhost:8080/proxy/https://www.amazon.com

使用curl命令,您也可以在终端中尝试此操作。更好的是,只需在浏览器的 URL 栏中输入上述 URL 即可测试 Node Unblocker 服务器。该请求是通过 Node Unblocker 服务器发送时使用执行服务器的计算机的 IP 地址发出的。如果本地使用 Node Unblocker,则 IP 地址不会改变。如果您想修改 IP 地址,则必须将解锁程序部署到远程服务器。

如果代理有任何问题,请务必设置 DEBUG 环境选项,以便您可以看到每个请求的完整详细信息:

DEBUG=unblocker:* node index.js

部署到 Heroku

现在我们确定我们创建的服务器可以正常工作,让我们看看如何将其部署到Heroku要使用您刚刚创建的 Node Unblocker 代理服务器,您只需在远程服务器上部署该服务器并向其发送请求即可。Heroku 就是这样的一种远程服务器。您可以在任何地方部署您的代理服务器;然而,Heroku 是最简单的选择之一,并且提供免费计划。


配置服务器以进行部署

您必须首先更改 package.json 文件以包含服务器的设置信息,以便将代理服务器部署到 Heroku 或任何其他托管提供商。这将使您能够使用托管提供商的计算机的 IP 地址。在这种情况下,Heroku 的计算机。

{

"name": "proxy-server",

"version": "1.0.0",

"main": "app.js",

"private": true,

"engines": {

"node": "16.x"

},

"dependencies": {

"express": "^4.17.1",

"unblocker": "^2.3.0"

},

"scripts": {

"start": "node app.js"

}

}

您在上面的代码中创建了一个脚本来指示 Heroku 如何启动您的应用程序。它有一个引擎组件,如果您仔细观察的话,它会指定应使用的 Node.js 版本。启动脚本进一步指导 Heroku 如何启动新建的代理。为了防止将未使用的文件和依赖项推送到 GitHub 存储库和 Heroku 服务器,创建 a.gitignore 文件也会很有帮助。

# Dependencies

node_modules

# yarn error logs

yarn-error.log

# Environment varibales

.env*

!.env*.example

# Code coverage

coverage

可接受的使用政策

我们认为您在尝试在远程服务器上安装 Node Unblocker 代理应用程序时应牢记允许的使用策略。此类应用程序并不总是托管在提供商的服务器上。即便如此,也只会受到非常严格的限制。

关于 Heroku,公司政策禁止在不遵守既定机器人排除准则(例如 robots.txt 文件中找到的准则)的情况下托管供公共使用的代理或参与网络抓取活动。您可能还需要提供不同的用户代理字符串。


使用 Heroku CLI 进行部署

因此,为了继续,您需要一个 Heroku 服务器帐户。如果您还没有帐户,请立即访问 Heroku 网站注册一个免费帐户。

步骤1

如果您已经有帐户,请继续安装Heroku CLI 工具。

第2步

下一步是使用 Heroku 仪表板创建一个新应用程序。使用CLI中的login命令登录Heroku。这意味着为了创建新的 SSH 公钥,您必须通过命令行提供 Heroku 登录信息并继续按照说明进行操作。在 Heroku 仪表板上,还需要创建一个新应用程序。使用以下代码:

heroku login

heroku apps:create

步骤3

如果登录成功,您需要在Node Unblocker程序创建的目录中初始化 Git。应用程序的 ID、URL 和 Git URL 都应该在控制台中可见。继续使用 ID 为刚刚建立的 Git 存储库设置远程源。

git init heroku

git:remote -a [the_app_ID]

步骤4

剩下要做的就是使用 git 将代码部署到 Heroku 并提交。

git add .

git commit -am "Initial commit"

git push heroku master

如果您已正确完成所有操作,您的 Heroku 应用程序 URL 应允许您访问代理。访问此链接查看其是否正常运行:https://[the_app_ID].herokuapp.com/proxy/https://www.amazon.com

在这种情况下,该请求将通过 Heroku 转发。另一方面,一旦收到请求,Amazon 的服务器就会看到 Heroku 的 IP 地址。有趣的是,您可以将此 Node Unblocker 代理服务器用作独立服务,也可以将其与 Selenium 或 Puppeteer 等无头浏览器结合使用,尤其是在 Web 抓取场景中。


生成Node Unblocker代理网络

还可以扩展之前的场景并使用它创建您自己的代理网络或池。如果您将 Node Unblocker 服务器分布在多个设备上,这将非常有用。您可以在多台 Heroku 计算机上安装 Node Unblocker 代理服务器,作为扩展代理池的一种方法。

此外,您可以租用相对便宜的远程服务器,价格从2.00美元起。之后,您需要设置您的网络爬虫或机器人,以将每个请求发送到代理网络中的不同服务器。下面是一个Python请求爬取器的示例:

import requests

from itertools import cycle

## These are the Node Unblocker Proxies

list_proxy = [

"https://200.450.15.30:8080",

"https://200.450.15.31:8080",

"https://200.450.15.32:8080",

]

proxy_cycle = cycle(list_proxy)

proxy = next(proxy_cycle)

for i in range(1, 10):

proxy = next(proxy_cycle)

print(proxy)

proxies = {

"http": proxy,

"https":proxy

}

r = requests.get(url='https://www.amazon.com', proxies=proxies)

print(r.text)

另一种方法可能是您想要抓取地理限制的内容,例如法国限制的网页。通过在这台位于法国的服务器上部署 Node Unblocker,您可以使用其代理访问仅限于法国地区的网站。您可以使用以下代码来实现:

let FRonlyUrl = "https://www.anexampleofwebsite.com"

fetch(`https://localhost:8080/proxy/${FRonlyUrl}`)

let proxyPool = [

"https://413.345.11.21:8080",

"https://413.345.11.22:8080",

"https://413.345.11.23:8080",

]

let proxy = proxyPool[Math.floor(Math.random()*proxyPool.length)];

url = "https://www.anexampleofwebsite.com"

fetch(`${proxy}/proxy/${FRonlyUrl}`)

让我们看看这种代理的一种更复杂的用法:使用请求和响应中间件添加额外的逻辑。


Node Unblocker中间件

到目前为止,我们已经了解了如何设置和部署 Node Unblocker 代理服务器。但是,要解锁更多功能,您可以使用 Node Unblocker 中间件,使代理服务器在使用时变得非常强大和高效。

Node Unblocker 中间件本质上是一些小功能,可让您在代理服务器接收请求和响应时更改它们。您可以更改请求并更快地响应它们。Node Unblocker 使用中间件来实现其大部分功能。然而,自定义中间件也可以用来代替内置的调试激活。

通过将它们包含在requestMiddleware和/或responseMiddleware数组中,您可以更改传出请求和传入响应。

// app.js

var express = require('express')

var Unblocker = require('unblocker');

// This Creates Express Server

var app = express();

// This creates Unblocker Instance, and Configure the Express Server to Use It

var unblocker = new Unblocker(

{

prefix: '/proxy/',

requestMiddleware: [] // Custom request middlewares go here

responseMiddleware: [] // Custom response middlewares go here

});

app.use(unblocker);

// This launches Server on Port 8080

app.listen(process.env.PORT || 8080).on('upgrade', unblocker.onUpgrade);

console.log("Node Unblocker Server Running On Port:", process.env.PORT || 8080)

You have to set standardMiddleware to false (standardMiddleware: false) in order to alter the middleware that Node Unblocker uses by default. Additionally, go ahead and turn on the desired default middleware.

The feature of Unblocker's Request Middlewares can be used frequently to add unique headers and user agents to your requests.

You can use the following code to add the user agent:

// app.js

var express = require('express')

var Unblocker = require('unblocker');

// This Creates Express Server

var app = express();

// Your User Agent Middleware

function setUserAgent(data) {

data.headers["user_agent"] = "Mozilla/5.0 (iPad; CPU OS 12_2 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148";

}

// Create Unblocker Instance

var unblocker = new Unblocker(

{

prefix: '/proxy/',

requestMiddleware: [

setUserAgent  // Enable User Agent Middleware

]

});

// Configure Our Express Server to Use It

app.use(unblocker);

// Launches Server on Port 8080

app.listen(process.env.PORT || 8080).on('upgrade', unblocker.onUpgrade);

console.log("Node Unblocker Server Running On Port:", process.env.PORT || 8080)

Additionally, you can set it up to request specific URLs using certain types of headers.

function setUserAgent(data) {

if (data.url.match(/^https?:\/\/google.com\//)) {

data.headers["user-agent"] = "Mozilla/5.0 (iPad; CPU OS 12_2 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148";

}

}

使用 Node Unblocker 中间件的好处

如果您使用 Node Unblocker 中间件,您的基础设施将变得更加易于维护。这是因为您可以使用带有 Node Unblocker 的请求响应中间件从代理服务器中提取有关代理设置的大量信息。因此,您的代理服务器将具有此逻辑,并将其应用于从抓取工具收到的每个请求,从而使您无需管理和维护每个抓取工具或机器人中的代理标头和用户代理配置。


为什么应该使用 Node Unblocker?

Node Unblocker 已成为想要访问受限内容的用户最流行和最有用的工具之一。使用 Node Unblocker 时,您可以享受到很多好处。让我们来看看其中的一些。

访问地理限制内容

Node Unblocker 确保其代理服务器允许您访问仅限您所在区域内的用户访问的内容。它确保您访问的任何网站都会显示该可靠服务器的 IP 地址,而不是您自己的 IP 地址。

此外,使用代理服务器是合法的。这样,如果您连接到服务器,比如说在德国,它会假设您暂时在那里。通过此功能,您可以访问许多体育流媒体或视频流网站及其机会,否则您所在地区将无法访问这些网站。

能够绕过互联网审查

Node Unblocker 不仅可以帮助人们访问被阻止的流媒体服务,而且还可以超越政府施加的大多数形式的限制。对于中国和朝鲜等国家的公民来说,互联网的可用性大大降低,这些国家的政府禁止访问 YouTube 和谷歌等网站。

因此,这些限制确实会限制这些地区的个人愿意做研究、撰写内容、收集信息、接触家人和亲人等事情。这些人可以对敏感话题进行彻底调查,并与他们选择的任何人进行交流。通过使用Node Unblocker保持匿名。

没有出现任何问题。如果您生活在一个网络审查严格的国家,并且您确实需要访问优质信息,那么在混乱的服务器上使用 Node Unblocker 是至关重要的。它将确保您的安全和隐私,因为如果您被发现,这些审查可能会产生不利后果。

增强的互联网隐私

在家里使用 WiFi 浏览互联网时,您可能会感到安全,但您的互联网服务提供商 (ISP) 可以查看和监控您的活动。您的数据连接仍然让您毫无防备。

有趣的是,政府和其他网站可以使用您的 IP 地址来监控您并收集大量有关您的信息。ISP 赚钱的主要方式之一是收集数据并将其发送给公关人员。在这种情况下,Node Unblocker 会介入以挽救局面。

您可以确定您正在匿名浏览互联网。Node Unblocker使您能够通过可靠的Node Unblocker关联浏览网页,而不是直接通过 ISP。

作为您和网站之间的屏障,它响应您的请求并控制网站的响应方式。然而,由于加密,您的 ISP 将无法看到您的在线操作,即使他们能够确定您正在使用Node Unblocker。


Node Unblocker的局限性

尽管 Node Unblocker 仍然是市场上设置最快、最简单的代理网络之一,但它也有局限性。绕过这些限制可能非常具有挑战性,更不用说您在使用自我管理代理时可能遇到的任何维护问题了。以下是您应该注意的一些 Node Unblocker 限制:

OAuth 问题

Facebook、Instagram、YouTube 和 Google 等当代网站使用的身份验证机制是 OAuth 登录表单。使用 OAuth 表单的网站不太可能通过 Node Unblocker 代理正常运行。简而言之,它涵盖了使用 postMessage() 方法的所有内容。

因此,Node Unblocker 会导致使用代理消息后数据的库失败。目前只有传统的登录表单和AJAX内容可以使用;也许,这个问题将来会得到解决。

无法在复杂的站点上工作

Node Unblocker 代理服务器还与 Twitter、Facebook、Google 和 Discord 等高级网站存在严重的兼容性问题。请求被拒绝,或者请求的内容的全部或部分可能不会出现。

此外,如果您尝试使用 TCP 连接,则不会有任何 TCP 连接。这些网站将立即终止连接或显示验证码。不过,我确信我们正在努力解决这些问题,以便您也可以从这些平台上抓取数据。

维护挑战

同样,即使您可以使用 Node Unblocker 来抓取网站,代理的数量及其持续维护也将是主要问题。代理服务器是复杂的服务,需要大量的工作来运行和维护。维护费用将会因此增加。

除此之外,您还需要完全管理代理实例并遵守云提供商策略。所有这些都会带来一个重大问题,特别是在管理相当大的代理池时。

Cloudflare 检测的问题

Cloudflare 检测也是 Node Unblocker 的一个问题。这主要归功于 Cloudflare 的免费检测服务,该服务始终处于活动状态。例如,在获得验证码提示后,Cloudflare 可以快速识别 YouTube 视频页面。

因此,绝大多数网站都使用 Cloudflare 的 CDN,这可能会导致您的请求被阻止。在不使用 CDN 服务器的网站上,我们之前解释过的 Node Unblocker 自定义中间件可以顺利运行。


关于Node Unblocker 的常见问题解答

问:Node Unblocker如何工作?

Node Unblocker 的工作原理是简单地创建可以取代原始 IP 地址的代理服务器。您的信息将被加密,这样即使您的 ISP 注意到您正在使用Node Unblocker,他们也无法监视您的在线活动。但为了让它正常工作,它需要一些依赖项。因此,请确保所有依赖项都存在。

问:使用 Node Unblocker 创建自己的代理池是否违法?

使用 Node Unblocker 生成您自己的代理池并不违法。但是,如果必须使用 Node Unblocker,则需要考虑两件事。首先,确保您熟悉将使用 Node Unblocker 代理应用程序的任何远程服务器的“可接受的使用策略”。另外,请确保您的目标网站不在 Node Unblocker 的雷达范围内。如果您已选中所有这些复选框,我们相信您可以使用 Node Unblocker。

问:Node Unblocker 可以在所有网站上运行吗?

简单的答案是否定的。Node Unblocker 代理服务器可用于各种网站,尽管它们在使用 postMessage() 方法、Cloudflare CDN 或 OAuth 登录表单的网站上表现不佳。在具有传统登录表单和 AJAX 内容的网站上,它的性能更好。因此,在使用 Node Unblocker 之前,请务必了解您的目标网站是什么类型的网站。


结    论

以上就是Node Unblocker 的概述以及如何使用它来创建您自己的代理网络。这些代理服务器可用于多种用途,网络抓取就是其中之一。

更好的是,您可以针对每个新请求轮换这些服务器,以便每个传入请求都通过不同的 IP 地址。因此,尽管它具有许多优点,但您也发现它有一些缺点。Node Unblocker 是一个很棒的工具,但请务必仔细考虑其他选项。

这篇文章有用吗?

点击星号为它评分!

平均评分 / 5. 投票数:

到目前为止还没有投票!成为第一位评论此文章。

No more articles