You are viewing a single comment's thread from:

RE: 파이썬으로 업비트(Upbit) 과거 시세 가져오기(1)

in #kr6 years ago

개발 글에는 추천!
업비트로 request 보낼 때 헤더를 빼고 보내면 서버에서 종종 튕겨냅니다. 아래는 제가 python에서 사용하는 헤더인데, 이걸로 하면 별 문제가 없었습니다.
headers = {'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/39.0.2171.95 Safari/537.36'}

Sort:  

저의 실력을 너무 높게 평가하시는 듯 합니다. headers를 언제 쓰는지 모르는 1인입니다. 사용 예가 있는지요?

아~ python으로 하기 계시는군요. :)
urllib로 바로 사용하시는 것도 좋지만, requests 라이브러리 사용을 추천드립니다. 더 직관적이기 때문입니다.
pip install requests

import requests
headers = {'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/39.0.2171.95 Safari/537.36'}
res = requests.get('https://crix-api-endpoint.upbit.com/v1/crix/candles/days?code=CRIX.UPBIT.BTC-SBD&count=3', headers=headers)
data = res.json()

위 코드 설명을 드리면,

  • 1라인 : 모듈 import
  • 2라인 : 헤더 설정
  • 3라인 : requests 모듈의 get 함수 사용. get함수는 get방식으로 서버에 데이터를 요구하는 것임. 첫번째 인자로 URL을 설정, headers 인자로 2라인에 설정한 header 변수 사용
  • 4라인 : 서버의 반환 데이터를 json으로 변환하여 data 변수에 적재
    입니다. ^^

헤더는 서버에 요청할 때 부가적인 정보를 담기 위해 사용합니다. 사용한 헤더는 구글 크롬에서 upbit 페이지를 열 때 서버로 보내는 내용과 동일합니다. 이러한 부가정보가 없다면 사용자가 브라우저에서 보낸 것이 아니라, tradingideas님 처럼 봇이 데이터를 긁어가는거라고 간주할 수 있겠지요. 그래서 헤더가 없으면 서버에서 일정 확률로 데이터를 반환하지 않는 것 입니다.

requests 좋은데요? 그리고 headers 정보 감사합니다. 어쩜 @tmkor님은 모르는 것이 없으세요? 회사에서 사랑받으실 듯 합니다.

Coin Marketplace

STEEM 0.19
TRX 0.14
JST 0.030
BTC 60122.55
ETH 3199.29
USDT 1.00
SBD 2.43