vk_api icon indicating copy to clipboard operation
vk_api copied to clipboard

Проблемы при подключение к прокси

Open rabx2i opened this issue 5 years ago • 7 comments

ВКонтакте заблокирован на территории Украины. В связи с этим нужно использовать прокси. Но проблема в том, что ничего не работает. Что я делаю не так?

Окружение

vk_api: 11.8.0

API: 5.95

Пример

vk = vk_api.VkApi(token = token, api_version = 5.95)
vk.http.proxies = {"http": "http://149.28.148.91:8080", "https": "http://149.28.148.91:8080"}
longpoll = VkLongPoll(vk)

Ошибка, которая возникает

requests.exceptions.ConnectTimeout: HTTPSConnectionPool(host='im.vk.com', port=443): Max retries exceeded with url: /nim195179702?version=3&wait=25&mode=234&act=a_check&key=524ab94126f97666b8ea5256505388ecede83a25&ts=1854385594 (Caused by ConnectTimeoutError(<requests.packages.urllib3.connection.VerifiedHTTPSConnection object at 0xb6a124ac>, 'Connection to im.vk.com timed out. (connect timeout=35)'))

rabx2i avatar May 10 '20 14:05 rabx2i

Это не ошибка апи, видно же что ошибка идёт с библиотеки requests. Ваша проблема только в вашем прокси, то ли прокси сервер не включен, то ли у него нет доступа к вк. Ищите другой прокси

caseus-cattus avatar May 15 '20 15:05 caseus-cattus

Я проверил на 8 прокси и ошибка не исчезла.

rabx2i avatar May 15 '20 20:05 rabx2i

точно такая же ошибка при использовании валидных прокси. vk_session.http.proxies ={ 'http': 'http://user:password@proxyip:port, 'https': 'http://user:password@proxyip:port' } причем все обычные запросы апи работают отлично в том числе и messages (app_id spoof). но вот VkLongPool бросает ошибку как у ТС

requests.exceptions.ProxyError: HTTPSConnectionPool(host='api.vk.com', port=443): Max retries exceeded with url: /method/messages.getLongPollServer (Caused by ProxyError('Cannot connect to proxy.', RemoteDisconnected('Remote end closed connection without response'))) большая просьба сделать фикс или подсказать, где косячу

  File "/Users/mac1/PycharmProjects/TestVkApi/VkApiMain.py", line 95, in <module>
    main()
  File "/Users/mac1/PycharmProjects/TestVkApi/VkApiMain.py", line 55, in main
    for event in longpoll.listen():
  File "/Users/mac1/PycharmProjects/TestVkApi/venv/lib/python3.7/site-packages/vk_api/longpoll.py", line 621, in listen
    for event in self.check():
  File "/Users/mac1/PycharmProjects/TestVkApi/venv/lib/python3.7/site-packages/vk_api/longpoll.py", line 582, in check
    self.update_longpoll_server(update_ts=False)
  File "/Users/mac1/PycharmProjects/TestVkApi/venv/lib/python3.7/site-packages/vk_api/longpoll.py", line 531, in update_longpoll_server
    response = self.vk.method('messages.getLongPollServer', values)
  File "/Users/mac1/PycharmProjects/TestVkApi/venv/lib/python3.7/site-packages/vk_api/vk_api.py", line 612, in method
    values
  File "/Users/mac1/PycharmProjects/TestVkApi/venv/lib/python3.7/site-packages/requests/sessions.py", line 578, in post
    return self.request('POST', url, data=data, json=json, **kwargs)
  File "/Users/mac1/PycharmProjects/TestVkApi/venv/lib/python3.7/site-packages/requests/sessions.py", line 530, in request
    resp = self.send(prep, **send_kwargs)
  File "/Users/mac1/PycharmProjects/TestVkApi/venv/lib/python3.7/site-packages/requests/sessions.py", line 643, in send
    r = adapter.send(request, **kwargs)
  File "/Users/mac1/PycharmProjects/TestVkApi/venv/lib/python3.7/site-packages/requests/adapters.py", line 510, in send
    raise ProxyError(e, request=request)
requests.exceptions.ProxyError: HTTPSConnectionPool(host='api.vk.com', port=443): Max retries exceeded with url: /method/messages.getLongPollServer (Caused by ProxyError('Cannot connect to proxy.', RemoteDisconnected('Remote end closed connection without response')))

JackButland avatar May 30 '20 11:05 JackButland

@JackButland Тут скорее проблема в авторизации, у меня с авторизацией тоже не работало. Попробуйте взять с бесплатного сайта https проксю, попробуйте на нескольких. Опять же, может зависить от типа прокси, может у вас socks4/5, нужно https. upd: Ещё заметил что в вашей строчке вы в http.proxies там где https вставляете http://, это тоже вполне может быть проблемой, т.к. у http 80 порт подключения, а у https 443. Vk использует https, в этом и проблема

caseus-cattus avatar May 30 '20 15:05 caseus-cattus

Возникла аналогичная ошибка, при использовании прокси. Использовал платные прокси, которые точно работают. Прокси добавлял в таком формате:

http://login:password@proxu_ip:port

s = Session()
s.proxies = ({'http': proxy_http, 'https': proxy_https})
vk_group_token = env('VK_API_KEY')
vk_session = vk_api.VkApi(token=vk_group_token, session=s)
longpoll = VkLongPoll(vk_session)

Получаю - requests.exceptions.ConnectionError: HTTPSConnectionPool(host='im.vk.com', port=443): Max retries exceeded with url: бла-бла -бла (Caused by NewConnectionError('<urllib3.connection.HTTPSConnection object at 0x107a26df0>: Failed to establish a new connection: [Errno 61] Connection refused')

Подскажите, что я делаю не так?

ArtemVolik avatar Dec 19 '20 13:12 ArtemVolik

Так понимаю никак не решил никто?

jlik2002 avatar Mar 18 '21 14:03 jlik2002

вк работает только через https и если прокси http то апи их просто игнорирует, потому что опирается на requests, в которых https коннектится только через https. Можно проверять так:

proxies = {
        'https': 'https://адрес:порт'
    }
r = requests.get('https://icanhazip.com', proxies=proxies)
print(r.content)

Woxazu avatar Jun 15 '21 18:06 Woxazu