(참고 문서) https://docs.python-requests.org/en/latest/user/advanced/#proxies
NO_PROXY 설정하기
requests패키지는NO_PROXY환경 변수를 참조하여 프록시를 우회 한다.- Dockerfile에서
NO_PROXY환경 변수가 설정 된 경우 해당 값을 참조한다. requests패키지는 no_proxy에서 스킴(http/https)을 지원하지 않기 때문에 Dockerfile에서 스킴을 구분하여 환경 변수를 설정하더라도 구분하여 적용되지 않는다. no_proxy 환경 변수에서는 도메인, IP 주소만 인식한다.
import os
import requests
# 스킴 구분은 지원되지 않음
os.environ['NO_PROXY'] = 'http://example.com,https://secure.example.com'
# HTTP 요청
response = requests.get('http://example.com') # NO_PROXY가 적용되지 않음
print(response.status_code)
requests패키지는 no_proxy 환경 변수에서 와일드 카드를 완벽하지 지원하지 않는다. 서브 도메인을 지정할 때는 명시적으로 지정해야 한다.
import os
import requests
# 와일드카드 도메인은 완벽히 지원되지 않을 수 있음
os.environ['NO_PROXY'] = '*.example.com'
# 특정 서브도메인을 명시적으로 설정하는 것이 권장됨
os.environ['NO_PROXY'] = 'sub.example.com,another.example.com'
# HTTP 요청
response = requests.get('http://sub.example.com')
print(response.status_code)
- python 파일 내부에서 no_proxy 환경 변수를 설정하는 경우 해당 값이 우선 적용된다. 이 값은 기존 환경 변수에 추가되지 않고 덮어써진다.
- response 값에서 실제 request 요청 시 어떤 proxy를 사용하였는지 확인 할 수 있다.
response = requests.get('http://example.com')
print('Request URL:', response.url)
print('Effective proxies:', response.request.proxies)
- 사용된 no_proxy 설정은 환경 변수를 읽어서 확인할 수 있다.
no_proxy = os.environ.get('NO_PROXY', os.environ.get('no_proxy'))
print('NO_PROXY:', no_proxy)'Software Engineering > Python' 카테고리의 다른 글
| [실습 코드] 리팩토링 예제 (0) | 2025.09.20 |
|---|---|
| [streamlit] custom label 예제 (0) | 2025.06.12 |
| Sample Project - API 호출, DB 업데이트 (1) | 2024.07.08 |
| fastapi background task를 사용하여 지연 동작 수행하기 (0) | 2024.07.05 |
| mac에서 poetry 설치하기 (0) | 2024.07.02 |