Обнаружение прокси - PullRequest
       1

Обнаружение прокси

0 голосов
/ 30 марта 2011

Прокси манипулируют заголовками, поэтому я решил проверить адрес страницы с помощью js и php, и если они равны => нет прокси. Но я думаю, что моя реализация не верна.

    <script src="http://code.jquery.com/jquery-1.5.1.min.js"></script>
<div id="JS" style="display:none">
<script>



</script>
</div>
<div id="noJS">Enable JS</div>
<script>
$(document).ready(function() {
$("#noJS").hide();
$("#JS").show().addClass("hasJS");  
if($("#JS").hasClass("hasJS")) {

    if($("#addrphp").text() == location.href) {
        alert("no proxy");
    }
    else {
        alert("proxy")

    }

}   
});
</script>
<?php
$url="http://".$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI'];
?>
<div id="addrphp" style="display:none;"><?php echo $url; ?></div>

Как вы думаете? Это остановит большинство прокси? Верна ли моя реализация (это лучший способ делать то, что я хочу)?

Ответы [ 2 ]

7 голосов
/ 30 марта 2011

Прокси не изменяет адрес страницы, запрашиваемой вашим браузером, если вы не используете что-то вроде кеша Google. Прокси-сервер просто принимает ваш запрос, извлекает содержимое любого адреса в вашем запросе и пересылает ответ на ваш компьютер. Он ни в коем случае не должен менять адрес, поскольку это означает, что вы запрашиваете не то, что получаете.

Если бы локальный IP-адрес был доступен в Javascript, вы могли бы тривиально проверить, совпадает ли адрес, с которого поступил запрос, с адресом, обнаруженным в Javascript, но Javascript не может справиться с этой низкоуровневой сетевой концепцией. Может быть подписанный Java-апплет, а может быть и апплет Flash / Silverlight, хотя я только об этом и догадываюсь.

Но проверка IP-адресов не удастся так же просто, как домашний широкополосный маршрутизатор. «Локальный» IP вполне может быть чем-то вроде 10.0.0.13, но ваш сайт обнаружит запрос как поступающий с любого внешнего адреса маршрутизатора. Там не задействован «прокси», просто шлюз NAT, но запросите IP! = IP-адрес клиента и вау, вы прокси, чувак!

Самый надежный (и все еще не особенно надежный) метод - это проверка на наличие различных заголовков прокси, таких как X-Forwarded-For.

0 голосов
/ 12 августа 2011

Я согласен с Марком Б, самый надежный способ - проверить ваш HTTP-запрос на наличие известных заголовков прокси.Существует множество онлайн-инструментов, которые легко отображают ваши заголовки, например, эта проверка заголовков прокси показывает наиболее часто используемые заголовки HTTP прокси-серверами, и если вы видите свой IP в некоторыхиз них вы наверняка знаете, что находитесь за прокси-сервером.

Если перейти к вашему вопросу, в этой ссылке указаны имена заголовков HTTP, поэтому вы можете скопировать их и использовать в своем сценарии.

Но объясняя далее, что говорит Марк, если вы не видите ни одного из этих заголовков, это не гарантирует, что кто-то не использует прокси.Существует множество прокси, прозрачных и анонимных с высокой степенью анонимности, которые не отправляют никаких специальных заголовков в HTTP-запросах.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...