войти на веб-страницу, используя токен подлинности с curl - PullRequest
2 голосов
/ 19 июня 2011

Я пытаюсь создать специальную программу (или скрипт) для входа на веб-страницу и затем загрузить файл.Страница входа имеет форму с 2 текстовыми полями (имя пользователя и пароль) и скрытое поле «authenticity_token».Я читал о токене подлинности.

Я пробовал собственный скрипт bash, используя curl, но он не работает.Кто-нибудь может, пожалуйста, взглянуть на мой код и сказать мне, что с ним не так?

#!/bin/bash
#Pulls the login page and strips out the auth token
authToken=`curl -L -c cookies.txt --silent 'http://xxx.xxxxx.xx' | grep authenticity_token | awk -F'value="' '{print $2;}' | awk -F'="' '{print $1;}'`

echo $authToken

# Posts all the pre-URI-encoded stuff and appends the URI-encoded auth token
curl -L -c cookies.txt -b cookies.txt --data-urlencode authenticity_token=$authToken  --data-urlencode 'username=my-username' --data-urlencode 'password=my-pass'  'http://xxx.xxxxx.xxx/login' 

# access the page i want
curl -b cookies 'http://xxx.xxxxx.xxx/page_i_want_to_access'

Когда я использую свой браузер для входа на веб-страницу, если регистрация прошла успешно, сервер перенаправляет меня на следующийстраницы, но когда я использую свой скрипт, сервер отвечает пакетом с заголовком «200 OK» вместо «302 редирект» (я использую wireshark для захвата пакетов).Поэтому я думаю, что аутентификация не работает.

Есть предложения, пожалуйста?

...