erdiaker / torrequest

Simple Python interface for HTTP(s) requests over Tor
234 stars 42 forks source link

All HTTPS requests are sent outside Tor #17

Open zolfariot opened 3 years ago

zolfariot commented 3 years ago

Environment

OS: linux x86_64 Python: 3.9.4 OpenSSL: 1.1.1k

Python deps:

urllib3==1.26.4 
requests==2.25.1
torrequest==0.1.0 # (installed from pip)

Behavior

With plain (not https) connections:

>>> import requests
>>> import torrequest
>>> requests.get('http://ipecho.net/plain').text
192.0.2.102 # My real IP
>>> tr = torrequest.TorRequest()
>>> tr.get('http://ipecho.net/plain').text
203.0.113.75 # Someone else IP

With ssl connections

>>> import requests
>>> import torrequest
>>> requests.get('http://ipecho.net/plain').text
192.0.2.102 # My real IP
>>> tr = torrequest.TorRequest()
>>> tr.get('http://ipecho.net/plain').text
192.0.2.102 # My real IP!!!
SheldonPatnett commented 3 years ago

This is due to author not setting the proper proxy type: https://github.com/erdiaker/torrequest/blob/8c1b5d0b90bbc5f302cc624a8ae61545542b99f4/torrequest.py#L29 socks5 should be socks5h.

Here is a temporary work around:

import torrequest tr = torrequest.TorRequest()

tr.session.proxies.update({
     'https': 'socks5h://localhost:9050', #assuming your local proxy port is 9050
})

tr.session.get('https://ipecho.net/plain').text