본문 바로가기
AI/chatGPT

[쿠팡 API 발급 완료] 쿠팡 API + 코랩 + ChatGPT 이벤트 목록 자동으로 가져오기 - 4

by Mr.noobiest 2023. 12. 24.

1편 - API발급 전체 프로세스 구성 내용

 

 

[쿠팡 API 발급 완료]쿠팡 API + chatGPT + web으로 객관적인 1등 제품 가져오기 프로젝트 -1

아 드디어 API Get 쿠팡 파트너스를 효율적으로 활용하기 위해서는 반드시 쿠팡 파트너스 API가 필요하다. 문제는 API를 발급 받기 위해서는 일정금액 이상의 수익을 내야해서 그동안 API를 사용하

mrnoobiest.tistory.com

 

2편 - API발급 전체 프로세스 구성 내용

 

API 테스트 및 Python 코드 / ChatGPT / 24시간 업데이트 내용

 

[쿠팡 API 발급 완료]쿠팡 API + 노코드web으로 객관적인 1등 제품 가져오기 프로젝트 -2 (쿠팡 파트

[쿠팡 API 발급 완료]쿠팡 API + chatGPT + web으로 객관적인 1등 제품 가져오기 프로젝트 -1 아 드디어 API Get 쿠팡 파트너스를 효율적으로 활용하기 위해서는 반드시 쿠팡 파트너스 API가 필요하다. 문

mrnoobiest.tistory.com

 

 

3편 - Request로 가져오기

 

[쿠팡 API 발급 완료]쿠팡 API + 코랩 + ChatGPT 이벤트 목록 자동으로 가져오기 - 3

1편 - API발급 전체 프로세스 구성 내용 [쿠팡 API 발급 완료]쿠팡 API + chatGPT + web으로 객관적인 1등 제품 가져오기 프로젝트 -1 아 드디어 API Get 쿠팡 파트너스를 효율적으로 활용하기 위해서는 반

mrnoobiest.tistory.com

 


 

 

cURL Python 코드를 활용해서 x-token만들기

3편에서 개발자 도구와 cURL Python으로 쿠팡 API요청 코드를 받는 방법을 기술하였다.

실행시 아래와 같이 Python코드를 얻을 수 있다.

뭔가 굉장히 길게 나올 것이다.

 

위 코드를 실행하면 바로 이벤트 정보를 얻을 수 있다.

json 형태로 데이터를 얻을 수 있다.
이제 다 된거 아닌가요?

 

아쉽게도 위 코드는 계속 사용할 수 없다. 왜냐하면 유통기한이 있기 때문이다.

 


 

유통기한?

 

보통 API를 제공하는 사이트는 "유료로 API 기능을 제공하거나" , "특정 회원에게만 기능을 제공한다"

그런데 이런 유저들이 자신의 코드를 배포하여 "허가 받지 않는 유저나" "해킹 유저들에게" 원치 않는 정보 유출이 발생 할 수 있다.

이렇게 되면 서버 관리자는 야근에 고통 받을 것이고, API는 안정적인 서비스 제공이 어려울 것이다.

서버 관리자의 고통

 


 

서버의 Token과 사용자의 Token 비교

 

그래서 보통 서버는 로그인을 할때 특정 Token을 사용자의 session에 저장을 해서 사용자의 행동을 추적하고, 특정 기능의 사용 여부서버의 저장된 session token과 사용자의 session token을 비교 확인한 후 동일할 경우에만 기능을 제공해준다.

사용자의 Token을 확인한다.

 

이러한 Token은 1일단위나 짧게는 10분 단위로 제한하고 "연장"하거나 다시 로그인 하지 않을경우 만료되어 사용이 불가능하다. <- 자동 로그아웃을 시켜 재 로그인을 유도하거나, 오류 메시지로 알려준다.

 


 

그럼 방법이 없는 건가?

방법은 언제나 있다 우리가 모를뿐

 

방법1) 셀레니움으로 가짜 로그인해서 Token키를 업데이트 하는 방법

 

Selenium은 Python 라이브러리로 크롬을 열고, 사용자의 특정 동작을 Python 코드로 조작하여, 실제 사용자가 행동하듯이 하여 토큰을 얻는 방법이다.

가장 편한 방법이지만 "로봇 체크"나 "2중 로그인"일 경우에는 사용하기 어려운 방법이다.(물론 그것도 뚫는 방법은 많다.)

셀레니움 사용법은 차후 게시할 예정이다.

 


 

방법2) API키로 Token키를 업데이트 하는 방법

 

API 사용자는 Access Key와 Secret Key를 전달받는데 2개의 키를 사용해서 토큰을 업데이트 할 수 있다.

아래 코드를 사용하면 coupang에서 사용하는 x_token을 업데이트 할 수 있다.

import time
import jwt


accessKey = 'API 액세스 키'
secretKey = 'API 시크릿 키'
def generate_token():
    payload = {
        'access_key': accessKey,
        'timestamp': int(time.time() * 1000),
    }
    token = jwt.encode(payload, secretKey, algorithm='HS256') //알고리즘 HS256으로 json web token을 인코딩한다.
    return token

x_token = generate_token()
print(x_token)

만일 정상적으로 x_token이 뜨지 않는다면 댓글로 문의바랍니다.

 


 

X-token으로 이벤트 목록 받기

 

1) 토큰 업데이트 방법도 알았고,

2) 서버에 어떻게 요청(request)하는지와

3) request시 어떤 항복이 필요한지를

알게 되었다. 위 내용들을 모두 종합해서 아래 코드를 작성하였다.

 


 

쿠팡 현재 진행중인 이벤트 목록을 가져오는 Python 코드

 

import time
import jwt
import requests

accessKey = '액세스 키'
secretKey = '시크릿 키'

cookies = {

    'CSID': 'cURL Python로 받은 CSID',
    'CUPT': 'cURL Python로 받은 cUPT',
    'CPUSR_RL': 'cURL Python로 받은 CPUSR_RL',
}

def generate_token():
    payload = {
        'access_key': accessKey,
        'timestamp': int(time.time() * 1000),
    }
    token = jwt.encode(payload, secretKey, algorithm='HS256')
    return token

def post_event(json_data):
    headers = {
        'Authorization': 'Bearer ' + generate_token(),
        'Content-Type': 'application/json',
    }
    response = requests.post('https://partners.coupang.com/api/v1/events', cookies=cookies,headers=headers, json=json_data)
    return response.json()


json_data = {
    'page': {
        'pageNumber': 0,
        'size': 120,
    },
}




response = post_event(json_data)
print(response)

 

json 형태로 데이터를 얻을 수 있다.

 

이제 위에서 받은 eventId를 사용해서 각 이벤트의 URL를 추출하는 코드를 실행할 수 있다.

events XHR를 사용해서 정보를 가져온것 처럼, eventId를 사용해서 이벤트 url를 가져오는 방법을 실습해보길 바랍니다.

 

너무 귀찮으시다면 5편에 이어서 작성하겠습니다.

각 eventId를 사용하면 이벤트 url을 가져올 수 있다.

 

 

끝.(5편 속편)

728x90
반응형