Python 요청에서 쿠키 사용

Salman Mehmood 2023년6월21일
  1. requests.get()을 사용하여 Python에서 쿠키 가져오기
  2. Session() 클래스를 사용하여 로그인 후 페이지 연결 유지
Python 요청에서 쿠키 사용

이 튜토리얼은 Python에서 cookies 매개변수의 도움으로 쿠키를 얻기 위해 requests.get()을 사용하는 방법과 로그인이 필요한 특정 웹 페이지에 액세스하는 방법을 보여줍니다.

또한 requests.Session()을 사용하여 해당 페이지와 연결된 상태를 유지하는 방법도 배웁니다.

requests.get()을 사용하여 Python에서 쿠키 가져오기

requests 라이브러리를 사용하면 서버에서 HTTP 쿠키를 만들고 읽을 수 있습니다. MDN 문서에 따르면 쿠키는 “서버가 사용자의 웹 브라우저에 보내는 작은 데이터 조각"입니다.

쿠키를 브라우저에 저장하고 서버로 다시 보낼 수 있습니다. 쿠키는 일반적으로 다음 목적 중 하나를 제공합니다.

  • 로그인을 위한 세션 관리
  • 쇼핑 카트
  • 사용자 개인화 또는 사용자 행동 추적

이 섹션에서는 쿠키를 사용하는 방법을 설명하고 다음 섹션에서는 첫 번째 목적(로그인을 위한 세션 관리)을 사용합니다.

requests 라이브러리를 사용하여 쿠키를 보내고 받으려면 requests를 가져오는 것으로 시작합니다. 가져오기 후에 URL이라는 변수를 설정하여 링크를 문자열로 전달합니다.

URL은 우리가 서버로 보낸 쿠키 정보를 볼 수 있는 간단한 응답 본문을 제공하기 때문에 사용합니다. 예를 들어 사용자의 위치에 따라 사용자 경험을 맞춤화하고 싶다고 가정해 보겠습니다.

이렇게 하면 사용자가 주소를 입력하지 않고도 제품에 대한 배송 견적을 제공할 수 있습니다. 이를 위해 당사는 쿠키에 있는 사용자의 위치를 알도록 요청하고 동의하는 경우 해당 정보를 쿠키에 저장합니다.

이 이벤트에서 받은 콘텐츠를 모방하기 위해 location 키와 New York 값을 사용하여 CK라는 사전을 선언합니다.

다음으로 응답 개체 response를 선언하고 requests.get() 메서드를 사용하여 설정합니다. 첫 번째 매개변수로 URL 변수를 입력하고 CK 사전과 동일하게 설정될 cookies 키워드를 입력합니다.

이제 요청이 설정되었으므로 response.text를 사용하여 응답 객체의 텍스트를 인쇄할 수 있습니다. 스크립트가 실행되면 방금 보낸 쿠키가 응답 본문 내에 있음을 알 수 있습니다.

import requests

URL = "https://httpbin.org/cookies"
CK = {"location": "New York"}
response = requests.get(URL, cookies=CK)
print(response.text)

출력:

{
  "cookies": {
    "location": "New York"
  }
}

서버에서 쿠키를 수신하기 위해 Google 웹사이트에 이미 설정된 쿠키를 사용합니다.

Session() 클래스를 사용하여 로그인 후 페이지 연결 유지

브라우저의 검사 요소 도구를 사용하여 로그인 요청이 전송된 위치를 확인하고 프로그램에서 이를 모방할 수 있습니다. 그리고 세션 부분을 사용하면 로그인 뒤에 있는 모든 페이지에 계속 액세스할 수 있습니다.

코드를 작성하기 전에 몇 가지 작업을 수행해야 합니다. 그러나 URL 로그인을 찾고 해당 post 요청과 함께 전송되는 매개변수를 확인해야 합니다.

로그인 자격 증명이 필요하므로 더미 사이트를 사용하고 있기 때문에 이 예에서는 로그인 정보를 공유할 것입니다.

사용자 이름비밀번호가 필요한 간단한 로그인 양식이 있습니다. 주어진 정보를 사용하여 로그인하면 로그인되고 보안 영역이 확보됩니다.

검사 요소를 사용하고 네트워크 탭으로 이동하여 요청 및 응답을 볼 수 있습니다. 여기에서 로그인 버튼을 클릭하면 여러 요청이 팝업되는 것을 볼 수 있습니다.

페이지에 로그인하기 전에 네트워크 탭에서 모든 것을 볼 수 있도록 보존 로그를 확인해야 합니다. 인증 요청을 연 후 몇 가지 정보를 얻을 수 있으며 그 중 하나는 게시 요청입니다.

