From f047bb6db31603ff2a9adbba5555ef9df032fef7 Mon Sep 17 00:00:00 2001 From: Alex Root Junior Date: Thu, 19 Apr 2018 03:28:34 +0300 Subject: [PATCH] Implemented support of Socks5 Proxy --- aiogram/bot/base.py | 16 ++++++++++++---- dev_requirements.txt | 3 ++- 2 files changed, 14 insertions(+), 5 deletions(-) diff --git a/aiogram/bot/base.py b/aiogram/bot/base.py index 56f56caa..f7e4ba83 100644 --- a/aiogram/bot/base.py +++ b/aiogram/bot/base.py @@ -58,10 +58,18 @@ class BaseBot: # aiohttp main session ssl_context = ssl.create_default_context(cafile=certifi.where()) - connector = aiohttp.TCPConnector(limit=connections_limit, ssl_context=ssl_context, - loop=self.loop) - self.session = aiohttp.ClientSession(connector=connector, loop=self.loop, - json_serialize=json.dumps) + + if isinstance(proxy, str) and proxy.startswith('socks5://'): + from aiosocksy.connector import ProxyClientRequest, ProxyConnector + connector = ProxyConnector(limit=connections_limit, ssl_context=ssl_context, loop=self.loop) + request_class = ProxyClientRequest + else: + connector = aiohttp.TCPConnector(limit=connections_limit, ssl_context=ssl_context, + loop=self.loop) + request_class = aiohttp.ClientRequest + + self.session = aiohttp.ClientSession(connector=connector, request_class=request_class, + loop=self.loop, json_serialize=json.dumps) # Temp sessions self._temp_sessions = [] diff --git a/dev_requirements.txt b/dev_requirements.txt index 469056b8..a66ce75d 100644 --- a/dev_requirements.txt +++ b/dev_requirements.txt @@ -11,4 +11,5 @@ rethinkdb>=2.3.0 sphinx>=1.7.2 sphinx-rtd-theme>=0.3.0 aresponses>=1.0.0 -tox>=3.0.0 \ No newline at end of file +tox>=3.0.0 +aiosocksy>=0.1