Я пытаюсь скрыть свой 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.