Лучший опыт

Вы ищете учебник по разрабо ... Как построить HTTP-прокси с помощью NodeJS

Как построить HTTP-прокси с помощью NodeJS...

Вы ищете учебник по разработке прокси-сервера с использованием платформы NodeJS? Тогда вы попали на нужную страницу, поскольку в статье ниже вы найдете пошаговое руководство о том, как это легко сделать.

Прокси-серверы известны тем, что обеспечивают пользователям Интернета безопасность и защиту от слежки и ограничений в Интернете на основе IP-адресов, маскируя ваш настоящий IP-адрес другим. Таковы основные принципы работы прокси-сервера, но некоторые из них обладают расширенными возможностями, такими как ротация IP-адресов, возможность сделать себя необнаруживаемыми и даже поддержка модификации заголовков HTTP, среди прочего. Технология может показаться некоторым людям чуждой, и они считают, что это не то, что они могут воспроизвести. В действительности, за исключением тех случаев, когда вы пытаетесь создать прокси-сервер для использования в производственной среде, его можно легко разработать. Это связано с тем, что рабочая модель может быть перенесена в большинство языков программирования без кодирования сотен страниц. В этой статье мы будем работать над использованием платформы NodeJS для разработки прокси-сервера, который может выступать в качестве посредника между клиентскими приложениями и веб-серверами в Интернете. Возможно, вам будет интересно узнать, что NodeJS является хорошей платформой для разработки прокси-серверов. Прежде чем продолжить, важно знать, что прокси-сервер, который вы разработаете с помощью этого руководства, не соответствует прокси-серверам, используемым в реальном использовании, поскольку он не включает меры безопасности, не является многопоточным и даже не обрабатывает исключения. Вы можете рассматривать его просто как доказательство концепции.

Обзор прокси-серверов

Прежде чем перейти к аспекту кодирования, важно понять концепцию прокси-серверов, поскольку это поможет вам лучше разобраться в их работе. Многие думают, что прокси-серверы — это просто инструмент для маскировки IP-адресов. Хотя обычные пользователи Интернета знают о прокси-серверах только с этой точки зрения, прокси-серверы — это нечто большее. Лучшее определение для прокси-серверов — это компьютерное программное и аппаратное обеспечение, которое действует как посредник между клиентскими компьютерами и веб-серверами в Интернете. Прокси-серверы не обязательно должны маскировать IP-адрес пользователя, и это видно на примере прозрачных прокси-серверов, созданных для наблюдения на рабочих местах или для фильтрации контента. Если вы можете разработать рабочее программное обеспечение, через которое запросы направляются на веб-серверы в Интернете, то у вас есть прокси-сервер. Многие прокси-серверы в Интернете используют специализированное программное обеспечение для прокси-серверов, и вам не придется изобретать велосипед. Вам также не придется изобретать колесо, поскольку существует программное обеспечение, которое можно использовать для создания и управления прокси-серверами. Однако не помешает, если у вас есть рабочие знания о том, как разрабатываются прокси-серверы.

Как работают прокси-серверы?

Прокси-сервер, который мы будем разрабатывать, будет иметь простой рабочий механизм. У него есть предопределенная цель, поскольку это пробный вариант. Все, что мы хотим доказать, это то, что ваши веб-запросы попадают на прокси-сервер. Итак, когда вы отправляете веб-запрос с включенным прокси, происходит то, что запросы проходят через прокси-сервер, который затем печатает что-то на консоли, прежде чем вернуть ответ вам в среду браузера. Для этого используется библиотека web socket. Вы должны знать, что код выполняется и управляется на одном компьютере, поэтому IP-адрес будет одинаковым. Если вам нужен другой IP-адрес, вам нужно разместить ваш скрипт прокси-сервера на другом компьютере, чтобы он действительно мог быть посредником, как известно прокси-серверы. Для скрипта, используемого в этой статье, IP-адрес остается неизменным, и поэтому вы должны рассматривать его скорее как доказательство концепции. Помните, самое главное, что ваши запросы попадают на скрипт прокси-сервера, прежде чем отправиться к цели, что является основой работы прокси-сервера.

Руководство по кодированию HTTP-прокси с использованием NodeJS

Для простейшего прокси-сервера вам не потребуется использовать множество библиотек и фреймворков. Фактически, для того, который мы будем разрабатывать, все, что вам нужно, это NodeJS и фреймворк Express. Вам потребуются библиотеки http и https, но они поставляются в комплекте при установке NodeJS.

Установка требований

  • NodeJS

NodeJS — это самый важный инструмент, который необходимо установить, прежде чем думать о разработке прокси-сервера с использованием Javascript. Для новичков NodeJS — это среда, в которой код Javascript запускается и выполняется вне среды браузера. Именно она изменила игру и приблизила Javascript к другим полноценным языкам, учитывая, что изначально он был разработан для работы в среде браузера. Ниже описано, как установить NodeJS.

Шаг 1: Посетите официальный сайт NodeJS и загрузите программу установки.

Шаг 2: Запустите программу установки и следуйте инструкциям. Программа установки проведет вас по всем этапам.

Шаг 3: Согласитесь с условиями и дождитесь завершения установки.

