import xmlrpc.client, http.client class ProxiedTransport(xmlrpc.client.Transport): def set_proxy(self, proxy): self.proxy = proxy def make_connection(self, host): self.realhost = host h = http.client.HTTPConnection(self.proxy) return h def send_request(self, host, handler, request_body, debug): connection = self.make_connection(host) headers = [ ("Content-Type", "text/xml"), ("User-Agent", self.user_agent), ("Host", self.realhost), ] connection.putrequest("POST", 'http://%s%s' % (self.realhost, handler)) self.send_headers(connection, headers) self.send_content(connection, request_body) return connection p = ProxiedTransport() p.set_proxy('YOUR_PROXY') server = xmlrpc.client.ServerProxy('http://betty.userland.com/RPC2', verbose=True, transport=p) print(server.examples.getStateName(41))