PHP Proxy – базовое объяснение

Как работает PHP-прокси?

Я хочу создать небольшой скрипт, похожий на другие php-прокси

Но как это работает?

Я думаю о прокси-сервере PHP, привыкшем обходить политику AJAX Sane Origin. Если вам нужен настоящий HTTP-прокси, процесс намного сложнее.

Простейший псевдокод:

  • получить URL-адрес от запроса (например, от $_POST['url'] )
  • отклонять недействительные URL-адреса (например, не делать запросы на localhost (или в вашей частной подсети, если у вас несколько серверов))
  • (необязательно) проверьте кеш скрипта, верните кешированный ответ, если применимо
  • запрашивать целевой URL, например, cURL
  • (необязательно), если применимо
  • ответ возврата

Примечание. В этой простейшей форме вы разрешаете любому пользователю получать доступ к любому URL-адресу в Интернете через ваш PHP-прокси; должен быть реализован некоторый контроль доступа (например, только зарегистрированные пользователи, в зависимости от того, для чего вы используете прокси-сервер).

Это больше, чем вы думаете. Просто вызвать удаленную веб-страницу и отобразить ее содержимое недостаточно (это будет readfile('http://google.com') в простейшем случае), вы должны переписать URL-адреса в html-документе, чтобы указать на свой собственный прокси-сервер, вы должны иметь возможность обрабатывать https (или вы разрешаете обычный доступ к конфиденциальным данным, если целевой странице нужны https) и многие другие (которые частично были скомпилированы в RFC 3143 ).

Может быть, у mod_proxy у Apache есть все, что вам нужно, но если вы действительно хотите написать их самостоятельно, изучение исходного кода других проектов (например, php-proxy ) может дать вам больше информации об этом.