Шаг 4: Для некоторых компьютеров вам потребуется перезагрузить их, чтобы установка прошла успешно. На других компьютерах вы можете сразу начать использовать NodeJS.

Шаг 5: Введите приведенный ниже код в командной строке, чтобы подтвердить успешность установки.

узел -v

Приведенная выше команда выведет версию nodeJS на консоль, если она установлена, или выбросит исключение, если установка не была успешной. Попробуйте использовать приведенный ниже код, чтобы также проверить установку пакета nodeJS.

npm -v

  • ExpressJS

ExpressJS — это веб-фреймворк для разработки веб-приложений. Если вы хотите разработать настоящий прокси-сервер, вам необходимо, чтобы он был размещен на другом компьютере или сервере и, соответственно, был в виде веб-приложения. Ниже описаны шаги, необходимые для установки веб-фреймворка ExpressJS. Это следует делать только после установки nodeJS.

Шаг 1: Создайте новую папку и сделайте ее своим рабочим каталогом.

Шаг 2: Создайте файл package.json с помощью команды init

Шаг 3: Установите фреймворк ExpressJS с помощью приведенной ниже команды npm.

Пример кода для HTTP-прокси nodeJS

Ниже приведен пример кода для прокси-сервера HTTP. Код довольно простой и является лишь доказательством концепции. Код взят из StackOverflow.

/* eslint-disable @typescript-eslint/no-var-requires */

// https://stackoverflow.com/a/63602976/470749

const express = require(‘express’);

const app = express();

const https = require(‘https’);

const http = require(‘http’);

// const { response } = require(‘express’);

const targetUrl = process.env.TARGET_URL || ‘https://jsonplaceholder.typicode.com’; // Запустите localtunnel как `lt -s rscraper -p 8080 —print-requests`; затем посетите https://yourname.loca.lt/todos/1 .

const proxyServerPort = process.env.PROXY_SERVER_PORT || 8080;

// eslint-disable-next-line max-lines-per-function

app.use(‘/’, function (clientRequest, clientResponse) {

  const parsedHost = targetUrl.split(‘/’).splice(2).splice(0, 1).join(‘/’);

  Пусть parsedPort;

  Пусть parsedSSL;

  if (targetUrl.startsWith(‘https://’)) {

    parsedPort = 443;

    parsedSSL = https;

  } else if (targetUrl.startsWith(‘http://’)) {

    parsedPort = 80;

    parsedSSL = http;

  }

  const options = {

    hostname: parsedHost,

    порт: parsedPort,

    путь: clientRequest.url,

    метод: clientRequest.method,

    заголовки: {

      ‘User-Agent’: clientRequest.headers[‘user-agent’],

    },

  };

  const serverRequest = parsedSSL.request(options, function (serverResponse) {

    let body = »;

    if (String(serverResponse.headers[‘content-type’]).indexOf(‘text/html’) !== -1) {

      serverResponse.on(‘data’, function (chunk) {

        body += chunk;

      });

      serverResponse.on(‘end’, function () {

        // Вносите изменения в HTML-файлы, когда они будут прочитаны.

        // body = body.replace(`example`, `Cat!`);

        clientResponse.writeHead(serverResponse.statusCode, serverResponse.headers);

        clientResponse.end(body);

      });

    } else {

      serverResponse.pipe(clientResponse, {

        конец: истина,

      });

      clientResponse.contentType(serverResponse.headers[‘content-type’]);

    }

  });

  serverRequest.end();

});

app.listen(proxyServerPort);

console.log(`Proxy server listening on port ${proxyServerPort}`);

Часто задаваемые вопросы

Q. Должны ли вы сами разрабатывать прокси-сервер? Вы можете спросить, стоит ли вам разрабатывать прокси-сервер самостоятельно или использовать уже готовый. Правильный ответ на этот вопрос — использовать прокси-сервер от надежного поставщика. Это связано с тем, что вы будете изобретать колесо и при этом тратить больше денег. Также важно знать, что для настройки прокси-серверов вам потребуются определенные навыки и обслуживание, что в конечном итоге не будет стоить того. Если у вас нет веских причин для разработки прокси-сервера для личного пользования, вам следует сделать это самостоятельно, поскольку существуют надежные провайдеры с высококачественными прокси.

Q. Как лучше всего разрабатывать прокси-серверы? Если вы должны разрабатывать прокси-серверы самостоятельно, то лучше всего использовать инфраструктуру и прокси-программы, которые были проверены и надежны в течение многих лет. Хотя вы можете написать прокси-скрипт самостоятельно, он не будет достаточно эффективным в производственной среде. Существуют прокси-программы, такие как squid proxy server, которые вы можете использовать, чтобы упростить настройку прокси, а не кодировать прокси-программу с нуля. Преимущества использования уже готовых прокси-программ включают лучшую производительность, отличную безопасность и надежность. Вы также экономите время и деньги на кодирование.

Заключение

Глядя на вышесказанное, можно заметить, что мы не советуем нашим читателям изобретать велосипед. Вы можете узнать, как разработать прокси-сервер, чтобы изучить его принципы и понять, как он работает. Однако дешевле и эффективнее для вас будет, если вы воспользуетесь прокси-серверами от проверенных провайдеров, так как это сэкономит ваше время и деньги, обеспечив при этом лучшую производительность.