Как отправлять запросы через прокси?

Бекенд моего сайта расположен на сервере с ip адресом Германии, но мне нужно отправлять запросы в другие сервисы так, как будто я нахожусь в Украине.
Я подразумеваю, что можно купить прокси этой страны и как то через него работать, но как это реализовать не знаю.
В идеале, хотелось бы глобально сменить адрес, чтобы все запросы приложения по умолчанию отправлялись именно из него, но при этом сам бекенд был доступен как и раньше по адресу, который выдал мне хостинг.

Вот технологии, которые я использую:

  • python
  • django
  • nginx
  • dokku

В питоне есть отличная библиотека requests, которая частично отвечает на мой вопрос, но мне бы не хотелось к каждому запросу прописывать прокси. Возможно можно это как то глобально применить к проекту на django?

import requests
from requests.auth import HTTPProxyAuth
 
url = 'http://google.com/'
proxies = {'http': '207.164.21.34:3128'}
auth = HTTPProxyAuth('my_login', 'my_password')
 
response = requests.get(url=url, proxies=proxies, auth=auth)
response.close()
 
print(response.status_code) # 200 - good

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

Автор решения: Jack_oS

Задать прокси для requests можно словарем вида
{'http': 'http://user:pass@address:port'}:

import requests

login = 'my_login'
password = 'my_password'
address = '207.164.21.34'
port = '3128'

proxies = {
    'http': f'http://{login}:{password}@{address}:{port}',
    'https': f'https://{login}:{password}@{address}:{port}',
}

а проверить работоспособность каким-нибудь сервисом

url = 'https://ifconfig.me/all.json'

который в ответ на ваш

r = requests.get(url=url, proxies=proxies)
>>> json.loads(r.content)

вернет, среди прочего, ip, с которого пришел запрос:

{
    'ip_addr': '207.164.21.34', 
    'remote_host': 'unavailable', 
    'user_agent': 'python-requests/2.24.0', 
    'port': 55952, 
    'method': 'GET', 
    'encoding': 'gzip, deflate', 'mime': 
    '*/*', 
    'via': '1.1 google', 
    'forwarded': '207.164.21.34, 216.239.32.21'
}
→ Ссылка