This commit is contained in:
Arslan Sakhapov 2018-04-24 15:13:21 +00:00 committed by GitHub
commit 754de98864
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
5 changed files with 54 additions and 4 deletions

View file

@ -20,7 +20,7 @@ else:
asyncio.set_event_loop_policy(uvloop.EventLoopPolicy())
VERSION = Version(1, 3, 0, stage=Stage.DEV, build=0)
VERSION = Version(1, 3, 0, stage=Stage.FINAL, build=0)
API_VERSION = Version(3, 6)
__version__ = VERSION.version

View file

@ -8,7 +8,7 @@ uvloop>=0.9.1
aioredis>=1.1.0
wheel>=0.31.0
rethinkdb>=2.3.0
sphinx>=1.7.2
sphinx>=1.7.3
sphinx-rtd-theme>=0.3.0
aresponses>=1.0.0
tox>=3.0.0

View file

@ -10,12 +10,13 @@ from aiogram.utils.markdown import bold, code, italic, text
# Configure bot here
API_TOKEN = 'BOT TOKEN HERE'
PROXY_URL = 'http://PROXY_URL'
PROXY_URL = 'http://PROXY_URL' # Or 'socks5://...'
# If authentication is required in your proxy then uncomment next line and change login/password for it
# PROXY_AUTH = aiohttp.BasicAuth(login='login', password='password')
# And add `proxy_auth=PROXY_AUTH` argument in line 25, like this:
# >>> bot = Bot(token=API_TOKEN, loop=loop, proxy=PROXY_URL, proxy_auth=PROXY_AUTH)
# Also you can use Socks5 proxy but you need manually install aiosocksy package.
# Get my ip URL
GET_IP_URL = 'http://bot.whatismyipaddress.com/'

49
examples/socks_proxy.py Normal file
View file

@ -0,0 +1,49 @@
import asyncio
import logging
from aiohttp import ClientSession
from aiosocksy.connector import ProxyConnector, ProxyClientRequest
from aiogram import Bot, types
from aiogram.dispatcher import Dispatcher
from aiogram.types import ParseMode
from aiogram.utils.executor import start_polling
from aiogram.utils.markdown import bold, code, italic, text
# Configure bot here
API_TOKEN = '<BOT TOKEN>'
PROXY_URL = 'socks5://...'
# If authentication is required in your proxy then uncomment next line and change login/password for it
# PROXY_AUTH = aiosocksy.Socks5Auth(login='login', password='password')
# And add `proxy_auth=PROXY_AUTH` argument in line 25, like this:
# >>> bot = Bot(token=API_TOKEN, loop=loop, proxy=PROXY_URL, proxy_auth=PROXY_AUTH)
# Get my ip URL
GET_IP_URL = 'http://bot.whatismyipaddress.com/'
logging.basicConfig(level=logging.INFO)
loop = asyncio.get_event_loop()
bot = Bot(token=API_TOKEN, loop=loop, proxy=PROXY_URL, proxy_auth=PROXY_AUTH)
dp = Dispatcher(bot)
@dp.message_handler(commands=['start'])
async def cmd_start(message: types.Message):
content = []
# Make request (without proxy)
async with ClientSession() as session:
async with session.get(GET_IP_URL) as response:
content.append(text('🌎', bold('IP:'), code(await response.text())))
# Make request through proxy
async with ClientSession(connector=ProxyConnector(), request_class=ProxyClientRequest) as session:
async with session.get(GET_IP_URL, proxy=bot.proxy, proxy_auth=bot.proxy_auth) as response:
content.append(text('🔐', bold('IP:'), code(await response.text()), italic('via proxy')))
await bot.send_message(message.chat.id, text(*content, sep='\n'), parse_mode=ParseMode.MARKDOWN)
if __name__ == '__main__':
start_polling(dp, loop=loop, skip_updates=True)

View file

@ -1,3 +1,3 @@
aiohttp>=3.1.3
Babel>=2.5.3
certifi>=2018.01.18
certifi>=2018.4.16