Как решить неожиданное поведение Tor? User-agent и протокол HTTPS показывают мой фактический ip - PullRequest
0 голосов
/ 15 февраля 2020

Я пытаюсь скрыть свой IP-адрес с помощью сети Tor.

Я использую комплект экспертов Tor на windows.

Я провел 2 теста для сравнения различных выходных данных.

Я использовал два веб-сайта для определения IP-адреса и агента пользователя: ipecho.net и httpbin.org

Результаты первого теста: вызов по протоколу HTTP и пользовательский агент по умолчанию:

Ipecho found this ip: 199.249.230.64 (an expected Tor ip)
Httpbin found this ip: 199.249.230.64 (an expected Tor ip)
Ipecho found this user-agent: python-requests/2.22.0 (an expected default user-agent from requests)
Httpbin found this user-agent: python-requests/2.22.0 (an expected default user-agent from requests)

Но по результатам второго теста: вызов с протоколом HTTP и указанным c пользовательским агентом

Ipecho found this ip: <MY ACTUAL IP> (my own unexpected ip)
Httpbin found this ip: 199.249.230.64 (an expected Tor ip)
Ipecho found this user-agent: Mozilla/5.0 (iPhone; CPU iPhone OS 12_2 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148 (an expected user-agent that we specified)
Httpbin found this user-agent: Mozilla/5.0 (iPhone; CPU iPhone OS 12_2 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148 (an expected user-agent that we specified)

У меня два вопроса:

-Почему ipecho.net и httpbin.org имеют разные результаты во втором тесте?

-Почему мой собственный ip отображается, когда я предоставляю user-agent в заголовке?

Вот полный код для воспроизведения эти результаты теста:

примечание: я настроил файл torr c на ControlPort 9051, а также изменил HashedControlPassword.

from torrequest import TorRequest # to make requests in Tor
import bs4 # to parse the responses
import json # to parse the responses

# we set up our requests for Tor with TorRequest
with TorRequest(proxy_port = 9050, ctrl_port = 9051, password = '<your password>') as tr:

    # we set up a specific user-agent that we will use on some tests
    headers = {'User-Agent': 'Mozilla/5.0 (iPhone; CPU iPhone OS 12_2 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148'}

    # First test: we call with HTTP protocol and no specific user-agent
    response_ipecho_ip = tr.get('http://ipecho.net/plain')
    response_httpbin_ip = tr.get('http://httpbin.org/ip')
    response_ipecho_agent = tr.get('http://ipecho.net/extra')
    response_httpbin_agent = tr.get('http://httpbin.org/user-agent')

    print('################ First test: we call with HTTP protocol and no specific user-agent ##############')
    print('Ipecho found this ip: {}'.format(response_ipecho_ip.text))
    response_httpbin_ip = json.loads(response_httpbin_ip.text)
    print('Httpbin found this ip: {}'.format(response_httpbin_ip['origin']))
    soup = bs4.BeautifulSoup(response_ipecho_agent.text,'html.parser')
    print('Ipecho found this user-agent: {}'.format(soup.find('tr').td.findNext('td').text))
    response_httpbin_agent = json.loads(response_httpbin_agent.text)
    print('Httpbin found this user-agent: {}\n'.format(response_httpbin_agent['user-agent']))

    # Second test: we call with HTTP protocol and a specific user agent
    response_ipecho_ip = tr.get('http://ipecho.net/plain', headers = headers)
    response_httpbin_ip = tr.get('http://httpbin.org/ip', headers = headers)
    response_ipecho_agent = tr.get('http://ipecho.net/extra', headers = headers)
    response_httpbin_agent = tr.get('http://httpbin.org/user-agent', headers = headers)

    print('################ Second test: we call HTTP protocol and a specific user agent ##############')
    print('Ipecho found this ip: {}'.format(response_ipecho_ip.text))
    response_httpbin_ip = json.loads(response_httpbin_ip.text)
    print('Httpbin found this ip: {}'.format(response_httpbin_ip['origin']))
    soup = bs4.BeautifulSoup(response_ipecho_agent.text,'html.parser')
    print('Ipecho found this user-agent: {}'.format(soup.find('tr').td.findNext('td').text))
    response_httpbin_agent = json.loads(response_httpbin_agent.text)
    print('Httpbin found this user-agent: {}\n'.format(response_httpbin_agent['user-agent']))

Кроме того, бонусные тесты: я запускаю то же самое тесты, но на этот раз с HTTPS. Мой собственный ip всегда отображается, независимо от того, является ли он ipecho.net или httpbin.org, и неважно, использую ли я пользовательский агент по умолчанию или указанный c.

1 Ответ

1 голос
/ 15 февраля 2020

Установить «torrequest» из источника. Эта ошибка была решена , но, возможно, не выпущена.

...