Уважаемые пользователи форума, убедительно просим вас переходить в телеграмм продавца, исключительно по предоставленной ссылке. Проверяйте продавца, отправив сообщение на электронную почту, чтобы убедиться в том, что вы общаетесь действительно с ним.

Определяем пользователей Tor у себя на сайте (2015)

Тема в разделе "Хакинг. Программирование", создана пользователем WWW, 12 июл 2016.

  1. WWW

    WWW Moderator Модератор форума

    Сообщения:
    723
    Симпатии:
    1
    Всем привет!
    Сейчас мы поговорим о том, как можно определить зашёл ли пользователь через Tor к нам на сайт, и если да - как лучше перенаправить его на Tor домен.
    На ум приходит только два простых варианта, а именно:
    Первый это делать запрос вида


    Code:
    https://exonerator.torproject.org/?ip=USER_IPtimestamp=date (где дата в формате "Y-m-d")​

    и там регуляркой(или просто вхождением подстроки в строку) искать слово "positive", при нахождении которого считать что пользователь пришёл через Tor и редиректить его на Tor домен.
    Минусы такого способа очевидны, один из них заключается в том, что редирект нельзя будет осуществить силами самого веб-сервера, а только каким либо языком программирования.
    А второй, это получить список всех выходных нод и добавить правило редиректа в конфиг самого веб сервера(так же можно получать ip пользователя на каком либо языке программирования, искать его вхождение в списке, и если таковое найдено делать редирект).
    Второй способ как я думаю более интересный и универсальный, по этому реализацию именного его мы и рассмотрим в данной статье.
    В качестве подопытных будет использоваться NGINX(для редиректами силами веб-сервера), Python 2.7(для получения списка нод и приведения его к такому виду, по которому легко осуществлять поиск) и PHP(для редиректа со страницы сайта).

    И так, приступим.
    Первое что необходимо сделать это получить список всех нод и привести его к "нормальному" виду:


    Code:
    # -*- coding: utf-8 -*-
    import urllib
    import re


    # Получаем список нод
    r = urllib.urlopen("https://check.torproject.org/exit-addresses")
    nodes_list = r.read()

    # Приводим список нод к "нормальному" виду
    nodes_ips = re.findall("d{1,3}.d{1,3}.d{1,3}.d{1,3}", nodes_list)

    # Пишем в файл
    with open(tor_nodes.txt, w) as f:
    f.write("
    ".join(nodes_ips) + "
    ")​

    Как получить список мы знаем, теперь разберёмся как на PHP проверить если в списке нод IP пользователя и если есть сделать редирект:

    Code:
    <?php

    $tor = "https://B16B00B5.onion/"; // Наш домен в тор
    $ip = $_SERVER["REMOTE_ADDR"]; // Проверять достаточно только "REMOTE_ADDR", тк нам не интересно за прокси юзер или нет

    if( strpos(file_get_contents("./tor_nodes.txt"), $ip) !== false) {
    header(Location: .$tor); // Ага, тор, делаем редирект
    }
    ?>​

    конечно же менее русурсозатратно будет читать файл по строчно и сверять, но тут мы просто разбираем принцип, а не пишем эталонный код

    Ну вот, редирект на PHP работает, теперь осталось разобратся как это сделать усилиями NGINX для этого нам понадобится модуль Geo -
    После того как он установлен, поправим не много скипт для получения списка нод таким образом, что бы на выходе был конфиг для модуля NGINX Geo:


    Code:
    # -*- coding: utf-8 -*-
    import urllib
    import re


    tor = "https://B16B00B5.onion/" # Наш домен в тор

    # Получаем список нод
    r = urllib.urlopen("https://check.torproject.org/exit-addresses")
    nodes_list = r.read()

    # Приводим список нод к "нормальному" виду
    nodes_ips = re.findall("d{1,3}.d{1,3}.d{1,3}.d{1,3}", nodes_list)

    # Пишем в файл
    with open(tor_nodes.txt, w) as f:
    f.write("geo $bad_user {
    " + "/32 1;
    ".join([" " + nodes_ip for nodes_ip in nodes_ips])+ "
    }
    ")
    f.write("server {
    if ($bad_user) {
    rewrite ^ " + tor + ";
    }
    }
    ")​

    Ну вот собственно и всё

    2015 CRDCLUB (c) 0xB16B00B5
  2. $i$k@

    $i$k@ Member

    Сообщения:
    189
    Симпатии:
    0
    Хоpоший гайд, +

Поделиться этой страницей