Как получить всю информацию о клиенте от посетителей веб-сайта?

#networking

#сеть

Вопрос:

Я хочу собрать всю информацию, которую мы могли бы, когда кто-то посещает веб-страницу: например:

 clients screen resolution: <script type='text/javascript'>document.write(screen.width 'x' screen.height); </script>
referer: <?php print ($_SERVER['HTTP_REFERER']); ?>
client ip: <?php print ($_SERVER['REMOTE_ADDR']); ?>
user agent:  <?php print ($_SERVER['HTTP_USER_AGENT']); ?>
  

что еще есть?

Ответ №1:

Это основные фрагменты информации. Все, что выходит за рамки этого, может быть расценено как шпионское ПО, и защитники конфиденциальности будут [оправданно] осуждать это.

Лучший способ получить больше информации от ваших пользователей — спросить их, сделать поля необязательными и сообщить вашему пользователю, для чего именно вы будете использовать эту информацию. Будете ли вы рассылать им новостную рассылку?

Если вы планируете отправлять им электронные письма, то вы ДОЛЖНЫ использовать подход «подтвержденная регистрация» — сначала получить их согласие (попросив их ответить на электронное письмо со специальным секретным уникальным номером, подтверждающим, что они дают вам разрешение отправлять им эту рассылку или любые уведомления, которые вы планируете им отправлять).

Пока вы заранее информируете о том, как планируете использовать информацию, и предоставляете пользователям возможность решать, как вы можете ее использовать (по умолчанию все эти опции должны быть «у вас НЕТ разрешения»), вы, вероятно, получите больше пользователей, которые готовы доверять вам и предоставлять вам информацию более высокого качества. Для тех, кто не желает раскрывать какую-либо личную информацию о себе, не тратьте свое время, пытаясь получить ее, потому что многие из них предпринимают шаги, чтобы предотвратить это и все равно скрываются (и это их право).

Ответ №2:

Получите всю информацию о компьютере клиента с помощью этого небольшого PHP:

 <?php
foreach($_SERVER as $key => $value){
echo '$_SERVER["'.$key.'"] = '.$value."<br />";
}
?>
  

Комментарии:

1. Это информация о сервере, а не о клиенте!

2. @ViaSat часть этого, такая как $_SERVER["REMOTE_ADDR"] содержит данные клиента

3. Вместо foreach(){...} используйте print_r($_SERVER); .

Ответ №3:

Список, доступный для PHP, находится здесь.

Если вам нужны дополнительные сведения, вы можете рассмотреть возможность использования Browserhawk.

Ответ №4:

С какой целью?

Помните, что IP-адрес клиента сейчас практически бессмыслен. Все пользователи, приходящие с одного прокси-сервера или с одной точки NAT, будут иметь один и тот же IP-адрес клиента. Годы идут, весь трафик AOL поступает всего с нескольких прокси, хотя сейчас реальных пользователей AOL может быть больше, чем прокси :).

Если вы хотите однозначно идентифицировать пользователя, легко создать cookie в apache (mod_usertrack) или любой другой используемой вами платформе. Если пользователь блокирует файлы cookie, пожалуйста, уважайте это и не пытайтесь использовать хитрости, чтобы отследить их в любом случае. Или воспользуйтесь уроком Google, сделайте его настолько полезным, чтобы люди предпочли утилиту заботам о файлах cookie.

Помните, что Javascript выполняется на клиенте. Ваш document.write () покажет информацию на их веб-странице, ничего не делая для вашего сервера. Вы хотели бы использовать Javascript, чтобы поместить эту информацию в файл cookie или сохранить вместе с отправкой формы, если у вас есть какие-либо формы.

Ответ №5:

Мне нравится использовать что-то вроде этого:

 $log = array(
  'ip' => $_SERVER['REMOTE_ADDR'],
  're' => $_SERVER['HTTP_REFERER'],
  'ag' => $_SERVER['HTTP_USER_AGENT'],
  'ts' => date("Y-m-d h:i:s",time())
);

echo json_encode($log);
  

Вы можете сохранить эту строку в файле, JSON довольно маленький и составляет всего одну строку.

Ответ №6:

 phpinfo(32);
  

Печатает таблицу со всей извлекаемой информацией. Вы можете просто скопировать и вставить переменные непосредственно в свой php-код.

например:

 _SERVER["GEOIP_COUNTRY_CODE"]   AT
  

было бы в php-коде:

 echo $_SERVER["GEOIP_COUNTRY_CODE"];
  

Ответ №7:

получить все выходные данные переменных $_SERVER:

 <?php
$test_HTTP_proxy_headers = array('GATEWAY_INTERFACE','SERVER_ADDR','SERVER_NAME','SERVER_SOFTWARE','SERVER_PROTOCOL','REQUEST_METHOD','REQUEST_TIME','REQUEST_TIME_FLOAT','QUERY_STRING','DOCUMENT_ROOT','HTTP_ACCEPT','HTTP_ACCEPT_CHARSET','HTTP_ACCEPT_ENCODING','HTTP_ACCEPT_LANGUAGE','HTTP_CONNECTION','HTTP_HOST','HTTP_REFERER','HTTP_USER_AGENT','HTTPS','REMOTE_ADDR','REMOTE_HOST','REMOTE_PORT','REMOTE_USER','REDIRECT_REMOTE_USER','SCRIPT_FILENAME','SERVER_ADMIN','SERVER_PORT','SERVER_SIGNATURE','PATH_TRANSLATED','SCRIPT_NAME','REQYEST_URI','PHP_AUTH_DIGEST','PHP_AUTH_USER','PHP_AUTH_PW','AUTH_TYPE','PATH_INFO','ORIG_PATH_INFO','GEOIP_COUNTRY_CODE');
    foreach($test_HTTP_proxy_headers as $header){
        echo $header . ": " . $_SERVER[$header] . "<br/>";
    }
?>