post 요청은 웹 브라우저에서 서버로 보내는 요청이고 get 요청은 게시되고 있는 URL을 찾기 위해 돌아오는 정보입니다.

Python 스크립트에서 post 요청을 보낼 것이기 때문에 post 요청 URL을 복사합니다. 페이로드에서 양식 데이터를 찾을 수 있습니다.

때로는 payload 내에서 더 많은 정보를 찾을 수 있으므로 모든 매개변수가 post 요청과 함께 이동하는지 확인해야 합니다.

그러나 우리의 경우 사용자 이름비밀번호만 있는 것을 볼 수 있습니다. 따라서 로그인 후 보안 페이지로 다시 이동했으며 이것이 get 요청입니다. secure 응답을 사용하여 Python 스크립트에서 사용할 URL 요청을 복사합니다.

python 요청에 쿠키 사용 - 출력

이제 코드 편집기로 이동하여 코드 작성을 시작합니다. 항상 그렇듯이 가장 먼저 해야 할 일은 요청 가져오기이며 게시 요청에 대한 로그인 URL을 설정하고 get 요청에 대한 URL.

이제 post() 메서드를 호출하여 usernamepassword를 전송하고 서버에서 인증을 받아야 합니다. 이를 위해서는 ACCESS_DATA라는 사전을 사용하여 일부 payload를 보내야 합니다.

우리는 Login_Dummy_web() 내부의 코드를 래핑하고 data.py라는 또 다른 파이썬 파일을 생성했습니다.

data 파일을 가져온 후 함수를 호출하고 보안 페이지의 RESULT.text를 반환하는 동안 이 파일에서 usernamepassword에 액세스했습니다.

get() 메서드를 사용하여 보안 페이지로 돌아가도록 합시다. 인증되지 않았기 때문에 로그인 페이지로 다시 보내드립니다.

import requests
import data


def Login_Dummy_web(username, password):
    LOGIN_URL = "https://the-internet.herokuapp.com/authenticate"
    SECURE_URL = "https://the-internet.herokuapp.com/secure"

    ACCESS_DATA = {"username": username, "password": password}

    RESULT = requests.post(LOGIN_URL, data=ACCESS_DATA)
    RESULT2 = requests.get(SECURE_URL)
    return RESULT2.text


print(Login_Dummy_web(data.username, data.password))

출력:

python 요청에 쿠키 사용 - 로그인 페이지

우리는 이미 post() 메서드를 사용하여 로그인했지만 여전히 세션이 없기 때문에 보안 페이지를 보내는 데 사용을 거부합니다. 세션을 통해 특정 웹사이트에 대한 쿠키를 유지할 수 있습니다. 보안 페이지를 얻으려면 requests.Session()을 사용해야 합니다.

with 키워드를 사용하여 컨텍스트 관리자를 사용합니다. 컨텍스트 관리자는 연결 상태를 유지하고 남아 있는 동안 로그인 상태를 유지할 수 있기 때문에 편리합니다.

이제 ss라는 세션 변수에서 get()post() 메소드를 호출해야 합니다. 이제 Session() 클래스에서 액세스하고 있기 때문입니다.

import requests
import data


def Login_Dummy_web(username, password):
    LOGIN_URL = "https://the-internet.herokuapp.com/authenticate"
    SECURE_URL = "https://the-internet.herokuapp.com/secure"

    ACCESS_DATA = {"username": username, "password": password}
    with requests.Session() as ss:
        ss.post(LOGIN_URL, data=ACCESS_DATA)
        RESULT = ss.get(SECURE_URL)
    return RESULT.text


print(Login_Dummy_web(data.username, data.password))

이제 (보안 영역에 오신 것을 환영합니다)라고 표시되며 이는 우리가 거기에 로그인했음을 증명합니다. ss라는 requests.Session() 변수를 사용하여 다른 URL 콘텐츠를 가져올 수 있습니다.

python 요청에 쿠키 사용 - 보안 페이지

data.py 파일의 코드는 다음과 같습니다.

username = "tomsmith"
password = "SuperSecretPassword!"

자세한 내용은 웹 사이트를 방문하십시오.

Salman Mehmood avatar Salman Mehmood avatar

Hello! I am Salman Bin Mehmood(Baum), a software developer and I help organizations, address complex problems. My expertise lies within back-end, data science and machine learning. I am a lifelong learner, currently working on metaverse, and enrolled in a course building an AI application with python. I love solving problems and developing bug-free software for people. I write content related to python and hot Technologies.

LinkedIn

관련 문장 - Python Requests