cURL не может войти в базовый лагерь - PullRequest
0 голосов
/ 24 октября 2011

Я пытаюсь войти в basecamp, используя curl, и загружать прикрепленные файлы.

Но когда я скручиваюсь:

 curl -F "username=my-user&password=my-pwd" "https://my-domain.basecamphq.com/login"

Это не аутентификация. выход:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 TRANSITIONAL//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">

<head>
  <meta http-equiv="content-type" content="text/html;charset=UTF-8" />
  <meta name="robots" content="noindex, nofollow" />
  <meta name="csrf-param" content="authenticity_token"/>
<meta name="csrf-token" content="H5w&#47;7j9I5s38oQ9NdVgpkp&#47;QCxIZ3YW+qM&#47;+Hj&#47;ERr0="/>
  <title>My Domain Name.: Sign in</title>
  <script src="https://my-domain.basecamphq.com/rev_28dd107/sprockets.js?651551a0be3439fa32557210a7eea7d7" type="text/javascript"></script>
    <link href="https://my-domain.basecamphq.com/rev_28dd107/application.css" media="screen" rel="stylesheet" type="text/css" />
  <link href="https://my-domain.basecamphq.com/rev_28dd107/stylesheets/print/application.css" media="print" rel="stylesheet" type="text/css" />

  <!--[if IE]><link href="https://my-domain.basecamphq.com/rev_28dd107/stylesheets/ie/base.css" media="screen" rel="stylesheet" type="text/css" /><![endif]-->


    <meta name="queenbee-id" content="1152680" />

  <meta name="return-to-location" content="" />

  <script type="text/javascript">
    if (Login.recoverSessionToken()) {
      Login.clearPersistedTokens();
      window.location = "";
    }
  </script>

</head>

<body class="login">


  <div class="login">
        <h1>My Domain Name.</h1>







<div id="login_dialog" class="login_dialog">
  <form accept-charset="UTF-8" action="https://launchpad.37signals.com/authenticate" method="post"><div style="margin:0;padding:0;display:inline"><input name="utf8" type="hidden" value="&#x2713;" /><input name="authenticity_token" type="hidden" value="H5w/7j9I5s38oQ9NdVgpkp/QCxIZ3YW+qM/+Hj/ERr0=" /></div>
    <input id="product" name="product" type="hidden" value="basecamp" />
    <input id="subdomain" name="subdomain" type="hidden" value="my-domain" />

    <div id="user_name_login">
      <h2>Username</h2>
      <input autocapitalize="off" autocorrect="off" id="username" name="username" type="text" /><br/>

      <h2>Password</h2>
      <input id="password" name="password" type="password" /><br/>

        <label><input class="auto" id="remember_me" name="remember_me" type="checkbox" value="1" /> Remember me on this computer</label><br />

      <input class="button" name="commit" type="submit" value="Sign in" />

      <div class="extras">
        <ul>
          <li><strong>Help:</strong> <a href="/amnesia/forgot_password">I forgot my username or password</a></li>
        </ul>
      </div>
    </div>
</form></div>

<script type="text/javascript">
//<![CDATA[
$("username").focus()
//]]>
</script>

  </div>
</body>

</html>

Что здесь пошло не так? Было бы здорово, если бы кто-нибудь помог!

Заранее спасибо:)

1 Ответ

2 голосов
/ 24 октября 2011

Как видно из вывода, для входа на сайт basecamp требуется больше, чем просто имя пользователя и пароль.

Как минимум, требуется

  • authenticity_token=H5w/7j9I5s38oQ9NdVgpkp/QCxIZ3YW+qM/+Hj/ERr0=

Но это будет отличаться каждый раз, когда вы посещаете страницу.

Также кажется, что вам может понадобиться включить

  • product=basecamp
  • subdomain=mobme

Какова ваша цель с этим? Вы пытаетесь отсканировать сайт?

Предлагаю вам просто посмотреть API разработчика http://developer.37signals.com/

Или, если вам этого недостаточно, попробуйте Mechanize в Ruby или Perl . Это создает простого скриптового робота, который загружает страницу и взаимодействует с ней, поэтому вам не придется беспокоиться о подделке правильных параметров.

...