Ошибка прокси в requests Python

phone = input("Номер: ") 

phone = str(phone)

proxies = {
    'http':'185.221.160.60:80',
    'https':'185.221.160.60:80'
}

reffer_list=[
    'https://stackoverflow.com/',
    'https://twitter.com/',
    'https://www.google.co.in/',
    'https://gem.gov.in/']

while True:
    cl1 = requests.session()
    cl1.get('https://api.litres.ru/foundation/api/auth/send-otp')
    rSL1 = requests.post('https://api.litres.ru/foundation/api/auth/send-otp', 
proxies=proxies, headers = {"Content-Type":"application/json", "Referer": random.choice(reffer_list), "Sec-Fetch-Mode":"cors", "User-Agent": random.choice(agent)}, 
json= {'phone': phone})
    print(rSL1.text)
Ошибка: requests.exceptions.ProxyError: HTTPSConnectionPool(host='api.litres.ru', port=443): Max retries exceeded with url: /foundation/api/auth/send-otp (Caused by ProxyError('Unable to connect to proxy', OSError('Tunnel connection failed: 400 Bad Request')))  Прокси рабочий

Ответы (1 шт):

Автор решения: Forevor Base

ошибка заключается в том, что у вас не так хранятся прокси. цитирую документацию:

Если вам нужно использовать прокси, вы можете настроить отдельные запросы с помощью аргумента proxies в любом методе запроса:

import requests

proxies = {
  'http': 'http://10.10.1.10:3128',
  'https': 'http://10.10.1.10:1080',
}

requests.get('http://example.org', proxies=proxies)

а вашем коде просто используется "http": "1.2.3.4:56". из-за этого он и проваливается. вот обновленный код, который не должен выдавать ошибок:

import requests, random

phone = input("номер: ")
proxies = {
    "http": "http://185.221.160.60:80",
}

reffers = [
    "https://stackoverflow.com/",
    "https://twitter.com/",
    "https://www.google.co.in/",
    "https://gem.gov.in/"
]

agent = [ # в коде его тут не было, поэтому я добавил его самостоятельно.
    '1',
    '2',
]

while True:
    client = requests.session()

    headers = {
        "Content-Type": "application/json",
        "Referer": random.choice(reffers),
        "User-Agent": random.choice(agent)
    }

    json = {
        "phone": phone
    }
    try:
        with client.get("https://api.litres.ru/foundation/api/auth/send-otp", proxies=proxies, headers=headers, json=json) as response:
            print(response)
    except requests.exceptions.ProxyError:
        print(f"прокси отвалился.")
    except Exception as e:
        print(e)

вместе с небольшим улучшением кода и исправления ошибки, я также добавил проверку на ошибки через try: except (я честно не знаю как это назвать по другому).

надеюсь на то, что этот ответ вам помог.

→ Ссылка