Скрипт, который подключается к нескольким веб-сайтам одновременно.CURL и PHP попробовал. - PullRequest
3 голосов
/ 16 марта 2012

Я управляю компьютерной лабораторией для школьников (3–14 лет) и хотел бы создать страницу рабочего стола / панели инструментов, состоящую из нескольких фреймов, каждый из которых указывает на отдельный внешний веб-сайт (для которого мы создали отдельные учетные записи длякаждый ребенок);и когда ребенок входит в систему (на панель инструментов), сценарий регистрирует ее на этих веб-сайтах, поэтому она не должна этого делать.

У меня есть 1 сервер и 20 рабочих станций, я буду называть их «myserver» и «mybrowser» соответственно.Все это за одним и тем же маршрутизатором (динамический IP).

Ребенок попадает на рабочую станцию ​​«mybrowser», запускает Firefox и запускает desktop.php (размещенный на «myserver») и получает экран входа (для «myserver ')

' mybrowser '--- http --->' myserver '

После входа в систему myserver извлечет набор имени пользователя и пароля, хранящихся в его базе данных, и запустится.CURL-скрипт для отправки их на «внешний веб-сервер».

«mybrowser» --- http ---> «myserver» --- curl ---> «внешний веб-сервер»

УСПЕШНО, хорошо, подумал я.Оказывается, CURL, будучи запущенным из «myserver», регистрируется в «myserver» вместо «mybrowser».Сессия внутри iframe, после обновления, все еще НЕ вошла в систему. Теперь я знаю.

Затем я подумал о том, чтобы захватить куки с «myserver» и установить его в «mybrowser», чтобы «mybrowser» теперь могпросматривать (в пределах iframe) как зарегистрированный пользователь.В конце концов, мы (все «mybrowsers») имеем тот же маршрутизатор, что и «myserver», то есть один и тот же IP-адрес.

Другими словами, мне нужен только «myserver» для входа пользователя на несколько внешних веб-сайтов одновременно, а после того, как это сделано, передать управление браузерам отдельных пользователей.

Я надеюсь, что ответ не прибегнет к использованию CURL для отображения и управления внешними веб-сайтами в течение всего сеанса, за исключением того, что это перетаскивание, которое приведет к некоторым другим неприятным проблемам.

Я получаю нюанс, что этоне разрешено из-за проблем безопасности, но что если все «mybrowsers» и «myserver» находятся за одним и тем же маршрутизатором?Если предположить, что есть способ скопировать файлы cookie для входа в систему с «myserver» на «mybrowsers», узнает ли «внешний веб-сервер», что запрос поступил с разных компьютеров?

Можно ли это сделать?Спасибо.

1 Ответ

0 голосов
/ 16 марта 2012

Проблема, с которой вы сталкиваетесь, связана с принципами безопасности файлов cookie. Вы не можете установить куки для других доменов, что означает, что myserver не может установить куки для facebook.com, например.

Вы можете настроить свой сервер для запуска HTTP-прокси и сделать так, чтобы все запросы выполнялись через ваш сервер и выполняли какой-то перевод URL (например, facebook.com => facebook.myserver), который затем, в свою очередь, позволяет вам установить куки для клиентов (так как вы работаете на facebook.myserver), а затем преобразует куки, которые вы получаете от клиентов, и передает их на сторонние веб-сайты.

Пример непрозрачного прокси, с которого вы могли бы начать: http://www.phpmyproxy.com/

Прозрачные прокси (в которых URL остаются "правильными" / непереведенными) тоже стоит рассмотреть. Кальмар довольно популярен. Хотя не могу сказать, насколько это легко.

После всего этого вам все равно нужно будет создать локальный скрипт для myserver, который позаботится о процессе входа в систему, но по крайней мере прокси должен сделать все это возможным.

Если у вас есть какое-либо мнение в самом процессе входа в систему, может быть проще настроить все службы для использования OpenID или аналогичных служб входа, поскольку StackOverflow и его дочерние сайты являются ярким примером того, как можно легко войти на несколько сайтов. достигнута.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...