Трудно определить аудиторию для кого эта статья. Профессионалы работы в Linux системах наверное просто засмеют, а кто вообще ничего не слышал про Linux возможно вообще ничего не поймет.
Я ее пишу для тех кто немного слышал про Linux и уже знает что такое виртуальный сервер но знаний пока не хватает. А еще возможно как памятку для себя.
На написание статьи меня натолкнула одна проблема, я запустил на своем сервере скрипт который должен был мне собрать данные с одного ресурса. И возникла проблема что IP адрес моего сервера был заблокирован, надеюсь что провайдер сменит мне выделенный IP.
И что бы не сталкиваться с проблемой блокировки выделенного IP адреса и походами к провайдеру с просьбой сменить IP, я решил создать личный прокси для запросов и главное что бы это было недорого.

Есть конечно решение проблемы, а именно использование VPN на сервере. Но тут есть проблема, на сервере работают несколько служб на разных портах и все висят на доменном имени привязанному к IP, а при запуске VPN все службы будут недоступны, а это недопустимо. Лучшем решением стала аренда виртуального сервера (VDS), но проблемой стало то, что многие хостеры в нагрузку добавляют панель управления сервером и конечно не бесплатно.

Ну и ближе к теме, мы не будем платить за панели администрирования, покупаем самый дешевый VDS с выделенным IP, у меня на это ушло примерно 240 рублей за месяц использования в зоне RU и чуть дороже в USA. Характеристики железа VDS слабенькие, но для запуска одного единственного PHP скрипта для анонимизации своих запросов вполне достаточно.

Купив такой виртуальный сервер вам будет выдан только IP адрес и данные для подключения по SSH. Да кстати, что такое SSH вы уже должны знать. Для подключения по SSH я рекомендую Snowflake, очень удобная и функциональная программа, но это лично мое мнение.

Ну и собственно пошаговый рецепт как запустить свой WEB сервер.

Первое что я устанавливаю это среду Miniconda Это просто. В терминале выполняем команду

wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh

Далее запускаем загруженный скрипт командой в терминале

bash Miniconda3-latest-Linux-x86_64.sh

И отвечаем на все вопросы которые, там будет спрашивать "yes" и нажатие на ENTER везде пишем yes и нажимаем Enter, после завершения установки закройте терминал и заново его откройте. Вы должны быть в среде (base)

Далее установим Apache для того что бы ваш сервер стал доступен в браузере
В терминале пишем:

sudo apt install apache2 -y
sudo systemctl start apache2
sudo systemctl enable apache2

После этого, открыв браузер и введя выданный вам IP адрес вы увидите то что ваш сервер отвечает.

Теперь устанавливаем панель управления сервером WEBMIN (это бесплатная замена платным)
Создаем среду окружения conda, для этого в терминале пишем
conda create --name webmin
Везде отвечаем "a" и "y", После запускаем эту среду
conda activate webmin

curl -o webmin-setup-repo.sh https://raw.githubusercontent.com/webmin/webmin/master/webmin-setup-repo.sh
sudo sh webmin-setup-repo.sh

При завершении получаем предупреждение:
Webmin and Usermin can be installed with:
apt-get install --install-recommends webmin usermin


И в терминале выполняем команду
apt-get install --install-recommends webmin usermin
Ну и естественно на все вопросы отвечаем "y"

Далее, в браузере запускаете <Ваш IP>:10000, авторизируетесь с теми данными что выдал вам хостер и вы в панели управления своим виртуальным сервером.

Сначала в webmin запускаем установку PHP

А потом в терминале выполняете вот эту команду

sudo apt install php libapache2-mod-php php-mysql
Везде отвечаем "y"

Теперь у вас запущен WEB сервер на вашем IP от хостера с PHP, MySQL и бесплатной панелью управления
Но вам нужно еще установить curl для PHP, запускаем в терминале
sudo apt install php-curl

На этом этапе настройка web сервера закончена, теперь он умеет не только отдавать HTML страницы, но и выполнять PHP скрипты.

И вот простейший скрипт для анонимизации своих запросов на PHP.

<?php
/**
 * fetch.php – простейший прокси‑скрипт.
 *
 * Принимает GET‑параметр `url` (полный URL) и,
 * при необходимости, POST‑данные `post_data`.
 * Делает запрос к переданному URL от IP вашего PHP‑сервера
 * и возвращает полученный ответ клиенту.
 *
 * Пример вызова:
 *   https://MY_IP/fetch.php?url=https://testforum.ru/topic/12345/
 *
 * Если нужен POST:
 *  https://MY_IP/fetch.php?url=https://testforum.ru/topic/12345/&method=POST&post_data=field1=value1&field2=value2
 */

header('Content-Type: text/plain; charset=utf-8');

// ----- параметры -----
$url   = $_GET['url'] ?? '';
$method = strtoupper($_GET['method'] ?? 'GET');
$post_data_raw = $_GET['post_data'] ?? '';

// Простейшая валидация: URL обязателен
if (empty($url)) {
    http_response_code(400);
    echo "Missing URL parameter.";
    exit;
}

// Формируем массив POST‑данных, если передано
$post_fields = [];
if (!empty($post_data_raw)) {
    parse_str($post_data_raw, $post_fields);
}

// ----- cURL запрос -----
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
curl_setopt($ch, CURLOPT_TIMEOUT, 15);            // таймаут 15 сек
curl_setopt($ch, CURLOPT_USERAGENT,
    'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/124.0 Safari/537.36');

// Если нужен POST
if ($method === 'POST') {
    curl_setopt($ch, CURLOPT_POST, true);
    curl_setopt($ch, CURLOPT_POSTFIELDS, $post_fields);
}

// Выполняем запрос
$response = curl_exec($ch);
$http_code = curl_getinfo($ch, CURLINFO_HTTP_CODE);
$curl_err  = curl_error($ch);
curl_close($ch);

if ($response === false) {
    http_response_code(502);
    echo "cURL error: $curl_err";
    exit;
}

// Передаём статус‑код от оригинального сайта и тело ответа
http_response_code($http_code);
echo $response;
?>

Этот скрипт нужно положить в папку которая обычно такая /var/www/html/

Загрузить скрипт вы можете через Web панель управления созданным сервером.

А так же через WEBMIN вы сможете настроить на своем в��ртуальном сервере FTP, пользователей, домены, но это уже тема отдельной статьи.

Теперь, вы можете безопасно для своего реального IP адреса получать данные к нужных вам ресурсам, не боясь блокировки реального IP.

PS. Статья носит ознакомительный характер и не призывает к незаконным действиям в сети.

nhlj

Only registered users can participate in poll. Log in, please.
Вам помогло это руководство
22.5%Да9
77.5%Нет31
40 users voted. 12 users abstained.