delphi | Как реализовать "ретранслятор" запросов через сокеты?

Discussion in 'С/С++, C#, Rust, Swift, Go, Java, Perl, Ruby' started by Bonkеrs, 9 Oct 2021.

  1. Bonkеrs

    Bonkеrs Member

    Joined:
    5 Feb 2014
    Messages:
    36
    Likes Received:
    16
    Reputations:
    3
    Задача такова. Хочу написать вебсервер-анонимайзер, который при обращении к нему ретранслирует запросы (через прокси) и возвращает полученный результат:

    1) программа висит на каком-нибудь порту (например 888) в режиме сервера (принимает запросы);
    2) пользователь в браузере заходит на адрес http://localhost:888/ (т.е. браузер посылает запрос в программу);
    3) программа получила запрос от браузера, и отправила его на сайт (например htmlbook.ru) через прокси, поменяв в запросе строчку "Host: localhost:888" на "Host: htmlbook.ru";
    4) дождавшись ответа от htmlbook.ru, программа в точности передает его браузеру.

    Т.е. получается, что пишешь в браузере http://localhost:888 и тебе открывается сайт htmlbook.ru, причем запрос от нашего сервера на htmlbook должен быть через прокси.

    Нет ли технических ограничений, чтобы реализовать такое чудо? Подскажите как организовать алгоритм, какие компоненты использовать.

    За пример реализации готов заплатить.
     
    #1 Bonkеrs, 9 Oct 2021
    Last edited: 9 Oct 2021
  2. Раrаdох

    Раrаdох Elder - Старейшина

    Joined:
    30 Jan 2014
    Messages:
    88
    Likes Received:
    128
    Reputations:
    33
    Технических ограничений на это нет — хедер Host можно легко изменить (по меньшей мере, потому что это прикладной уровень по модели OSI). Даже при использовании шифрования через HTTPS эта информация передается как plain text и тому есть причины.
    Но почему бы вам не реализовать/использовать прокси-сервер в общем виде (т.е. реализуя/используя протокол вроде SOCKS)?
     
    #2 Раrаdох, 14 Nov 2021
    Last edited: 14 Nov 2021
Loading...