Django に curl でアクセスする

Django に curl でログインして別なページの内容を取得する必要があった

http://stackoverflow.com/questions/21306515/how-to-curl-an-authenticated-django-app

ここを参考にしたけど全く動かん・・・
試行錯誤した結果・・・

#!/bin/bash

SERVER=http://192.168.12.34:8000
LOGIN_URL=${SERVER}/login/
TARGET_URL=${SERVER}/secure/data
YOUR_USER='user'
YOUR_PASS='pass'

COOKIES=/tmp/cookies_${USER}.txt
CURL_BIN="curl -s -c ${COOKIES} -b ${COOKIES} -e ${LOGIN_URL}"

DJANGO_TOKEN_MIDDLE=$($CURL_BIN $LOGIN_URL | grep csrfmiddlewaretoken | sed -e "s/.*value='//" -e "s/'.*//")

${CURL_BIN} \
    --data "csrfmiddlewaretoken=${DJANGO_TOKEN_MIDDLE}&username=${YOUR_USER}&password=${YOUR_PASS}&next=/" \
    ${LOGIN_URL}

${CURL_BIN} \
    ${TARGET_URL}

rm $COOKIES

最終的に http://192.168.12.34:8000/secure/data の内容を取得できる。
Django 1.10.6 で確認済み。

コメントを残す

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください