본문 바로가기
Python Requests 기초 강의

Python requests 기초 강의 proxy server 사용하는 방법 [2강/2025년]

by 파이썬코딩실험실 2024. 12. 31.

안녕하세요, 오늘은 파이썬 Requests 모듈을 이용해서

프록시 서버를 사용하는 방법을 함께 알아보겠습니다.

제가 요 글을 쓴 이유는, 많은 분들이 “어, 이거 프록시 쓰려면 어떻게 해야 되지?”

하고 찾아보시더라고요. (사실 제가 찾다찾다 안 보여서 이렇게 글씁니다)

그래서 제가 간단한 예제 코드와 함께 소개해 드리려고 합니다.

​

​

1. Requests 모듈 설치

내장 모듈아니면 무조건 pip install로 설치해야합니다

​

일단 Requests 모듈부터 설치해 보셔야 합니다.

pip install requests

명령어로 간단하게 설치하실 수 있고요.

​

“어? 이미 설치되어 있다고요?”

그러면 굳이 다시 설치 안 하셔도 됩니다.

요 부분은 넘어가 주시면 되고요.

​

2. 기본적인 Requests 사용법

​

Requests로 HTTP 요청 보내는 코드, 워낙 유명하잖아요.

다들 한 번쯤 사용해 보셨을 것 같습니다 ㅇㅇ..

예를 들어서 이런 식으로 파이썬 코드 스크립트를 작성하실 수 있습니다:

import requests

response = requests.get("https://httpbin.com/get")
print(response.text)

response.text에 응답 내용,

즉 페이지의 HTML 텍스트 내용을 출력해 주죠.

​

3. 프록시 서버 설정하기

​

“그럼 이제 프로시 서버를 어떻게 연결하느냐?”

Requests에서 제공하는 proxies 파라미터를 이용해 주시면 됩니다.

​

예시 코드를 한번 보시면:

​

import requests

# 사용할 프록시 서버 정보
proxies = {
'http': 'http://아이피주소:포트번호',
'https': 'http://아이피주소:포트번호'
}

url = "https://ipinfo.io/json"

response = requests.get(url, proxies=proxies)
print(response.status_code)
print(response.text)

​

요렇게 proxies 딕셔너리를 준비해 주시고

requests.get 메소드에 proxies=proxies 파라미터만 넣어주시면 끝!

​

여기서 'http'와 'https' 부분에

각각 프록시 서버 주소 넣어주시면 됩니다.

“근데 어떤 프록시 쓰면 좋나요?” 하고 물으실 수 있는데,

 

뭐 유료 프록시도 있고요, 무료 공개 프록시도 있습니다.

무료 프록시 중에는 살아있는 게 별로 없을 때도 많으니

되도록이면 신뢰할 만한 서비스를 쓰시는 걸 추천드립니다.

​

4. 예외 상황: HTTPS와 SSL 검증

​

Requests로 HTTPS 요청을 보내실 때, 간혹

SSL 인증서 문제가 뜰 때도 있어요.

이 경우엔 verify=False 옵션을 쓰셔도 되는데,

보안에 민감하신 분들은 꼭 인증서 관련해서

주의 깊게 살펴보셔야 합니다.

​

 
import requests

proxies = {
'http': 'http://아이피주소:포트번호',
'https': 'http://아이피주소:포트번호'
}

# SSL 검증 비활성화 (안전하지 않을 수 있음)
response = requests.get("https://ipinfo.io/json",
    proxies=proxies,
    verify=False
)
print(response.text)
 

​

“어? verify=False 하면 그냥 무조건 괜찮아요?”

이건 아니니

프록시 서버 쪽에서도 인증서 잘 발급받은 건지

꼭 확인하셔야 됩니다.

​

5. Session 객체로 좀 더 편하게 쓰기

​

Requests 쓸 때, 세션(Session) 객체를 쓰면

쿠키나 헤더 등을 자동으로 관리할 수 있어서 편리합니다.

프록시 설정 또한 세션 객체에 저장해 놓을 수 있어요.

import requests

session = requests.Session()

proxies = {
'http': 'http://아이피주소:포트번호',
'https': 'http://아이피주소:포트번호'
}

session.proxies.update(proxies)

url = "https://example.com"
response = session.get(url)
print(response.text)

​

이렇게 하면 session 객체에서 나가는 모든 요청이

자동으로 해당 프록시 서버를 거쳐가게 됩니다.

​

 

6. 여러 프록시를 랜덤하게 돌려쓰기?

“프록시 1개 쓰면 막히는 경우도 있는데?”

그렇죠, 뭐 크롤링 많이 하다 보면

내 컴퓨터 아이피가 차단 당할 수도 있잖아요....

​

그럴 땐 여러 개 프록시 리스트를 준비해 두고

요렇게 랜덤하게 돌려가며 쓰실 수도 있어요.

 

import requests
import random

proxy_list = [
'http://아이피1:포트',
'http://아이피2:포트',
'http://아이피3:포트'
]

url = "https://example.com"

for _ in range(5):
# 랜덤하게 프록시 하나 뽑기
proxy_url = random.choice(proxy_list)
proxies = {
    'http': proxy_url,
    'https': proxy_url
}
response = requests.get(url, proxies=proxies)
print(response.status_code)

​

이렇게 하면 매번 요청마다 다른 프록시를 쓰게 되니까

상대적으로 차단 위험을 줄일 수 있습니다.

​


정리하자면

 

Requests 모듈에선 proxies 파라미터 딕셔너리로

프록시 설정을 할 수 있다.

세션(Session) 객체에 넣어서 편하게 쓸 수도 있다.

여러분이 직접 프로덕션 레벨에서 돌리시는 경우엔

프록시 안정성(죽은 프록시인지 아닌지),

SSL 인증서, 보안, 그리고 속도 같은 것도

신경 써주셔야 됩니다.

​

​

네, 이번 글에서는 파이썬으로 프록시 서버 경유해서

HTTP 요청 보내는 방법을 같이 알아봤는데요.

너무 어렵게 생각하지 마시고

딕셔너리 형태로 프록시 주소만 넣어주시면 됩니다.

이상으로 간단한 설명 마치도록 하고,

도움이 되셨다면 좋겠습니다.

​

​

“어? 더 궁금한 거 있으시다고요?”

댓글로 남겨주시면

저도 최대한 빨리 확인해보고 도움이 되는 답변 드려볼게요.

​

자, 그럼 이번 포스팅은 여기까지고요.

다음에는 또 다른 내용으로 찾아뵐게요.

감사합니다!