Обрабатывать файлы cookie с запросом Python - PullRequest
0 голосов
/ 26 февраля 2019

Я хочу скачать файл, который зависит от куки, используя модуль Python Request.Фактически, я хочу преобразовать следующий фрагмент, написанный на Bash, в его эквивалент Python.

#!/bin/bash

export UTS_USERNAME=
export UTS_PASSWORD=

export CAS_LOGIN_URL=https://utslogin.nlm.nih.gov/cas/login
export CAS_LOGOUT_URL=https://utslogin.nlm.nih.gov:443/cas/logout

export DOWNLOAD_URL=$1
export BROWSER_USER_AGENT="Firefox/18.0"
export COOKIE_FILE=uts-cookie.txt
export NLM_CACERT=uts.nlm.nih.gov.crt

if [ $# -eq 0 ]; then echo "Usage: curl-uts-downloads.sh  download_url "
                      echo "  e.g.   curl-uts-download.sh https://download.nlm.nih.gov/umls/kss/rxnorm/RxNorm_full_current.zip"
                      echo "         curl-uts-download.sh https://download.nlm.nih.gov/umls/kss/rxnorm/RxNorm_weekly_current.zip"
   exit
fi

# Remove old uts auth cookie if exists
if [ -f uts-cookie.txt ]; then
    rm uts-cookie.txt
fi

#echo "Go the UTS login page and get the UTS Auth cookie with CAS ticket.."

curl -L -A $BROWSER_USER_AGENT -H Connection:keep-alive -H Expect: -H Accept-Language:en-us --cacert $NLM_CACERT -k -b $COOKIE_FILE  -c $COOKIE_FILE -O $CAS_LOGIN_URL

nonce=`grep "execution" login | awk -F"\"" '{print $6}'`

curl -s -A $BROWSER_USER_AGENT -b $COOKIE_FILE -H Connection:keep-alive -H Expect: -H Accept-Language:en-us -H Referer:$CAS_LOGIN_URL -d "service=$DOWNLOAD_URL&username=$UTS_USERNAME&password=$UTS_PASSWORD&_eventId=submit&submit=LOGIN&execution=$nonce" --cacert $NLM_CACERT -k -c $COOKIE_FILE  -O $CAS_LOGIN_URL

echo 'Now get the download'
curl -L -A $BROWSER_USER_AGENT -H Connection:keep-alive -H Expect: -H Accept-Language:en-us --cacert $NLM_CACERT -k -b $COOKIE_FILE -O $DOWNLOAD_URL

#echo "Now log out.."
curl -s -L -A $BROWSER_USER_AGENT -H Connection:keep-alive -H Expect: -H Accept-Language:en-us --cacert $NLM_CACERT -k -b $COOKIE_FILE $CAS_LOGOUT_URL

#echo "cleaning up .."
if [ -f login ]; then
    rm login
    fi
if [ -f logout ]; then
    rm logout
fi
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...