ugrás a tartalomhoz

Kliens valódi IP címe proxy mögül

quasimidi · 2003. Nov. 20. (Cs), 14.53
Hali,

Szeretném ha adnátok tippet: hogyan lehet egy böngésző IP címét belerakni egy form-ba, ha a szerver a DMZ-ben van és firewall van közben? Sajna mindig a belső IP-t rakja bele. PHP Manual kukacot sem ért ezzel kapcsolatban.

Esetleges megoldás PHP/JS érdekelne.

Q
 
5

Kérdésem ugyanez. Esetleg

kovikti · 2005. Ápr. 2. (Szo), 15.16
Kérdésem ugyanez. Esetleg azóta valaki rájött hogy lehet?
Én mindig csak 127.0.0.1-et kapok (localhost) amikor $_SERVER['REMOTE_ADDR']-t és társait kérdezem le.
Pl. a statcounter.com pontosan meg tudja adni az ip címemet, isp-t, mindent. Ország, város...
Hogy lehet ilyet csinálni?
Mellesleg adsl-es vagyok...

Köszi!
6

HTTP_X_FORWARDED_FOR és HTTP_CLIENT_IP

Hojtsy Gábor · 2005. Ápr. 2. (Szo), 19.47
Vannak ilyen fejlécek, amikben megkapod esetleg a kliens valódi IP-jét, legalábbis a mezei proxyk továbbküldik (az anonimájzerek nem). Lásd az i2c_realip() függvény megvalósítását a php.net forráskódjából.
7

megoldas?

Anonymous · 2005. Ápr. 3. (V), 13.30
Nem tudom, hogy ez e a megoldas de azert leirom:

http://www.showmyip.com/

Elobb kiprobaltam proxy mogul és ugyanazt az eredményt adta mintha az nelkul ment volna.

Az oldal XML kimenetet is ad:

http://xml.showmyip.com/

Ezenkivul meg sokfajta kimenet van ami az oldal alján található;


adriankoooo
8

Hm.. Ez nagyon jó. Be lehet

kovikti · 2005. Ápr. 3. (V), 15.49
Hm.. Ez nagyon jó. Be lehet valahogy az eredményt mySQL adatbázisba rakni (mármint, hogy a php rakja be!).

Sok keresgélés után találtam egy ilyet:

<?php
function getip() {
if (isSet($_SERVER)) {
 if (isSet($_SERVER["HTTP_X_FORWARDED_FOR"])) {
  $realip = $_SERVER["HTTP_X_FORWARDED_FOR"];
 } elseif (isSet($_SERVER["HTTP_CLIENT_IP"])) {
  $realip = $_SERVER["HTTP_CLIENT_IP"];
 } else {
  $realip = $_SERVER["REMOTE_ADDR"];
 }

} else {
 if ( getenv( 'HTTP_X_FORWARDED_FOR' ) ) {
  $realip = getenv( 'HTTP_X_FORWARDED_FOR' );
 } elseif ( getenv( 'HTTP_CLIENT_IP' ) ) {
  $realip = getenv( 'HTTP_CLIENT_IP' );
 } else {
  $realip = getenv( 'REMOTE_ADDR' );
 }
}
return $realip;
}
?>
Ez nekem jól adta vissza az ip-t.
Nézegettem olyat is, hogy hogyan lehet megállapítani a várost, isp-t, ilyeneket ip alapján. GeoIP, ip2location - mind jó sok pénzbe kerül. Van esetleg valamilyen hasonló, de ingyenes kezdeményezés? Tud valaki ilyenről?
Köszi!
9

ha olvastad

Anonymous · 2005. Ápr. 3. (V), 16.14
szeva ha elmentel volna arra az oldalra amit irtam akkor...

