Как написать простой прозрачный прокси PHP?

Мне нужно сделать прокси-скрипт, который может получить доступ к странице, скрытой за экраном входа. Мне не нужен прокси-сервер для «имитации» входа в систему, вместо этого HTML-страница входа в систему должна отображаться пользователю обычно, а все файлы cookie и HTTP GET / POST передаются через прокси-сервер на сервер, поэтому логин должен быть аутентичный.

Мне не нужен логин / пароль, мне нужен только доступ к исходному коду HTML страниц, сгенерированных после входа в систему.

Кто-нибудь знает, как это можно сделать? Это легко?

Если нет, с чего начать? * (В настоящее время я использую PHP) *

Related of "Как написать простой прозрачный прокси PHP?"

То, о чем вы говорите, – это доступ к страницам, для которых вам необходимо пройти аутентификацию.

Вот несколько вещей, которые должны быть установлены:

  • вы не можете просматривать эти страницы без проверки подлинности.
  • если веб-сайт (HTML-код которого вы хотите увидеть) поддерживает только вход в систему в качестве метода проверки подлинности, вам нужно будет имитировать логин, отправив (имя пользователя, пароль) через POST / GET, в зависимости от обстоятельств
  • если веб-сайт позволит вам аутентифицировать себя другими способами (например, LDAP, Kerberos и т. д.), тогда вы должны сделать это

Ключевым моментом является то, что вы не можете получить доступ, не подтверждая себя сначала.

Что касается языка, то это довольно удобно в PHP. И, как указывают теги на вопросе, вы используете правильные инструменты для выполнения этой работы.

Одна вещь, которую я хотел бы знать, – почему вы называете ее «прокси»? хотите ли вы показывать контент другим пользователям?

EDIT: [обновление после комментария]

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

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

Вы не сможете поймать все запросы JavaScript (если вы не внедрили часть JavaScript вашего «прокси»)

Например: типы пользователей http://example.com/login.php в вашу прокси-форму.

отправьте пользователя на сайт http://yoursite.com/proxy.php?url=http://example.com/login.php

убедитесь, что urlencode параметр " http://example.com/login.php "

В http://yoursite.com/proxy.php вы делаете HTTP-запрос на http://example.com/login.php

$url = $_REQUEST['url']; // make sure we have a valid URL and not file path if (!preg_match("`https?\://`i", $url)) { die('Not a URL'); } // make the HTTP request to the requested URL $content = file_get_contents($url); // parse all links and forms actions and redirect back to this script $content = preg_replace("/some-smart-regex-here/i", "$1 or $2 smart replaces", $content); echo $content; 

Обратите внимание, что / some-smart-regex-here / i на самом деле является выражением регулярного выражения, которое вы должны писать для разбора ссылок и т. Д.

Пример просто проксирует тело HTTP, вы можете проксировать HTTP-заголовки. Вы можете использовать функции fsockopen () или PHP-потока в PHP5 + (stream_socket_client () и т. Д.)

Вы можете проверить http://code.google.com/p/php-transparent-proxy/ , я сделал это, потому что я задавал себе тот же самый вопрос, и я решил его создать. Это под лицензией BSD, так что получайте удовольствие 🙂

Я бы рекомендовал использовать Curl (php-библиотеку, которую вам нужно активировать в php.ini). Он используется для управления удаленными веб-сайтами, обработки файлов cookie и всех необходимых параметров http. Вам нужно будет написать свой прокси-сервер на основе веб-страниц, которые вы нажимаете, но это сработает.