pythonsockslibtorrent

Configure SOCK5 proxy in Libtorrent session (Using Python)


I have been trying to configure proxy for a libtorent session; went through the documentation yet could not figure out a solution.

I tried the approach mentioned here. Did not work for me. This is the error I got-

r = lt.proxy_settings()
AttributeError: module 'libtorrent' has no attribute 'proxy_settings'. Did you mean: 'pe_settings'?

I tried to look for pe_settings() is the documentation but could not find anything like that. Being hopeful, I decided to do as the error message suggests, hoping it would lead me to some other error(from where i can pick up). Hence, I changed lt.proxy_settings() to lt.pe_settings(). The error that I get now is-

ses.set_dht_proxy(r)
Boost.Python.ArgumentError: Python argument types in
    session.set_dht_proxy(session, pe_settings)
did not match C++ signature:
    set_dht_proxy(libtorrent::session {lvalue}, libtorrent::aux::proxy_settings)

Mismatch in argument while trying to call the setters.

I also tried to use settings_pack. That did not work as well.

Here is what the session configuration looks like-

ses = lt.session()
ses.listen_on(6881, 6891)
r = lt.pe_settings()
r.proxy_hostnames = True
r.proxy_peer_connections = True
r.hostname = self.proxy_ip
r.username = ""
r.password = ""
r.port = self.proxy_port
r.type = lt.proxy_type_t().socks5_pw
#print lt.proxy_type().socks5_pw
#ses.set_dht_proxy(r)
#ses.set_peer_proxy(r)
#ses.set_tracker_proxy(r)
#ses.set_web_seed_proxy(r)
ses.set_proxy(r)
t = ses.settings()
t.force_proxy = True
t.proxy_hostnames = True
t.proxy_peer_connections = True
#t.proxy_tracker_connections = True
t.anonymous_mode = True
ses.set_settings(t)
print (ses.get_settings())
#ses.dht_proxy()
ses.peer_proxy()
#ses.tracker_proxy()
ses.web_seed_proxy()
ses.proxy()
ses.set_settings(t)

Any suggestions/ comments/ insights will be highly appreciated! Thanks!

Versions and platforms-

 1. python 3.9
 2. libtorrent 2.0.7 (installed it using vcpkg dependency manager)
 3. mac os- Monterey


Solution

  • you configure the proxy via the same settings_pack all other session-wide settings are configured via. Specifically you want to set:

    proxy_hostname proxy_port proxy_type

    Maybe proxy_username and proxy_password (docs)