안녕하세요, 오늘은 파이썬 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 요청 보내는 방법을 같이 알아봤는데요.
너무 어렵게 생각하지 마시고
딕셔너리 형태로 프록시 주소만 넣어주시면 됩니다.
이상으로 간단한 설명 마치도록 하고,
도움이 되셨다면 좋겠습니다.
“어? 더 궁금한 거 있으시다고요?”
댓글로 남겨주시면
저도 최대한 빨리 확인해보고 도움이 되는 답변 드려볼게요.
자, 그럼 이번 포스팅은 여기까지고요.
다음에는 또 다른 내용으로 찾아뵐게요.
감사합니다!
'Python Requests 기초 강의' 카테고리의 다른 글
셀레니움(Selenium) 쿠키를 활용해 requests 쿠키값으로 사용하는 방법 (0) | 2025.01.06 |
---|---|
Python Requests Session 사용법, 속도와 효율 모두 잡기 (0) | 2025.01.04 |
파이썬 requests 기초 강의 proxy, user-agent 바꾸는 법 [1강/2025년 버전] (0) | 2024.12.30 |
Python requests 기초 강의 proxy, user-agent 바꾸는 법 [1강/소스코드 원문] (1) | 2024.12.30 |
Python Requests 모듈 사용법 가이드 (2) | 2024.11.07 |