Использование приложений Flash / SWF для получения «реального» IP-адреса пользователя - PullRequest
0 голосов
/ 28 июня 2010

Я почти уверен, что это возможно, но я не уверен, как это сделать.

Основная идея: пользователь посещает веб-сайт с использованием прокси HTTP / socks.На сайт внедряется скрытый файл .swf, который при загрузке клиентом отправляет данные обратно на веб-сервер, что позволяет регистрировать IP-адрес вместе с соответствующим идентификатором сеанса, который связывает IP-адрес прокси и истинныйIP вместе.

Мой вопрос: как мне сделать это во флэш-памяти?Я искал примеры, но все, что мне удалось найти по этому вопросу, - это люди, утверждающие, что это возможно.

Ответы [ 3 ]

0 голосов
/ 29 июня 2010

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

Пример InetAddress

Edit:

Большинство подключений осуществляется от клиента к шлюзу (к n прокси) к сервису.

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

(ME:192.168.0.40 -> {GATEWAY:192.168.0.1) [EXT.IP:56.43.22.8} -> YOU:87.53.57.27]

Если вам нужно однозначно идентифицировать клиентов по IP, приблизительно , тогда вам нужен EXT ernal IP . Если у вашего клиента было прямое соединение, то, скажем, только через маршрутизатор, ваш сервер узнал бы этот адрес при подключении. У Flash Player нет логической причины знать ваш внешний IP, не говоря уже о том, чтобы выставлять его через API, потому что он не может связывать сокеты слушателя.

При использовании HTTP-прокси ближайший (и наиболее уникальный) внешний IP-адрес клиента неизвестен серверу, поскольку серверы видят только последний прокси в цепочке. Кроме того, для чего предназначен прокси-сервер, который может предоставлять адреса своих клиентов - при этом прокси-сервер будет отображаться как спорный.

Так что насчёт Flash Player и P2P? Опять нет сигары;

Все это происходит в собственном коде, в частях виртуальной машины, невидимой для песочницы, в которой выполняется ваш код. Даже если бы вы могли получить к ней доступ, было бы совершенно бесполезно, если бы ваши клиенты подключались через прокси - клиент знает только первый переход и пункт назначения, которые могут быть недоступны без прокси x - и сервер знает только о клиенте y , который может быть или не быть действительным клиентом или последним прокси в цепочке n прокси ...

уточнить:

  • снаружи, единственная причина узнать адрес клиента - это подключиться к нему
  • внутри, единственная причина узнать ваш внешний адрес - это открыть порт для других, чтобы инициировать соединения с вами
  • серверы видят только последнюю ссылку в цепочке, им нужно сообщить что-нибудь еще, например, к какому назначению установить клиентское соединение, но ...
  • Flash не может открывать сокеты слушателей, поэтому ему никогда не нужно будет знать, кто он снаружи ...
  • и даже если бы это случилось однажды, вам не повезло, потому что клиент, использующий HTTP-прокси, вероятно, недоступен, иначе зачем беспокоиться о прокси?

Если вся причина в желании IP-адресов заключается в уникальной идентификации клиентов? Сгенерируйте GUID и сохраните его с SharedObject - я знаю, что мог бы сказать это раньше, ха

0 голосов
/ 12 апреля 2013

Вы правы, это возможно, и я сделал это с помощью Flash p2p API. Swf-приложение отправляет сообщение на сервер после того, как клиент открыл страницу. P2P доступен во Flash как протокол RTMFP и может использоваться, например, с https://github.com/randunel/ArcusNode (см. Также https://github.com/OpenRTMFP). Так, на сервере вы должны подождать сообщение и записать удаленный IP после него.

0 голосов
/ 28 июня 2010

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

...