2014-12-17 19 views
0

У меня возникли проблемы с подключением к веб-сайту с помощью завитка с логином и, возможно, с файлами cookie.curl with login not working bash

Вот Auth HTML сайта:

<div id="authorize"> 

<form action="/" method="post" id="user-login" accept-charset="UTF-8"><div><div class="my-form-wrapper"> 
<div class="form-item form-type-textfield form-item-name"> 
<input type="text" id="edit-name" name="name" value="" size="60" maxlength="60" class="form-text required" /> <label class="option" for="edit-name">E-mail Address <span class="form-required" title="This field is required.">*</span></label> 

<div class="description">Please enter your E-mail Address.</div> 
</div> 
<div class="form-item form-type-password form-item-pass"> 
<input type="password" id="edit-pass" name="pass" size="60" maxlength="128" class="form-text required" /> <label class="option" for="edit-pass">Password <span class="form-required" title="This field is required.">*</span></label> 

<div class="description">Enter your Password.</div> 
</div> 
<input type="hidden" name="form_build_id" value="form-Jrv1EcWkN7AHVeYQoKEGjmtx5OSIcfcS7BbLp4vPB7k" /> 
<input type="hidden" name="form_id" value="user_login" /> 
<div class="login-forgot"><a href="/user/password">Forgot?</a></div><input type="hidden" name="dest_page" value="/home" /> 
<div class="form-actions form-wrapper" id="edit-actions"><input type="submit" id="edit-submit" name="op" value="Log in" class="form-submit" /></div></div></div></form>     
     <div class="register"><a href="/user/register">Register</a></div> 


</div> 

Я думал правильные данные для передачи будет что-то вроде этого:

(Для этого примера моя электронная почта = [email protected] и мой пароль = mypass!)

curl -d "name=myname%40email.com&pass=mypass%21&form_build_id=form-Jrv1EcWkN7AHVeYQoKEGjmtx5OSIcfcS7BbLp4vPB7k&form_id=user_login&dest_page=%2Fhome&op=Log+in" https://mywebsite.com 

Две проблемы, с которыми я сталкиваюсь.

1) Каждый раз, когда я curl сайт, он производит новый form_build_id

2) Я не могу сказать, если мой Логин работает, и я должен преобразовать @ в %40 и ! к %21 для моего имя пользователя и пароль?

+0

«Каждый раз, когда я скручиваю сайт, он создает новый form_build_id». Это должно помешать вам делать то, что вы пытаетесь сделать. :) –

+0

'form_build_id', скорее всего,' CSRF'/etc. поэтому вы, скорее всего, захотите получить и отразить это на сервере. Что касается остальных, я не знаю. Попробуйте в браузере и узнайте, что он отправляет? –

+0

@AlexHowansky Я действительно надеялся, что вокруг будет способ ...:/ –

ответ

0

Получить маркер и построить печенье, сохранить возвращаемый маркер.

token=$(curl -b $cookie_path -c $cookie_path --request GET "$site_url/services/session/token" -s) 

Аутентификация. POST до $ login_url с токеном в заголовке «X-CSRF-токен: $ token».

curl -H "X-CSRF-Token: $token" -b $cookie_path -c $cookie_path -d "username=$username&password=$password" "$login_url" -s 

Получить новый токен после аутентификации.

token=$(curl -b $cookie_path -c $cookie_path --request GET "$site_url/services/session/token" -s) 
0

Если вы хотите инструмент, который может выполнять синтаксический анализ/запрос строительство/повторную отправку в один вызов, вы можете использовать мой Xidel:

xidel https://mywebsite.com -f 'form((//form)[1], {"name": "myname", "pass": "mypass"})' --download -