Get your IP Address geographic location information at geo.showmyip.com.
Get your IP Address information in XML format at xml.showmyip.com showmyip.com XML
Get your IP Address number in VoiceXML (text-to-speech) format at voicexml.showmyip.com.
Get your IP Address (in text format) at simple.showmyip.com.
Get your IP Address information using our SOAP interface at soap.showmyip.com.
Lookup IP Address information using our SOAP interface at soaplookup.showmyip.com.
Get your IP Address information using our RSS feed at rss.showmyip.com showmyip.com RSS feed
-+-+-+-+-+--+-+-+-+-+-+-+-+-+-+--+-+-+-+-+-+-+-+

Ebbol arra kovetkeztetek hogy neked az elso kell...


adriankoooo
10

adtam linket :)

Hojtsy Gábor · 2005. Ápr. 3. (V), 17.43
A HTTP_X_FORWARDED_FOR nem feltétlenül egy IP cím lesz, lehet több is, ha több átjárón ment át a kérés. Lásd a php.net forráskód linkjét, amit fent adtam.
11

Nekem is jó, köszi

tiny · 2005. Ápr. 3. (V), 22.05
Nekem is jó, köszi szépen
Mr.Tiny :: MRT Site
12

Re.:

Ronyn · 2007. Aug. 22. (Sze), 20.26
Hali))
Letöltöttem a real_ip függvényt a fent irt cimről,de egy részét nem egészen értem,konkrétan hogy miért is kel kizárni azokat az ip cimeket amire illik az adott regexp...
Remélem valaki megosztja velem,lehet csak valamit elnéztem...

if(!empty($_SERVER["HTTP_CLIENT_IP"])){
$ip=$_SERVER["HTTP_CLIENT_IP"];}
if(!empty($_SERVER['HTTP_X_FORWARDED_FOR'])){
$ips=explode (", ",$_SERVER['HTTP_X_FORWARDED_FOR']);
if($ip){
array_unshift($ips, $ip);
$ip=FALSE;}
for($i=0;$i<count($ips);$i++){
if(!preg_match('/^(?:10|172\.(?:1[6-9]|2\d|3[01])|192\.168)\./',$ips[$i])){
if(version_compare(phpversion(),"5.0.0",">=")){
if(ip2long($ips[$i])!=false){
$ip=$ips[$i];
break;}}
13

privát ip tartomány

zila · 2007. Aug. 23. (Cs), 08.10
A regexp a privát ip tartományokat (10.0.0.0, 172.16-19.0.0, 192.168.0.0) zárja ki, azért mert azzal nem sokra mész, hiszen rengeteg különböző usernek lehet látszólag ugyanaz a belső címe. (nem tudom mire kell ez neked, azonosításra nem jó a privát ip, talán csak kis statisztikára, hogy melyik privát tartomány a legnépszerűbb :)
14

16-31

Ronyn · 2007. Aug. 23. (Cs), 08.34
Nekem is egy ip alapján történő országazonositásra kell,(szoval ezekre nekem sincs szukségem)csak nem voltam tisztában ezeknek a tartományoknak a mibenlétével(közben utánnanéztem)...
Ugy lâtom,itt a 172.16.0.0-172.31.255.255-ig zárja ki az ip-ket...
Ez mind privát ip?
Az hogy lehet hogy egy usernál,aki telorol netezik(szolgáltaton keresztul),mindig csak egy ilyen privát ip jelenik meg az X_FORWARDED-ben?
15

igaz

zila · 2007. Aug. 23. (Cs), 08.52
Igen, igazad van a 172.16-172.31-ig zárja ki a regex.
Privát címek
Igen, amíg nem lesz IPv6 mindenhol, addig ezekkel kell együtt élni...

kaphat a user fix ip-t is a tartományon belül, vagy úgy érted minden usernél ugyanaz a privát ip szerepel a forwarded-ben?
16

Orange Ro

Ronyn · 2007. Aug. 23. (Cs), 09.20
Nem,csak ennél az egynél,Ő az Orange RO hálozatábol jelenkezik be,csak nem értem hogyha telorol van,(a REMOTE_ADDR-nél rendesen a szolgáltato ip-je van)mit keres az adatokban a privát ip...ez a szolgáltato belső hálozatátol származna?
18

proxy

zila · 2007. Aug. 23. (Cs), 09.52
A privát ip-t a szolgáltató osztja az ügyfeleinek, akik a szolgáltató proxy-ján mennek ki a netre... Az az ip az adott telefon ip címe, és igen a szolgáltató hálózatából jön, honnan máshonnan? :)

Jelen esetben mindegy, hogy telefonról, vagy bármilyen más eszközről van szó. A telefonnak is kell legyen ip címe, ha internetet használ...
19

Asszem...)))

