Connect to .onion websites on tor using python?

python, tor

Solution

Try to avoid the monkey patching if possible. If you're using modern version of requests, then you should have this functionality already.

import requests
import json

proxies = {
    'http': 'socks5h://127.0.0.1:9050',
    'https': 'socks5h://127.0.0.1:9050'
}

data = requests.get("http://altaddresswcxlld.onion",proxies=proxies).text

print(data)

It's important to specify the proxies using the `socks5h://` scheme so that DNS resolution is handled over SOCKS so Tor can resolve the `.onion` address properly.

Problem

Here is the code that i have till now ``` import socks import socket import requests import json socks.setdefaultproxy(proxy_type=socks.PROXY_TYPE_SOCKS5, addr="127.0.0.1", port=9050) socket.socket = socks.socksocket data = json.loads(requests.get("http://freegeoip.net/json/").text) ``` and it works fine. The problem is when i use a `.onion` url it shows error Failed to establish a new connection: [Errno -2] Name or service not known After researching a little i found that although the http request is made over `tor` the resolution still occours over clearnet. What is the proper way so i can also have the domain resolved over tor network to connect to `.onion` urls ?

Original source

Related problems