요청 라이브러리 를 사용하여 게시 요청과 함께 쿠키를 보내 려고하는데 문서를 기반으로 쿠키를 실제로 설정하는 방법을 잘 모르겠습니다. 스크립트는 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 스크립트에서 얻은 세션 쿠키를 수락하는 데 문제가 있습니다.