У меня есть испанский сайт, и я не позволяю людям из неевропейских стран зарегистрироваться и войти в систему.
Некоторое время назад я начал получать сообщения от пользователей, которые не могут войти. Когда я спрашиваю их IP-адрес, они говорят что-то вроде: 66.249.93.202. Это IP-адрес Google. Как они получают это в своих мобильных телефонах? Что они должны сделать, чтобы использовать свой реальный IP-адрес?
networking
ip
user1406271
источник
источник
Ответы:
То, что вы видите, это адрес прокси Google.
Мобильные пользователи с браузером Chrome (Android или iOS), у которого включены функции управления полосой пропускания, часто рассматриваются как использующие один из этих адресов в качестве инициатора запроса, как описано здесь .
По сути данные, которые вы обслуживаете, запрашиваются прокси-сервером сжатия данных Google
optimized
и отправляются обратно конечному пользователю.Они не должны делать что-то по-другому.
Вы можете проверить
x-forwarded-for
заголовок, как описано в ранее связанной документации.источник
Вероятно, они используют Google прокси сжатия данных ( https://developer.chrome.com/multidevice/data-compression ).
И чтобы ответить на ваш вопрос (с той же страницы):
источник
Вы можете получить IP-адрес пользователя напрямую, если вы просто обслуживаете сайт по HTTPS .
Вы, вероятно, должны делать это в любом случае - тем более, что вы упомянули, что это страницы входа и регистрации.
Цитирование со страницы прокси сжатия данных, упомянутой в других ответах:
источник
Возможно, эти пользователи используют Chrome (мобильный) с прокси сжатия данных ( https://developer.chrome.com/multidevice/data-compression )
Вы можете использовать
X-Forwarded-For
HTTP-заголовок для определения местоположения пользователя на основе исходного IP-адреса пользователя (см. FAQ)источник
X-Forwarded-For
Заголовок может быть легко подделать, так что это не безопасно полагаться на этот заголовок.У меня та же проблема. Но я не получил настоящий IP, у
X-Forwarded-For
меня включена функция сохранения данных, но индекс X-Forwarded-For не установлен для информации заголовка. Также я проверил HTTP_X_REAL_IP индекс. Это также установлено с IP-адресом Google.Наконец я нашел правильный IP в
HTTP_FORWARDED
значении индекса какfor=203.192.231.124
echo $_SERVER['HTTP_FORWARDED']
Так что просто удалите текст
for=
из значения, и вы получите IP.$ip = str_replace('for=','', $_SERVER['HTTP_FORWARDED']);
источник