From: Oleg Broytman Date: Sat, 8 Mar 2025 22:04:05 +0000 (+0300) Subject: Feat(bkmk_rtwisted): HTTP proxy X-Git-Url: https://git.phdru.name/?a=commitdiff_plain;h=c82af9bdb50901487655fa40fcc8dcba9a81b29c;p=bookmarks_db.git Feat(bkmk_rtwisted): HTTP proxy --- diff --git a/Robots/bkmk_rtwisted.py b/Robots/bkmk_rtwisted.py index 287975c..0a4616f 100644 --- a/Robots/bkmk_rtwisted.py +++ b/Robots/bkmk_rtwisted.py @@ -10,11 +10,13 @@ __license__ = "GNU GPL" __all__ = ['robot_twisted'] +from urllib.parse import urlsplit import threading import time from twisted.internet import reactor, _sslverify -from twisted.web.client import Agent, readBody +from twisted.internet.endpoints import TCP4ClientEndpoint +from twisted.web.client import Agent, ProxyAgent, readBody from twisted.web.http_headers import Headers import twisted @@ -41,7 +43,14 @@ class robot_twisted(robot_base): self.welcome = welcome return None, None, None, body - agent = Agent(reactor, connectTimeout=self.timeout) + if use_proxy: + split_proxy = urlsplit(self.proxy) + proxy_host = split_proxy.hostname + proxy_port = split_proxy.port + endpoint = TCP4ClientEndpoint(reactor, proxy_host, proxy_port) + agent = ProxyAgent(endpoint, reactor) + else: + agent = Agent(reactor, connectTimeout=self.timeout) url = encode_url(url).encode('ascii') _headers = {k: [v] for k, v in req_headers.items()} self.response = self.error = self.body = None