Tor через Python - может ли утечка реального IP-адреса?


3

Я думал о том, насколько безопасно это использовать Tor как «локальный прокси», чтобы анонимно получать информацию из веб-страниц. Возможно ли, что реальный IP-адрес можно увидеть?

На официальном сайте Tor они утверждают:

Tor не защищает весь интернет-трафик вашего компьютера, когда вы запустить его. Tor только защищает ваши приложения, которые правильно настроены для отправки своего интернет-трафика через Tor. Чтобы избежать проблем с конфигурацией Tor, мы настоятельно рекомендуем использовать пакет Tor Browser Bundle. Он предварительно настроен для защиты вашей конфиденциальности и анонимности в Интернете до тех пор, пока вы просматриваете браузер Tor . Почти любая другая конфигурация веб-браузера, вероятно, будет небезопасной для использования с Tor.

Tor Browser блокирует браузерные плагины, такие как Flash, RealPlayer, Quicktime и другие: их можно манипулировать в раскрытии вашего IP-адреса . Аналогично, мы не рекомендуем устанавливать дополнительные аддоны или плагины в браузер Tor, поскольку они могут обходить Tor или иначе наносить ущерб вашей анонимности и конфиденциальности.

Это что-то для меня беспокоит, когда я запускаю сценарий ниже (с включенным Vidalia/Tor)? Будет ли мой реальный IP-адрес обнаружен, если я запустил скрипт на разных веб-страницах? Веб-страница в коде ниже (my-ip.heroku.com) очень проста и возвращает мой IP-адрес. Но каким образом я мог бы быть, например, на веб-страницах с плагинами браузера, такими как flash, realplayer, quicktime и т. Д.?

import socket 
import socks 
import http.client 

def connectTor(): 
    socks.setdefaultproxy(socks.PROXY_TYPE_SOCKS5 , "127.0.0.1", 9050, True) 
    socket.socket = socks.socksocket 

def main(): 
    connectTor() 

    print("Connected to Tor") 

    conn = http.client.HTTPConnection("my-ip.heroku.com") 
    conn.request("GET", "/") 
    response = conn.getresponse() 
    print(response.read()) 

if __name__ == "__main__": 
    main() 
+1

Сначала было бы хорошей идеей, чтобы убедиться, что ваш скрипт выполняет свои запросы через Tor. Загрузите 'check.torproject.org' вместо' my-ip.heroku.com'. 10 авг. 132013-08-10 23:06:14

  0

Проверьте https://stem.torproject.org/ 10 авг. 132013-08-10 23:36:59

+1

, если вы не уверены в своем сценарии, используйте [proxychains] (http://proxychains.sourceforge.net/) 12 авг. 132013-08-12 06:26:06

6

В этом случае нет утечки.

Что вы делаете в Python здесь, просто создайте HTTP-запрос через прокси-сервер, который является местным SOCKS-прокси Tor. Ответ на этот запрос в основном будет некоторым текстом. Независимо от фактического содержания этого ответа ваш «клиент» Python фактически не будет анализировать ответные или пользовательские плагины для запуска определенного содержимого. HTTP-запрос передается через Tor, и последующие запросы не будут выполняться в зависимости от ответа.

Итак, плагины или нет, JavaScript или нет, все это не повлияет на ваш случай. Кроме того, при вызове setdefaultproxy() вы устанавливаете rdns на true, что предотвратит утечку DNS путем удаленного поиска DNS.

Процитированная вами цитата написана на слегка параноидальном языке. Они, очевидно, не означают, что 100% случаев, когда ваш IP будет протекать, если вы не используете пакет Tor Browser Bundle. Они просто означают, что гораздо более вероятно, что вы будете что-то пропустить, используя свой собственный браузер, например, эту настройку DNS, а не отключать плагины и т. Д.

+1

«Они просто означают, что гораздо вероятнее, что вы пропустите что-то, используя свой собственный браузер, например, эту настройку DNS, а не отключая плагины »- Абсолютно! Firefox может быть настроен так, чтобы не просачивать DNS-запросы, но Chrome не может и обойдет Tor делать свои поисковые запросы. Аналогично, Adobe Flash (в Firefox) обходит ваш прокси-сервер для запросов трафика и DNS. И бог знает, что каждый кусок Javascript, с которым вы столкнулись, просочится. Люди Tor поощряют вас использовать TBB, потому что установленная ими установка запаса удобна в безопасности - браузер настроен должным образом, и негерметичные плагины отключены. 27 июл. 162016-07-27 13:24:07


0

Когда волновались об утечках Tor, есть простой способ, чтобы получить хороший базовый уровень собирается:

  1. Подключайтесь к Интернету.

  2. Получите зрелый прокси-сервер Tor (выберите w/HTTP-фильтр, такой как Privoxy), и убедитесь, что он работает, загружая через него страницу, которая показывает местоположение/IP.

  3. Установите брандмауэр, чтобы перенаправить весь трафик с вашего приложения (или всей системы) на Tor proxy и наоборот.

Bam. Теперь вы получаете преимущества Tor, не разрабатывая приложение специально для него. Просто убедитесь, что ни одна из отправленных данных не идентифицирует b/c, защита заканчивается на выходных узлах.


0

С этим конкретным кодом DNS-запросы будут отправлены перед подключением к носкам, поэтому ваш IP-адрес будет обнаружен. Чтобы решить эту проблему, вы должны изменить код следующим образом:

import socks 
import socket 

socks.setdefaultproxy(socks.PROXY_TYPE_SOCKS5,'127.0.0.1', 9050, True) 
socket.socket = socks.socksocket 

def getaddrinfo(*args): 
     return [(socket.AF_INET, socket.SOCK_STREAM, 6, '', (args[0], args[1]))] 

socket.getaddrinfo = getaddrinfo 

import http.client 

def main(): 
     connectTor() 

... 

Хитрость заключается в том, чтобы переопределить DNS запросов, чтобы пройти через TOR перед импортом HTTPLIB. С помощью предыдущего кода попробуйте подключиться к луковому сайту, и вы получите DNS-ошибку, потому что обычный DNS не может разрешить локальные хосты.