Tenho um site em espanhol e não permito que pessoas de países não europeus se registrem e façam login.
Há algum tempo comecei a receber mensagens de usuários que não conseguem fazer login. Quando peço o endereço IP, eles dizem algo como: 66.249.93.202. É o endereço IP do Google. Como eles obtê-lo em seus telefones móveis? O que eles precisam fazer para usar seu endereço IP real?
O que você está vendo é o endereço de proxy do Google.
Os usuários móveis com um navegador Chrome (Android ou iOS) com os recursos de gerenciamento de largura de banda ativados geralmente usam um desses endereços como o solicitante, conforme descrito aqui .
Em essência, os dados que você está servindo estão sendo solicitados pelo Google Data Compression Proxy
optimized
e enviados de volta ao usuário final.Eles não deveriam estar fazendo nada diferente.
Você pode verificar o
x-forwarded-for
cabeçalho conforme explicado na documentação vinculada anteriormente.Provavelmente eles estão usando o proxy de compactação de dados do Google ( https://developer.chrome.com/multidevice/data-compression ).
E para responder à sua pergunta (da mesma página):
Você pode obter o endereço IP do usuário diretamente se simplesmente fornecer o site por HTTPS .
Você provavelmente deveria estar fazendo isso de qualquer maneira - especialmente porque você mencionou que essas são páginas de login e registro.
Citando a página Proxy de compactação de dados mencionada em outras respostas:
Talvez esses usuários usem o Chrome (móvel) com proxy de compactação de dados ( https://developer.chrome.com/multidevice/data-compression )
Você pode usar
X-Forwarded-For
o cabeçalho HTTP para localizar geograficamente o usuário com base no IP do usuário original (consulte as perguntas frequentes)Eu tenho o mesmo problema. Mas não obtive IP real em
X-Forwarded-For
Tenho a proteção de dados ativada, mas o índice X-Forwarded-For não está definido nas informações do cabeçalho. Também verifiquei o índice HTTP_X_REAL_IP. Também é definido com o endereço IP do Google.Finalmente encontrei o IP correto no
HTTP_FORWARDED
valor do índice comofor=203.192.231.124
echo $_SERVER['HTTP_FORWARDED']
Portanto, apenas remova o texto
for=
do valor e você obterá o IP.$ip = str_replace('for=','', $_SERVER['HTTP_FORWARDED']);