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

파이썬 requests 기초 강의 proxy, user-agent 바꾸는 법 [1강/2025년 버전]

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

파이썬 requests 라이브러리에 대해서 깊게 알려주는 강의들이 없길래

제가 외주개발하면서 자주 사용하는 requests 모듈 '기초' 강의를 만들고 있습니다.

​

단순히 requests.get(url) 코드만 사용하시던 분들에게

requests 고급(?) 사용법을 알려드리겠습니다

​


​

 

 

 

 

 

 

이 글에서 requests 이해를 높이기 위해 HTTP Basic API를 제공해주는 서비스를 사용하겠습니다

https://httpbin.org/

 

​

​

​

1. Requests 모듈의 근본 GET 요청부터 해볼까요?

requests.get(url) 100번 쯤 해본 사람은 이거 안 읽으셔도 됨

 

 

response.json() 코드의 장점은 파이썬에서 바로 사용할 수 있는 dictionary 자료구조 형태로 response 값을 만들어 줍니다.

​

​

2. Requests GET 요청 Parameter, Query String 전달하는법

하나하나 url에 직접 입력하지마셔유..

import requests

# 2. Requests GET 요청에서 Parameter, Query String
# name=hello&data=world
params = {"name":"hello","data":"world"} # dictionary 형태로 만들어서
response = requests.get("https://httpbin.org/get", params=params) #여기 넣어주면 끗

print(response.url) #여기에 쿼리 스트링이 붙어있는 url을 바로 확인 가능
print(response.json()['url'])

 

name=hello&data=world라는 쿼리 스트링으로 Parameter를 만들고 싶을 때는 'params'이름의 파라미터를 사용해주세요. dictionary 형태로 쿼리 스트링을 만들어서 params 이름으로 전달해주시면 됩니다.

​

내가 만든 url이 제대로 잘 만들어졌는지 확인하는 방법은

response.url을 출력해보시면됩니다 ! (so easy)

​

​

3. Requests POST data 보내는 방법​

import requests

# 3. Requests POST 요청
payload = {"name":"hello","data":"world"}
response = requests.post("https://httpbin.org/post",data=payload)

json_data = response.json()
import json

print(json.dumps(json_data,indent=4))

​

json 데이터 예쁘게 보여주려면 import json해서,
json.dumps(json_data) 넣어주시면 됩니다.

terminal 창에서 예쁘게 나와용.

 

4. Requests 헤더의 User Agent 변경하는 방법

코드 1줄이면 됩니다. 이거 안 넣어서 scraping할때 response 차단되는 경우 많어요

 

 

import requests

# 4. Requests Header수정 User-Agent 수정
headers = {"User-Agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/131.0.0.0 Safari/537.36"}
response = requests.get("https://httpbin.org/user-agent",headers=headers)

useragent = response.text
print(useragent)

 

어때요 간단하죠? 단, 주의하실점은 headers 파라미터에 꼭 'User-Agent' 글자 그대로 대문자를 잘 넣어주세요. headers 파라미터에 유저 에이전트뿐만 아니라 다양한 값들을 변경할 수 있습니다

​

밑에 보면 Accept-Language나 Cookie도 직접 바꿀수있는데, 쿠키는 또 cookies 파라미터를 전달할 수 있게 되어있습니다

​

some_cookie = {"key":"value"} # 이렇게 Dictionary 형태로 전달하면 됨
response = requests.get("https://httpbin.org/user-agent",cookies=some_cookie)

​

Ctrl + Shift + I 누르시면 크롬 개발자도구가 나오는데요(엣지건, 파이어폭스건 단축키는 똑같음)

Chrome Network 탭에서

아무 request나 클릭해서 Headers 들어가시면 확인 됩니다

​

[전체화면 모습]

 

​

​

​

5. Requests timeout 설정하는 방법

 

 
import requests

# 5. Requests timeout 설정하는 방법
# Requests default timeout 값이 None, Pending
# 나 3초만 기다리겠다
try:
    response = requests.get("https://httpbin.org/delay/5",timeout=3)
    print(response.text)
except Exception as e:
    print("타임아웃 3초 지남", e)

 

requests 모듈의 timeout 디폴트 값은 None입니다

이게 뭔말이냐?

connection이 끊어지는게 아니면, 무한으로 기다린다는 뜻입니다 ㅋ

​

requests 데이터 가지고 올때 무한으로 기다릴 수 없으니

​

프록시 서버를 쓰는지, 해당 웹 페이지 로딩 속도는 어느정도인지 종합적으로 고려해서 적절한 timeout값을 넣어주면 되겠습니다 ㅇㅇ

​

​

​

# 6. Requests Proxy 서버 사용하는 방법

 

import requests

proxy_server_url = "27.79.214.215:16000" #이거 지금 글 읽고 있으신분 컴퓨터에선 작동 안 될 수 있음 왜냐하면
proxies = {
    'http':proxy_server_url,
    "https":proxy_server_url
}
response = requests.get("https://httpbin.org/get", proxies=proxies)
json_data = response.json()
import json

print(json.dumps(json_data,indent=4))

​

 

Proxy 서버를 사용해서 requests 요청을 날리는 기본 코드입니다. So Easy

​

proxy_server_url 사용할 때 주의하셔야할 점은

2024년 12월 30일 기준으로 해당 프로시 서버는 작동하고 있는데,

무료 프록시 서버 리스트는 계속해서 바뀝니다.

​

(아니, 그러면 개발할 때 마다

프록시 서버 IP랑 포트번호를 찾아야하잖아욧!!)

ㄴㄴ 그렇진 않아요

​

다음번 글(영상)에서는 무료 프록시 리스트를

1. Requests 모듈을 사용해 scraping해와서

2. 유요한 proxy server인지, 사용가능한 프록시 서버인지 체크해주는

​

파이썬 스크립트를 만들어보겠습니다 !

​

다음번 글도 기대해주세요 !

​

​

​

이번 글에서 사용된 코드 원본 필요하신분? 글 보러가기

 

Python requests 기초 강의 proxy, user-agent 바꾸는 법 [1강/소스코드 원문]

1강 소스코드 자료입니다. import requests# 1. Requests Get 요청response = requests.get("https://httpbin.org/get")print(response.text)print(response.json())print(type(response.text), type(response.json()))print(response.json()['url'], response.j

pythoncodinguniversity.tistory.com