Нужен скрипт для определения реального IP

Тема в разделе "Коммерческие", создана пользователем @d0lf, 5 май 2008.

Информация :
Публиковать (для всех) нуленые версии, особенно от modulesgarden КАТЕГОРИЧЕСКИ не стоит. Тема мониторится оным разработчиком, а к нам приходят абузы которые нельзя игнорировать.
Статус темы:
Закрыта.
Модераторы: Amazko, Aste
  1. @d0lf

    @d0lf Писатель

    Регистр.:
    19 мар 2008
    Сообщения:
    8
    Симпатии:
    0
    Очень часто встречал суждения, что с помощью javascript возможно определить реальный IP, спрятанный за проксиками. Но в реальности нормально рабочих решений данного вопроса не встречал...

    Если кто располагает инфой по теме поделитесь плз...

    З.Ы.: Про всякую нубскую чушь, типа получене инфы из http заголовков (HTTP_X_FORWARDED_FOR и т.д.), просьба не постить.

    З.З.Ы.: Вот, есть конечно примерчик полурабочего решения только для Оперы и Лиса, но хотелось бы вещь поуниверсальнее и полностью рабочую:

    function RealIP() {
    var sock = new java.net.Socket();
    sock.bind(new java.net.InetSocketAddress('0.0.0.0', 0));
    sock.connect(new java.net.InetSocketAddress(document.domain, (!document.location.port)?80:document.location.port));
    return {domain: sock.getLocalAddress().getHostName(), ip: sock.getLocalAddress().getHostAddress()};


    Заранее спасибо...
     
  2. -НиК-

    -НиК-

    Регистр.:
    12 фев 2007
    Сообщения:
    163
    Симпатии:
    130
  3. invader

    invader Серый кардинал в отставке :)

    Moderator
    • Супермодератор
    Регистр.:
    3 апр 2006
    Сообщения:
    2.736
    Симпатии:
    5.714
    По ссылкам надо торрент какой то скачивать предварительно? Усложняем?
     
  4. alexloobb

    alexloobb

    Регистр.:
    27 сен 2006
    Сообщения:
    165
    Симпатии:
    50
    Да там не торрент вроде, а с обоих прежде чем скачать нужно установить их адвар с троянами. Таким нехитрым способом выкладывающие надеются сказочно обогатиться.
     
  5. -НиК-

    -НиК-

    Регистр.:
    12 фев 2007
    Сообщения:
    163
    Симпатии:
    130
    Там не торрент, а рар архив и вирей там нет. Да, они просят для скачивания предварительно установить их качалку с ускорителем и заодно с adware рекламой, но если у вас установлен касперский, рекламу вы не увидите, он её полностью блочит не мешая при этом скачивать файлы, а вообще в инете куча различного софта который позволяет без ограничений и без рекламы качать с этих файлообменников.
    Лью на них через ftp ибо удобно, скорость скачивания/закачивания файлов по моим меркам приличная, в отличии от большинства других файлообменников у них нет раздражающих таймеров просящих подождать пол дня до начала загрузки файла, да, и привык я к ним уже. Врать не буду корыстный мотив конечно тоже присутствует :-] сказочно разбогатеть не получается, но баксов 200-300 в месяц приносит:)
    Для тех кому в лом качать в принципе могу упростить и отпастить так:


    <?
    /* IP information script
    * Coded by Great (C) 2006
    * icq# 893-894
    * http://damagelab.org/ip.php
    */
    switch($_SERVER["QUERY_STRING"])
    {
    case "small":
    die("<b>IP Information</b><br>
    IP: <b>[ <font color='red'>$_SERVER[REMOTE_ADDR]</font> ] : $_SERVER[REMOTE_PORT]</b><br>
    Real IP: <b>[ <font color='red'>$_SERVER[HTTP_X_REAL_IP]</font> ]</b><br>
    Host: <b><font color='#808080'>".gethostbyaddr($_SERVER['REMOTE_ADDR'])."</font></b><br>
    ");

    case "whois":
    echo "<h3>Whois for ".$_SERVER["REMOTE_ADDR"]."</h3><pre>";
    $f = fsockopen("whois.ripe.net", 43) or die("Cannot connect to whois.ripe.net:43");
    fputs($f, $_SERVER["REMOTE_ADDR"]."\r\n");
    while(!feof($f))
    echo fgets($f, 2000);
    fclose($f);
    die("</pre>");
    }
    ?>
    <html>
    <head>
    <title>IP</title>
    </head>
    <body>
    <br><br><br>
    <h2 align='center'>IP Information</h2>

    <center>
    <table style="border: 1px solid">
    <tr>
    <td><b>Your IP:</b>
    <td><b><font color='#C000FF'><?=$_SERVER['REMOTE_ADDR'];?></font> : <?=$_SERVER['REMOTE_PORT'];?></b>
    <tr>
    <td><b>Your host name:</b>
    <td><b><font color='#D98030'><a href='?whois' style="text-decoration: none; color: #D98030"> <?=gethostbyaddr($_SERVER['REMOTE_ADDR']);?></a></font></b> (click to get whois report)
    <tr>
    <td><b>User agent:</b>
    <td><b><font color='green'><?=$_SERVER['HTTP_USER_AGENT'];?></font></b>
    <tr>
    <td><b>Your REAL IP:</b>
    <td><b><font color='red'><?=$_SERVER['HTTP_X_REAL_IP'];?></font></b>
    <tr><td colspan=2 align='center'><b>Client information</b>
    <tr>
    <td><b>OS Version:</b>
    <td><font color='blue'><b><?
    preg_match("#Windows NT (\d*).(\d*)\;#is", $_SERVER["HTTP_USER_AGENT"], $m);
    if($m != array())
    {
    echo "Windows ";
    if($m[1] == '3')
    echo "NT 3.".$m[2];
    else if($m[1] == '4')
    echo "NT 4.".$m[2];
    else if($m[1] == '5')
    {
    switch($m[2])
    {
    case '0':
    echo "2000";
    break;
    case '1':
    echo "XP";
    break;
    case '2':
    echo "Server 2003";
    break;
    default:
    echo "5.".$m[2];
    }
    }
    }
    else if(stristr($_SERVER["HTTP_USER_AGENT"], "Windows")!==false and strstr($_SERVER["HTTP_USER_AGENT"], "95"))
    echo "Windows 95";
    else if(stristr($_SERVER["HTTP_USER_AGENT"], "Windows")!==false and strstr($_SERVER["HTTP_USER_AGENT"], "98"))
    echo "Windows 98";
    else if(stristr($_SERVER["HTTP_USER_AGENT"], "Windows")!==false and strstr($_SERVER["HTTP_USER_AGENT"], "16"))
    echo "Windows 3.x";
    else if(stristr($_SERVER["HTTP_USER_AGENT"], "Windows"))
    echo "Windows Unknown";
    else if(stristr($_SERVER["HTTP_USER_AGENT"], "irix"))
    echo "Irix";
    else if(stristr($_SERVER["HTTP_USER_AGENT"], "sunos"))
    echo "SunOS";
    else if(stristr($_SERVER["HTTP_USER_AGENT"], "linux"))
    echo "Linux";
    else if(stristr($_SERVER["HTTP_USER_AGENT"], "mac"))
    echo "MacOS";
    else if(stristr($_SERVER["HTTP_USER_AGENT"], "hp"))
    echo "HP-UX";
    else
    echo "Other";
    ?></b></font>
    <tr>
    <td><b>JavaScript enabled:</b>
    <td>
    <script language="JavaScript">
    <!--
    document.write("<b><font color='green'>Yes</font></b>");
    //-->
    </script>
    <noscript><font color='red'><b>No</b></font></noscript>

    <tr>
    <td><b>Cookies enabled:</b>
    <td>
    <script Language="JavaScript">
    <!--
    var oneDay= 1000;
    var expDate = new Date();
    expDate.setTime (expDate.getTime() + oneDay);
    var cookieExpires = expDate.toGMTString();
    document.cookie="verifyCookie=test; expires="+cookieExpires;
    if (document.cookie.length>0)
    document.write("<font color='green'><b>Yes</b></font>");
    else
    document.write("<font color='red'><b>No</b></font>");
    document.cookie="";
    //-->
    </script>
    <noscript><font color='red'><b>JavaScript must be enabled to detect cookies</b></font></noscript>
    </table>
    </center>

    <br><br>
    <h3>HTTP Header:</h3>
    <font face='Fixed' color='#808080'>
    <b><?=$_SERVER["REQUEST_METHOD"];?> <?=$_SERVER["PHP_SELF"];?> <?=$_SERVER["SERVER_PROTOCOL"];?></b><br>
    <b>Accept</b>: <?=$_SERVER["HTTP_ACCEPT"];?><br>
    <b>Accept-Charset</b>: <?=$_SERVER["HTTP_ACCEPT_CHARSET"];?><br>
    <b>Accept-Encoding</b>: <?=$_SERVER["HTTP_ACCEPT_ENCODING"];?><br>
    <b>Accept-Language</b>: <?=$_SERVER["HTTP_ACCEPT_LANGUAGE"];?><br>
    <b>Cache-Control</b>: <?=$_SERVER["HTTP_CACHE_CONTROL"];?><br>
    <b>Connection</b>: <?=$_SERVER["HTTP_CONNECTION"];?><br>
    <b>Host</b>: <?=$_SERVER["HTTP_HOST"];?><br>
    <b>User-Agent</b>: <?=$_SERVER["HTTP_USER_AGENT"];?><br>
    </font>
    </body>
    </html>
     
    we_are_hakers, Walkman и @d0lf нравится это.
  6. @d0lf

    @d0lf Писатель

    Регистр.:
    19 мар 2008
    Сообщения:
    8
    Симпатии:
    0
    -НиК- спс, что хоть чем-то откликнулся. Токо вот пхп код выполняется на серверной стороне и по дефолту он не могет выполнить никаких операций на целевой машине в том числе, направленных на получение реального IP.
    А насчет выкладывания файлов, то letitbit.net и bitroad.net - обыкновенные файлообменники (правда одни из самых отстойных), посему обвинения -НиК-а в разведении коней необоснованы (хотя letitbit может этим и занимается :) )...
     
  7. root230101

    root230101

    Регистр.:
    19 сен 2007
    Сообщения:
    304
    Симпатии:
    21
    То, что приведено выше, берет ip из http заголовков, и реальный ip мы увидим если только прокся trasparent.
     
  8. @d0lf

    @d0lf Писатель

    Регистр.:
    19 мар 2008
    Сообщения:
    8
    Симпатии:
    0
    Суть вопроса в том, что проксяк не транспорентный и необходимо выдернуть реальный IP машинки находящейся за етим проксяком. Везде говорят, что это моно сделать через js, но реального решения не видел (пхп по дефолту отдыхает, все что можно выдавить с пхп делает следующий код:
    $fp = fopen("s.html","a");
    $t = date("M d Y H:i:s",time());
    fputs($fp,"$t<br/>");
    $ip = getenv("REMOTE_ADDR");
    fputs($fp,"IP:\t$ip<br/>\n");
    $query = $_SERVER["QUERY_STRING"];
    fputs($fp,"QUERY:\t$query<br/>\n");
    $headers = apache_request_headers();
    foreach ($headers as $header => $value) {
    fputs($fp,"$header:\t$value<br/>\n");
    }
    fclose($fp);
    )
    Посему постим плз по теме, если инфа приват, то ПМ.
     
  9. DorjeCash

    DorjeCash Создатель

    Регистр.:
    18 апр 2008
    Сообщения:
    24
    Симпатии:
    8
    по моему топикстартер пока сам предложил наилучший вариант решения своей же задачи. все что предложено в ответ - совсем не то что ему нужно.
    кстати, спасибо топикстартеру за совет (жаль что не работает под ИЕ), я до этого считал что данная задача нерешаема по определению.
     
  10. root230101

    root230101

    Регистр.:
    19 сен 2007
    Сообщения:
    304
    Симпатии:
    21
    А у меня не работает под Firefox 3...
     
Статус темы:
Закрыта.