2015-06-27 9 views
0

Я пытаюсь использовать TOR с http.client.HTTPConnection, но по какой-то причине я все время получаю странные ответы от всего. Я не совсем уверен, как именно объяснить, так вот пример того, что у меня есть:Python3: http.client с privoxy/TOR делает плохие запросы

class Socket(http.client.HTTPConnection): 
    def __init__(self, url): 
     super().__init__('127.0.0.1', 8118) 
     super().set_tunnel(url) 
     #super().__init__(url) 

    def get(self, url = '/', params = {}): 
     params = util.params_to_query(params) 
     if params: 
      if url.find('?') == -1: url += '?' + params 
      else: url += '&' + params 

     self.request(
      'GET', 
      url, 
      '', 
      {'Connection': 'Keep alive'} 
     ) 
     return self.getresponse().read().decode('utf-8') 

Если я бегу это с:

sock = Socket('www.google.com') 
print(sock.get()) 

я получаю:

<html><head><meta content="text/html;charset=utf-8" http-equiv="content-type"/> 
<title>301 Moved</title></head><body> 
<h1>301 Moved</h1> 
The document has moved 
<a href="http://www.google.com:8118/">here</a>. 
</body></html> 

Google перенаправляет меня на url, который я только что запросил, за исключением порта privoxy. И это становится страннее - если я пытаюсь https://check.torproject.org:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2//EN"> 
<html> 
<head> 
<title>Welcome to sergii!</title> 
</head> 
<body> 
<h1>Welcome to sergii!</h1> 

This is sergii, a system run by and for the <a href="http://www.torproject.org/">Tor Project</a>. 
She does stuff. 
What kind of stuff and who our kind sponsors are you might learn on 
<a href="http://db.torproject.org/machines.cgi?host=sergii">db.torproject.org</a>. 

<p> 
</p><hr noshade=""/> 
<font size="-1">torproject-admin</font> 
</body> 
</html> 

Если я не пытаюсь использовать Privoxy/TOR, я получаю именно то, что ваш браузер получает в http://www.google.com или http://check.torproject.org. Я не знаю, что здесь происходит. Я подозреваю, что проблема связана с python, потому что я могу использовать TOR с firefox, но я действительно не знаю.

Privoxy журнал гласит:

2015-06-27 19:28:26.950 7f58f4ff9700 Request: www.google.com:80/ 
2015-06-27 19:30:40.360 7f58f4ff9700 Request: check.torproject.org:80/ 

журнал TOR не имеет ничего полезного сказать.

+0

Почему этот результат странный? Что вы ожидаете увидеть? –

+0

То же самое, что ваш браузер получает для http://www.google.com или http://check.torproject.org. Вероятно, я должен уточнить, что на самом деле я их получу, если не пытаюсь использовать TOR. – Monchoman45

ответ

0

Это закончилось тем, что я связывался с http://, и эти сайты хотели https://. Он корректно работает для сайтов, которые принимают нормальный http://.