Telegram BOT не работает вообще ни с какими прокси
Мой код
from telebot import TeleBot, apihelper
from requests import get
from random import choice
def get_proxy():
return {"http":"socks5://"+choice(get("https://www.proxy-list.download/api/v1/get?type=socks5&country=US").content.split(b"\r\n")).decode()}
apihelper.proxy = get_proxy()
bot = TeleBot("XXXXXXXXXXXXXXXXTOKENXXXXXXXXXXX")
@bot.message_handler(content_types=['text'])
def send_text(message):
if message.text.lower() == "/start":
bot.send_message(message.chat.id, "Help.")
while 1:
try:
bot.polling()
except Exception as error:
apihelper.proxy = get_proxy()
Как можно заметить, при возникновении ошибки, я запрашиваю прокси с сайта, и добавляю новый прокси в apihelper, но это вообще не решает проблему.
Примечание: прокси не работает не только с sosck5, поначалу я пробовал https, потом http, а потом поставил pysocks и пробовал носки.
Ошибка
2020-02-13 03:36:56,220 (util.py:65 PollingThread) ERROR - TeleBot: "ConnectionError occurred, args=(ProtocolError('Connection aborted.', ConnectionResetError(10054, 'Удаленный хост принудительно разорвал существующее подключение', None, 10054, None)),)
Traceback (most recent call last):
File "C:\Users\xorke\AppData\Local\Programs\Python\Python37-32\lib\site-packages\urllib3\connectionpool.py", line 600, in urlopen
chunked=chunked)
File "C:\Users\xorke\AppData\Local\Programs\Python\Python37-32\lib\site-packages\urllib3\connectionpool.py", line 343, in _make_request
self._validate_conn(conn)
File "C:\Users\xorke\AppData\Local\Programs\Python\Python37-32\lib\site-packages\urllib3\connectionpool.py", line 839, in _validate_conn
conn.connect()
File "C:\Users\xorke\AppData\Local\Programs\Python\Python37-32\lib\site-packages\urllib3\connection.py", line 344, in connect
ssl_context=context)
File "C:\Users\xorke\AppData\Local\Programs\Python\Python37-32\lib\site-packages\urllib3\util\ssl_.py", line 344, in ssl_wrap_socket
return context.wrap_socket(sock, server_hostname=server_hostname)
File "C:\Users\xorke\AppData\Local\Programs\Python\Python37-32\lib\ssl.py", line 412, in wrap_socket
session=session
File "C:\Users\xorke\AppData\Local\Programs\Python\Python37-32\lib\ssl.py", line 853, in _create
self.do_handshake()
File "C:\Users\xorke\AppData\Local\Programs\Python\Python37-32\lib\ssl.py", line 1117, in do_handshake
self._sslobj.do_handshake()
ConnectionResetError: [WinError 10054] Удаленный хост принудительно разорвал существующее подключение
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "C:\Users\xorke\AppData\Local\Programs\Python\Python37-32\lib\site-packages\requests\adapters.py", line 449, in send
timeout=timeout
File "C:\Users\xorke\AppData\Local\Programs\Python\Python37-32\lib\site-packages\urllib3\connectionpool.py", line 638, in urlopen
_stacktrace=sys.exc_info()[2])
File "C:\Users\xorke\AppData\Local\Programs\Python\Python37-32\lib\site-packages\urllib3\util\retry.py", line 367, in increment
raise six.reraise(type(error), error, _stacktrace)
File "C:\Users\xorke\AppData\Local\Programs\Python\Python37-32\lib\site-packages\urllib3\packages\six.py", line 685, in reraise
raise value.with_traceback(tb)
File "C:\Users\xorke\AppData\Local\Programs\Python\Python37-32\lib\site-packages\urllib3\connectionpool.py", line 600, in urlopen
chunked=chunked)
File "C:\Users\xorke\AppData\Local\Programs\Python\Python37-32\lib\site-packages\urllib3\connectionpool.py", line 343, in _make_request
self._validate_conn(conn)
File "C:\Users\xorke\AppData\Local\Programs\Python\Python37-32\lib\site-packages\urllib3\connectionpool.py", line 839, in _validate_conn
conn.connect()
File "C:\Users\xorke\AppData\Local\Programs\Python\Python37-32\lib\site-packages\urllib3\connection.py", line 344, in connect
ssl_context=context)
File "C:\Users\xorke\AppData\Local\Programs\Python\Python37-32\lib\site-packages\urllib3\util\ssl_.py", line 344, in ssl_wrap_socket
return context.wrap_socket(sock, server_hostname=server_hostname)
File "C:\Users\xorke\AppData\Local\Programs\Python\Python37-32\lib\ssl.py", line 412, in wrap_socket
session=session
File "C:\Users\xorke\AppData\Local\Programs\Python\Python37-32\lib\ssl.py", line 853, in _create
self.do_handshake()
File "C:\Users\xorke\AppData\Local\Programs\Python\Python37-32\lib\ssl.py", line 1117, in do_handshake
self._sslobj.do_handshake()
urllib3.exceptions.ProtocolError: ('Connection aborted.', ConnectionResetError(10054, 'Удаленный хост принудительно разорвал существующее подключение', None, 10054, None))
Ответы (1 шт):
Автор решения: D. Violet
→ Ссылка
socks5 не может быть http
внесите изменения в функции get_proxy: return {"https": "socks5h://" + choice
я проверил ваш код с изменением на https и socks5h - всё работает