Как отправлять запросы через прокси?
Бекенд моего сайта расположен на сервере с 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 шт):
Задать прокси для 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'
}