Трудно определить аудиторию для кого эта статья. Профессионалы работы в 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.
Вам помогло это руководство
23.08%Да9
76.92%Нет30
39 users voted. 11 users abstained.