[python] Python 요청 라이브러리를 사용하여 게시 요청에서 쿠키를 보내는 방법은 무엇입니까?

요청 라이브러리 를 사용하여 게시 요청과 함께 쿠키를 보내 려고하는데 문서를 기반으로 쿠키를 실제로 설정하는 방법을 잘 모르겠습니다. 스크립트는 Wikipedia에서 사용하기위한 것이며 전송해야하는 쿠키는 다음과 같은 형식입니다.

enwiki_session=17ab96bd8ffbe8ca58a78657a918558e; path=/; domain=.wikipedia.com; HttpOnly

그러나 requests설명서 빠른 시작에서는이를 유일한 예로 제공합니다.

cookies = dict(cookies_are='working')

이 라이브러리를 사용하여 위와 같은 쿠키를 어떻게 인코딩 할 수 있습니까? 파이썬의 표준 쿠키 라이브러리로 만든 다음 POST 요청과 함께 보내야합니까?



답변

Requests의 최신 릴리스는 간단한 사전에서 CookieJars를 빌드합니다.

import requests

cookies = {'enwiki_session': '17ab96bd8ffbe8ca58a78657a918558'}

r = requests.post('http://wikipedia.org', cookies=cookies)

즐겨 🙂


답변

이전 답변을 확장하기 위해 두 요청을 함께 연결하고 첫 번째 요청에서 두 번째 요청으로 반환 된 쿠키를 보내려면 (예 : 요청간에 세션을 유지 관리) 다음을 수행 할 수 있습니다.

import requests
r1 = requests.post('http://www.yourapp.com/login')
r2 = requests.post('http://www.yourapp.com/somepage',cookies=r1.cookies)


답변

쿠키를 브라우저에 전달하려면 다시 보낼 헤더에 추가해야합니다. wsgi를 사용하는 경우 :

import requests
...


def application(environ, start_response):
    cookie = {'enwiki_session': '17ab96bd8ffbe8ca58a78657a918558'}
    response_headers = [('Content-type', 'text/plain')]
    response_headers.append(('Set-Cookie',cookie))
...

    return [bytes(post_env),response_headers]

인증 사용자 / 암호를 Python 스크립트에 전달하고 쿠키를 브라우저에 전달하여 Python wsgi 스크립트가 실행중인 동일한 도메인에서 호스팅되는 Bugzilla 및 TWiki로 성공적으로 인증 할 수 있습니다. 이렇게하면 동일한 브라우저에서 Bugzilla 및 TWiki 페이지를 열고 인증 할 수 있습니다. SuiteCRM에서 동일한 작업을 수행하려고하는데 SuiteCRM이 성공적으로 인증되었지만 Python 스크립트에서 얻은 세션 쿠키를 수락하는 데 문제가 있습니다.


답변