Как показать пользователю его реальный IP-адрес (за прокси) - PullRequest
2 голосов
/ 21 ноября 2011

Я использую Ruby on Rails в качестве серверной инфраструктуры, но я уверен, что решение кроссплатформенное.

Я хочу показать пользователю его реальный IP-адрес.Приложение развернуто в корпоративной сети.Большинство пользователей подключаются к приложению простым способом без прокси, NAT и т. Д. Но некоторые из них используют прокси.

Теперь они видят IP-адрес прокси-сервера.

Каков наилучший способпоказать им их реальный IP-адрес?

Как я мог видеть, это невозможно, используя только методы обслуживания.Таким образом, решение должно быть чем-то, использующим JS (почти все пользователи включают JS), Flash (около 80% пользователей используют его) или JAVA (около 50%).Было бы замечательно, если бы решение было плагином rails, но это не так важно.

UPD. К сожалению, заголовок X-Forwarded-For не содержит интересной информации.

UPD2. Я хочу показать IP локальной сети (например, 192.168 ..).

UPD3. Почти все клиентские браузеры являются Internet Explorer (7,8,6версии)

Ответы [ 2 ]

2 голосов
/ 21 ноября 2011

Это проблема интереса, но я иду к носителю плохих новостей. Неважно, какую платформу или код вы используете, вы никогда не получите решение, работающее на 100%.

Позвольте мне объяснить, Некоторые прокси-серверы перенаправляют ip отправителя в заголовок (обычно это x-forwarded-for). Это не 100%.

Javascript на стороне клиента МОЖЕТ (в ожидании ограничений безопасности) предоставить вам ip клиента, однако это может быть ip локальной сети (например, 192.168. . )

UPD: пожалуйста, смотрите мои комментарии ниже для описания решения javascript, которое будет работать, если все пользователи находятся в корпоративной сети.

0 голосов
/ 01 декабря 2011

Вы можете использовать node.js в качестве сервера веб-сокетов, а на клиентской стороне есть приложение веб-сокета javascript.

После подключения вы можете прочитать IP-адрес, который будет доступен для Ruby (через файловую систему api иличто-то еще).

Вот простое приложение журнала ошибок, которое имеет хороший пример сервера Websocket, использующего node.js: http://gonzalo123.wordpress.com/2011/05/09/real-time-monitoring-php-applications-with-websockets-and-node-js/

Что касается взаимодействия веб-сокетов с прокси,поиск Я узнал, что защита веб-сокета с помощью SSL позволит вам обходить прокси.(Ссылка: http://showmetheco.de/articles/2011/2/diving-into-html5-with-websockets-and-perl.html)

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

Кстати, Websockets - это функция HTML5, поэтому вашей корпорации может потребоваться обновить все браузеры ^^.

...