Is it possible to block Tor users?

后端 未结 14 2144
没有蜡笔的小新
没有蜡笔的小新 2021-01-30 04:03

Would it be possible to block Tor users? (https://www.torproject.org/)

Due to the nature of the site I run I should do all I can to stop multiple accounts and block cert

相关标签:
14条回答
  • 2021-01-30 04:59

    You can use the TorDNSEL service to perform a live query about whether a specific IP address is a Tor exit node. You query the service via a specially-formed DNS request.

    Here is some sample PHP code that performs the lookup:

    function isTorExitNode() {
        $serverPort = $_SERVER['SERVER_PORT'];
        $remoteAddr = reverseIp(getClientIp());
        $serverAddr = reverseIp($_SERVER['SERVER_ADDR']);
        $placeholders = '%s.%s.%s.ip-port.exitlist.torproject.org';
        $name = sprintf($placeholders, $remoteAddr, $serverPort, $serverAddr);
        return ( gethostbyname($name) === '127.0.0.2' );
    }
    
    function getClientIp() {
        if (isset($_SERVER['HTTP_CF_CONNECTING_IP'])) {
            return $_SERVER['HTTP_CF_CONNECTING_IP'];
        }
        return $_SERVER['REMOTE_ADDR'];
    }
    
    function reverseIp($ip) {
        $ipParts = explode('.', $ip);
        return $ipParts[3] . '.' . $ipParts[2] . '.' .
               $ipParts[1] . '.' . $ipParts[0];
    }
    
    if (!isTorExitNode()) {
        // Do nothing
    } else {
        Die("Sorry, You cannot use TOR network!!!");
    }
    

    Important Notes:

    • This example supports IPv4 addresses only, not IPv6.

    • It could take a couple of seconds to get a response, so be careful about introducing delays into your site rendering.

    0 讨论(0)
  • 2021-01-30 05:03

    I found a list of all the Tor nodes updated every half an hour: https://www.dan.me.uk/tornodes

    This SHOULD include the exit, entries and bridge nodes used to connect and browse through Tor.

    Use this Perl script to gather the IP addresses from a downloaded webpage:

    perl -lne 'print $& if /(\d+\.){3}\d+/' downloadedwebpage.html > listofips.out
    

    It will give you a list of IP addresses , one per line. I have tried to find something that will do this without the Perl script, but after many hours searching I could not find one.

    I hope this helps.

    I also found some good information here too on the same site: https://www.dan.me.uk/dnsbl

    0 讨论(0)
提交回复
热议问题