Ronyn · 2007. Aug. 23. (Cs), 12.30
Asszem értem,köszi a segitséget))
Hogyha nincs beállitva a FORWARDED és a CLIENT IP akkor nem is lehet megtudni az adott gép/telo ip cimét?
Például nálam csak a REMOTE ADDR van ami a szolgáltato proxicimét adja...
17

Orange Ro

Ronyn · 2007. Aug. 23. (Cs), 09.23
Nem,csak ennél az egynél,Ő az Orange RO hálozatábol jelenkezik be,csak nem értem hogyha telorol van,(a REMOTE_ADDR-nél rendesen a szolgáltato ip-je van)mit keres az adatokban a privát ip...ez a szolgáltato belső hálozatátol származna?

Közben én is találtam egy listát ezekről a privát ip-ről,valoban pontosan ezeket fedi le a regexp...
1

Re: Kliens valódi IP címe proxy mögül

Bártházi András · 2003. Nov. 20. (Cs), 21.39
Emeld fel az ujjadat, és pötyögd be: 192.168.0.1. Mi a kérdés, és annak mi köze a form-hoz? Próbáld meg más megközelítésből leírni, mert így én nem értem meg. :( Ki rak be, milyen belső IP-t?
2

Re: Kliens valódi IP címe proxy mögül

Scr34m · 2003. Nov. 21. (P), 09.16
Jaj tegnap en se valaszoltam erre mert nem vagtam mivan gondoltam en vagyok bela es nem ertem :) szalja kicsit konretabban ha lehetne :P
3

Re: Kliens valódi IP címe proxy mögül

quasimidi · 2003. Nov. 21. (P), 14.07
Ok, a szitu a köv:
A szerver, amin megy egy intranetes proggy, loggolja a belépéseket + pár műveletet DB-be. A szerver DMZ-ben van, proxy mögött.
Amit szeretnék, az az, hogy megszerezni valahogyan a belépett userek IP címét. Jelenleg sajna (mivel FW/proxyn keresztül üzemel a dolog) minden művelethez a proxy IP címe társul, mivel azon keresztül jönnek a kliensek. Ezt (utánanéztem) Borderware FW-nél nem lehet kitrükkölni, elég durván szűri a forgalmat :)
Ezért gondoltam arra, hogy valahogyan magába a formba kellene belerakni egy hidden mezőt, aminek az értékét egy JS határozza meg. Ez lenne a kliens IP címe.
A $_SERVER["REMOTE_ADDR"]; $_SERVER["HTTP_CLIENT_IP"]; a proxy címét tartalmazzák (evidens, mert azon keresztül jönnek).

Tud vki egy olyan megoldást, ami valahogyan belerakja egy formba, vagy tőlem lehet máshova is a kliens *valódi* IP címét?
4

Re: Kliens valódi IP címe proxy mögül

Scr34m · 2003. Nov. 21. (P), 14.23
JS el nem lehet IP cimet lekerni :(

ötletnek talan jo $_SERVER["HTTP_REFERER"] erteket lekered es a kapottat megnezed mi az ip cime ugyebar itt dns cim szerepel altalaban :) csak az az egy baja hogy a refert lehet hamisitani :/